IiBNZW51IFRyYW5zbGF0aW9uczoJSXRhbGlhbiAvIEl0YWxpYW5vCiIgTWFpbnRhaW5lcjoJCUFudG9uaW8gQ29sb21ibyA8YXpjMTAwQGdtYWlsLmNvbT4KIgkJCVZsYWQgU2FuZHJpbmkgPHZsYWQuZ2VudGx5QGdtYWlsLmNvbT4KIgkJCUx1Y2lhbm8gTW9udGFuYXJvIDxtaWtlbGltYUBjaXJ1bGxhLm5ldD4KIiBMYXN0IENoYW5nZToJMjAxMiBNYXkgMDEKCiIgUXVpdCB3aGVuIG1lbnUgdHJhbnNsYXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUuCmlmIGV4aXN0cygiZGlkX21lbnVfdHJhbnMiKQogIGZpbmlzaAplbmRpZgpsZXQgZGlkX21lbnVfdHJhbnMgPSAxCmxldCBzOmtlZXBjcG89ICZjcG8Kc2V0IGNwbyZ2aW0KCnNjcmlwdGVuY29kaW5nIGlzby04ODU5LTEKCiIgSGVscCAvIEFpdXRvCm1lbnV0ICZIZWxwCQkJJkFpdXRvCm1lbnV0ICZPdmVydmlldzxUYWI+PEYxPgkmUGFub3JhbWljYTxUYWI+PEYxPgptZW51dCAmVXNlclwgTWFudWFsCQlNYW51YWxlXCAmVXRlbnRlCm1lbnV0ICZIb3ctdG9cIGxpbmtzCUNvJk1lXC5cLlwuCiJtZW51dCAmR1VJCQkJJkdVSQptZW51dCAmQ3JlZGl0cwkJQ3ImRWRpdGkKbWVudXQgQ28mcHlpbmcJCUMmT3BpZQptZW51dCAmU3BvbnNvci9SZWdpc3RlciAmU3BvbnNvci9yZWdpc3RyYXppb25lCm1lbnV0IE8mcnBoYW5zCQlPJlJmYW5pCiJtZW51dCAmRmluZFwuXC5cLgkJJkNlcmNhXC5cLlwuCiJOT1RBOiBmYSBjb25mbGl0dG8gY29uICdjZXJjYScgbmVsIG1lbnUgJ21vZGlmaWNhJwptZW51dCAmVmVyc2lvbgkJJlZlcnNpb25lCm1lbnV0ICZBYm91dAkJJkludHJvCgpsZXQgZzptZW51dHJhbnNfaGVscF9kaWFsb2cgPSAiQmF0dGkgdW4gY29tYW5kbyBvIHVuYSBwYXJvbGEgcGVyIGNlcmNhcmUgYWl1dG86XG5cblByZW1ldHRpIGlfIHBlciBjb21hbmRpIGluIG1vZG8gSW5wdXQgKGFkLmVzLjogaV9DVFJMLVgpXG5QcmVtZXR0aSBjXyBwZXIgY29tYW5kaSBjaGUgZWRpdGFubyBsYSBsaW5lYS1jb21hbmRpIChhZC5lcy46IGNfPERlbD4pXG5QcmVtZXR0aSAnIHBlciB1biBub21lIGRpIG9wemlvbmUgKGFkLmVzLjogJ3NoaWZ0d2lkdGgnKSIKCiIgRmlsZSBtZW51CiJtZW51dCAmRmlsZQkJCQkmRmlsZQoiCm1lbnV0ICZPcGVuXC5cLlwuPFRhYj46ZQkJJkFwcmlcLlwuXC48VGFiPjplCm1lbnV0IFNwJmxpdC1PcGVuXC5cLlwuPFRhYj46c3AJQSZQcmlcIG51b3ZhXCBmaW5lc3RyYVwuXC5cLjxUYWI+OnNwCm1lbnV0IE9wZW5cIFRhYlwuXC5cLjxUYWI+OnRhYm5ldyBBcHJpXCBudW92YVwgJkxpbmd1ZXR0YVwuXC5cLjxUYWI+OnRhYm5ldwptZW51dCAmTmV3PFRhYj46ZW5ldwkJJk51b3ZvPFRhYj46ZW5ldwptZW51dCAmQ2xvc2U8VGFiPjpjbG9zZQkJJkNoaXVkaTxUYWI+OmNsb3NlCm1lbnV0ICZTYXZlPFRhYj46dwkJCSZTYWx2YTxUYWI+OncKbWVudXQgU2F2ZVwgJkFzXC5cLlwuPFRhYj46c2F2CVNhbHZhXCAmQ29uXCBub21lXC5cLlwuPFRhYj46c2F2CgppZiBoYXMoImRpZmYiKQogICAgbWVudXQgU3BsaXRcICZEaWZmXCB3aXRoXC5cLlwuCUZpbmVzdHJhXCAmRGlmZmVyZW56YVwgY29uXC5cLlwuCiAgICBtZW51dCBTcGxpdFwgUGF0Y2hlZFwgJkJ5XC5cLlwuCUZpbmVzdHJhXCBwYXRjJkhcIGRhXC5cLlwuCmVuZGlmCgptZW51dCAmUHJpbnQJCQlTJnRhbXBhCm1lbnV0IFNhJnZlLUV4aXQ8VGFiPjp3cWEJCVNhJkx2YVwgZWRcIGVzY2k8VGFiPjp3cWEKbWVudXQgRSZ4aXQ8VGFiPjpxYQkJCSZFc2NpPFRhYj46cWEKCiIgRWRpdCAvIE1vZGlmaWNhCgptZW51dCAmRWRpdAkJCQkmTW9kaWZpY2EKbWVudXQgJlVuZG88VGFiPnUJCQkmQW5udWxsYTxUYWI+dQptZW51dCAmUmVkbzxUYWI+XlIJCQkmUmlwcmlzdGluYTxUYWI+XlIKbWVudXQgUmVwJmVhdDxUYWI+XC4JCVJpJlBldGk8VGFiPlwuCm1lbnV0IEN1JnQ8VGFiPiIreAkJCSZUYWdsaWE8VGFiPiIreAptZW51dCAmQ29weTxUYWI+Iit5CQkJJkNvcGlhPFRhYj4iK3kKbWVudXQgJlBhc3RlPFRhYj4iK2dQCQkmSW5jb2xsYTxUYWI+IitnUAptZW51dCBQdXRcICZCZWZvcmU8VGFiPltwCQkmTWV0dGlcIGRhdmFudGk8VGFiPltwCm1lbnV0IFB1dFwgJkFmdGVyPFRhYj5dcAkJTSZFdHRpXCBkaWV0cm88VGFiPl1wCm1lbnV0ICZEZWxldGU8VGFiPngJCQlDYW5jZSZMbGE8VGFiPngKbWVudXQgJlNlbGVjdFwgYWxsPFRhYj5nZ1ZHCQlTZWxlemlvbmFcICZUdXR0bzxUYWI+Z2dWRwptZW51dCAmU2VsZWN0XCBBbGw8VGFiPmdnVkcJCVNlbGV6aW9uYVwgJlR1dHRvPFRhYj5nZ1ZHCm1lbnV0ICZGaW5kXC5cLlwuCQkJJkNlcmNhXC5cLlwuCm1lbnV0IEZpbmRcIGFuZFwgUmVwJmxhY2VcLlwuXC4JJlNvc3RpdHVpc2NpXC5cLlwuCm1lbnV0IFNldHRpbmdzXCAmV2luZG93CQkmRmluZXN0cmFcIGltcG9zdGF6aW9uaQptZW51dCBTdGFydHVwXCAmU2V0dGluZ3MJSW1wb3N0YXppb25pXCBkaVwgJkF2dmlvCm1lbnV0ICZHbG9iYWxcIFNldHRpbmdzCQlJbXBvc3RhemlvbmlcICZHbG9iYWxpCm1lbnV0IFF1ZXN0aW9uCQkJRG9tYW5kYQoKIiBFZGl0IC8gTW9kaWZpY2EgSW1wb3N0YXppb25pIEdsb2JhbGkKbWVudXQgJkdsb2JhbFwgU2V0dGluZ3MJSW1wb3N0YXppb25pXCAmR2xvYmFsaQptZW51dCBUb2dnbGVcIFBhdHRlcm5cICZIaWdobGlnaHQ8VGFiPjpzZXRcIGhscyEJJkV2aWRlbnppYVwgcmljZXJjaGVcIFPsL05vPFRhYj46c2V0XCBobHMhCm1lbnV0IFRvZ2dsZVwgJklnbm9yZS1jYXNlPFRhYj46c2V0XCBpYyEJCSZJZ25vcmFcIG1haXVzY1wuLW1pbnVzY1wuXCBT7C9ObzxUYWI+OnNldFwgaWMhCm1lbnV0IFRvZ2dsZVwgJlNob3dtYXRjaDxUYWI+OnNldFwgc20hCUluZGljYVwgJkNvcnJpc3BvbmRlbnRlXCBT7C9ObzxUYWI+OnNldFwgc20hCgptZW51dCAmQ29udGV4dFwgbGluZXMJJkxpbmVlXCBkaVwgY29udGVzdG8KbWVudXQgJlZpcnR1YWxcIEVkaXQJCSZFZGl0XCB2aXJ0dWFsZQoKbWVudXQgTmV2ZXIJCU1haQptZW51dCBCbG9ja1wgU2VsZWN0aW9uCQlTZWxlemlvbmVcIGJsb2NjbwptZW51dCBJbnNlcnRcIG1vZGUJTW9kb1wgaW5zZXJ0Cm1lbnV0IEJsb2NrXCBhbmRcIEluc2VydAlTZWxlemlvbmVcIGJsb2NjbytpbnNlcmltZW50bwptZW51dCBBbHdheXMJCVNlbXByZQoKbWVudXQgVG9nZ2xlXCBJbnNlcnRcICZNb2RlPFRhYj46c2V0XCBpbSEJJk1vZG9cIGluc2VydFwgU+wvTm88VGFiPjpzZXRcIGltIQptZW51dCBUb2dnbGVcIFZpXCBDJm9tcGF0aWJsZTxUYWI+OnNldFwgY3AhCUMmT21wYXRpYmlsZVwgVklcIFPsL05vPFRhYj46c2V0XCBjcCEKbWVudXQgU2VhcmNoXCAmUGF0aFwuXC5cLgkmUGVyY29yc29cIGRpXCByaWNlcmNhXC5cLlwuCm1lbnV0IFRhJmdcIEZpbGVzXC5cLlwuCQlGaWxlXCB0YSZHXC5cLlwuCiIKIiBPcHppb25pIEdVSQptZW51dCBUb2dnbGVcICZUb29sYmFyCUJhcnJhXCBzJlRydW1lbnRpXCBT7C9ObwptZW51dCBUb2dnbGVcICZCb3R0b21cIFNjcm9sbGJhcglCYXJyYVwgc2NvcnJpbWVudG9cIGluXCAmRm9uZG9cIFPsL05vCm1lbnV0IFRvZ2dsZVwgJkxlZnRcIFNjcm9sbGJhcglCYXJyYVwgc2NvcnJpbWVudG9cIGFcICZTaW5pc3RyYVwgU+wvTm8KbWVudXQgVG9nZ2xlXCAmUmlnaHRcIFNjcm9sbGJhcglCYXJyYVwgc2NvcnJpbWVudG9cIGFcICZEZXN0cmFcIFPsL05vCgpsZXQgZzptZW51dHJhbnNfcGF0aF9kaWFsb2cgPSAiQmF0dGkgcGVyY29yc28gZGkgcmljZXJjYSBwZXIgaSBmaWxlLlxuU2VwYXJhIGZyYSBsb3JvIGkgbm9taSBkaSBkaXJlY3RvcnkgY29uIHVuYSB2aXJnb2xhLiIKbGV0IGc6bWVudXRyYW5zX3RhZ3NfZGlhbG9nID0gIkJhdHRpIG5vbWUgZGVpIGZpbGUgZGkgdGFnLlxuU2VwYXJhIGZyYSBsb3JvIGkgbm9taSBkaSBkaXJlY3RvcnkgY29uIHVuYSB2aXJnb2xhLiIKCiIgRWRpdCAvIEltcG9zdGF6aW9uaSBGaWxlCm1lbnV0IEYmaWxlXCBTZXR0aW5ncwkmSW1wb3N0YXppb25pXCBmaWxlCgoiIEJvb2xlYW4gb3B0aW9ucwptZW51dCBUb2dnbGVcIExpbmVcICZOdW1iZXJpbmc8VGFiPjpzZXRcIG51IQkmTnVtZXJhemlvbmVcIFwgU+wvTm88VGFiPjpzZXRcIG51IQptZW51dCBUb2dnbGVcIHJlbGF0aSZ2ZVwgTGluZVwgTnVtYmVyaW5nPFRhYj46c2V0XCBybnUhCU51bWVyYXppb25lXCByZWxhdGkmVmFcIFPsL05vPFRhYj46c2V0XCBybnUhCm1lbnV0IFRvZ2dsZVwgJkxpc3RcIE1vZGU8VGFiPjpzZXRcIGxpc3QhCQlNb2RvXCAmTGlzdFwgU+wvTm88VGFiPjpzZXRcIGxpc3QhCm1lbnV0IFRvZ2dsZVwgTGluZVwgJldyYXA8VGFiPjpzZXRcIHdyYXAhCQlMaW5lZVwgJkNvbnRpbnVhdGVcIFPsL05vPFRhYj46c2V0XCB3cmFwIQptZW51dCBUb2dnbGVcIFcmcmFwXCBhdFwgd29yZDxUYWI+OnNldFwgbGJyIQlBXCBjYXBvXCBhbGxhXCAmUGFyb2xhXCBT7C9ObzxUYWI+OnNldFwgbGJyIQptZW51dCBUb2dnbGVcICZleHBhbmQtdGFiPFRhYj46c2V0XCBldCEJCSZFc3BhbmRpXCB0YWJ1bGF6aW9uZVwgU+wvTm88VGFiPjpzZXRcIGV0IQptZW51dCBUb2dnbGVcICZhdXRvLWluZGVudDxUYWI+OnNldFwgYWkhCUluZGVudGF6aW9uZVwgJkF1dG9tYXRpY2FcIFPsL05vPFRhYj46c2V0IGFpIQptZW51dCBUb2dnbGVcICZDLWluZGVudGluZzxUYWI+OnNldFwgY2luIQlJbmRlbnRhemlvbmVcIHN0aWxlXCAmQ1wgU+wvTm88VGFiPjpzZXQgY2luIQoKIiBhbHRyZSBvcHppb25pCm1lbnV0ICZTaGlmdHdpZHRoCQkJJlNwYXppXCByaWVudHJhbnphCm1lbnV0IFNvZnRcICZUYWJzdG9wCQkmVGFidWxhemlvbmVcIHNvZnR3YXJlCm1lbnV0IFRlJnh0XCBXaWR0aFwuXC5cLgkJTHVuZ2hlJlp6YVwgcmlnYVwuXC5cLgptZW51dCAmRmlsZVwgRm9ybWF0XC5cLlwuCUZvcm1hdG9cICZGaWxlXC5cLlwuCgpsZXQgZzptZW51dHJhbnNfdGV4dHdpZHRoX2RpYWxvZyA9ICJCYXR0aSBudW92YSBsdW5naGV6emEgbGluZWEgKDAgcGVyIGluaWJpcmUgbGEgZm9ybWF0dGF6aW9uZSk6ICIKCmxldCBnOm1lbnV0cmFuc19maWxlZm9ybWF0X2RpYWxvZyA9ICJTY2VnbGkgZm9ybWF0byBjb24gY3VpIHNjcml2ZXJlIGlsIGZpbGUiCgptZW51dCBDJm9sb3JcIFNjaGVtZQkJU2NoZW1hXCBjJk9sb3JpCgptZW51dCBkZWZhdWx0CQlub3JtYWxlCm1lbnV0IERFRkFVTFQJCU5PUk1BTEUKbWVudXQgZXZlbmluZwkJbm90dHVybm8KbWVudXQgRVZFTklORwkJTk9UVFVSTk8KbWVudXQgbW9ybmluZwkJZGl1cm5vCm1lbnV0IE1PUk5JTkcJCURJVVJOTwptZW51dCBzaGluZQkJYnJpbGxhbnRlCm1lbnV0IFNISU5FCQlCUklMTEFOVEUKbWVudXQgcGVhY2hwdWZmCQlwZXNjYQptZW51dCBQRUFDSFBVRgkJUEVTQ0EKCm1lbnV0ICZLZXltYXAJCQkJJk1hcHBhXCB0YXN0aWVyYQoKbWVudXQgTm9uZQkJbmVzc3VuYQptZW51dCBhY2NlbnRzCQlhY2NlbnRpCm1lbnV0IEFDQ0VOVFMJCUFDQ0VOVEkKbWVudXQgaGVicmV3CQllYnJhaWNvCm1lbnV0IEhFQlJFVwkJRUJSQUlDTwptZW51dCBoZWJyZXdfaXNvLTg4NTktOCBlYnJhaWNvX2lzby04ODU5LTgKbWVudXQgaGVicmV3X2NwMTI1NQllYnJhaWNvX2NwMTI1NQptZW51dCBoZWJyZXdfdXRmLTgJZWJyYWljb191dGYtOAptZW51dCBoZWJyZXdwX2lzby04ODU5LTggZWJyYWljb19wX2lzby04ODU5LTgKbWVudXQgSEVCUkVXLQkJRUJSQUlDTysKbWVudXQgaGVicmV3cAkJRUJSQUlDT1AKbWVudXQgSEVCUkVXUAkJRUJSQUlDT1AKbWVudXQgcnVzc2lhbi1qY3VrZW4JY2lyaWxsaWNvLWpjdWtlbgptZW51dCBydXNzaWFuLWpjdWtlbndpbgljaXJpbGxpY28tamN1a2VuLXdpbgptZW51dCBSVVNTSUFOCQlDSVJJTExJQ08KbWVudXQgUlVTU0lBTi0JCUNJUklMTElDTy0KCm1lbnV0IFNlbGVjdFwgRm8mbnRcLlwuXC4JCVNjZWdsaVwgJkZvbnRcLlwuXC4KCiIgTWVudSBzdHJ1bWVudGkgcHJvZ3JhbW1hemlvbmUKbWVudXQgJlRvb2xzCQkJJlN0cnVtZW50aQoKbWVudXQgJkp1bXBcIHRvXCB0aGlzXCB0YWc8VGFiPmdeXQkmVmFpXCBhXCBxdWVzdGFcIHRhZzxUYWI+Z15dCm1lbnV0IEp1bXBcICZiYWNrPFRhYj5eVAkJVG9ybmFcICZJbmRpZXRybzxUYWI+XlQKbWVudXQgQnVpbGRcICZUYWdzXCBGaWxlCQlDb3N0cnVpc2NpXCBmaWxlXCAmVGFnc1wKCiIgTWVudSBvcnRvZ3JhZmlhIC8gU3BlbGxpbmcKbWVudXQgJlNwZWxsaW5nCQkJJk9ydG9ncmFmaWEKCm1lbnV0ICZTcGVsbFwgQ2hlY2tcIE9uCQkJQXR0aXZhXCAmQ29udHJvbGxvXCBvcnRvZ3JhZmljbwptZW51dCBTcGVsbFwgQ2hlY2tcICZPZmYJCSZEaXNhdHRpdmFcIGNvbnRyb2xsb1wgb3J0b2dyYWZpY28KbWVudXQgVG9cICZOZXh0XCBlcnJvcjxUYWI+XXMJCUVycm9yZVwgJlNlZ3VlbnRlPHRhYj5dcwptZW51dCBUb1wgJlByZXZpb3VzXCBlcnJvcjxUYWI+W3MJRXJyb3JlXCAmUHJlY2VkZW50ZTx0YWI+W3MKbWVudXQgU3VnZ2VzdFwgJkNvcnJlY3Rpb25zPFRhYj56PQkmU3VnZ2VyaW1lbnRpPFRhYj56PQptZW51dCAmUmVwZWF0XCBjb3JyZWN0aW9uPFRhYj46c3BlbGxyZXBhbGwJJlJpcGV0aVwgY29ycmV6aW9uZTxUYWI+OnNwZWxscmVwYWxsCm1lbnV0IFNldFwgbGFuZ3VhZ2VcIHRvXCAiZW4iCQlJbXBvc3RhXCBsaW5ndWFcIGFcICJlbiIKbWVudXQgU2V0XCBsYW5ndWFnZVwgdG9cICJlbl9hdSIJSW1wb3N0YVwgbGluZ3VhXCBhXCAiZW5fYXUiCm1lbnV0IFNldFwgbGFuZ3VhZ2VcIHRvXCAiZW5fY2EiCUltcG9zdGFcIGxpbmd1YVwgYVwgImVuX2NhIgptZW51dCBTZXRcIGxhbmd1YWdlXCB0b1wgImVuX2diIglJbXBvc3RhXCBsaW5ndWFcIGFcICJlbl9nYiIKbWVudXQgU2V0XCBsYW5ndWFnZVwgdG9cICJlbl9ueiIJSW1wb3N0YVwgbGluZ3VhXCBhXCAiZW5fbnoiCm1lbnV0IFNldFwgbGFuZ3VhZ2VcIHRvXCAiZW5fdXMiCUltcG9zdGFcIGxpbmd1YVwgYVwgImVuX3VzIgptZW51dCBTZXRcIGxhbmd1YWdlXCB0b1wgIml0IgkJSW1wb3N0YVwgbGluZ3VhXCBhXCAiaXQiCm1lbnV0IFNldFwgbGFuZ3VhZ2VcIHRvXCAiaXRfaXQiCUltcG9zdGFcIGxpbmd1YVwgYVwgIml0X2l0IgptZW51dCBTZXRcIGxhbmd1YWdlXCB0b1wgIml0X2NoIglJbXBvc3RhXCBsaW5ndWFcIGFcICJpdF9jaCIKbWVudXQgJkZpbmRcIE1vcmVcIExhbmd1YWdlcwkJJlRyb3ZhXCBhbHRyZVwgbGluZ3VlCgoiIE1lbnUgcGllZ2F0dXJlIC8gRm9sZAppZiBoYXMoImZvbGRpbmciKQogIG1lbnV0ICZGb2xkaW5nCQkJCQkmUGllZ2F0dXJlCiAgIiBhcHJpIGUgY2hpdWRpIHBpZWdhdHVyZQogIG1lbnV0ICZFbmFibGUvRGlzYWJsZVwgZm9sZHM8VGFiPnppCQlQaSZlZ2F0dXJlXCBT7C9ObzxUYWI+emkKICBtZW51dCAmVmlld1wgQ3Vyc29yXCBMaW5lPFRhYj56dgkJCSZWZWRpXCBsaW5lYVwgY29sXCBDdXJzb3JlPFRhYj56dgogIG1lbnV0IFZpZSZ3XCBDdXJzb3JcIExpbmVcIG9ubHk8VGFiPnpNengJCVZlZGlcICZTb2xvXCBsaW5lYVwgY29sXCBDdXJzb3JlPFRhYj56TXp4CiAgbWVudXQgQyZsb3NlXCBtb3JlXCBmb2xkczxUYWI+em0JCQlDJkhpdWRpXCBwaflcIHBpZWdhdHVyZTxUYWI+em0KICBtZW51dCAmQ2xvc2VcIGFsbFwgZm9sZHM8VGFiPnpNCQkJJkNoaXVkaVwgdHV0dGVcIGxlXCBwaWVnYXR1cmU8VGFiPnpNCiAgbWVudXQgTyZwZW5cIG1vcmVcIGZvbGRzPFRhYj56cgkJCUEmUHJpXCBwaflcIHBpZWdhdHVyZTxUYWI+enIKICBtZW51dCAmT3BlblwgYWxsXCBmb2xkczxUYWI+elIJCQkmQXByaVwgdHV0dGVcIGxlXCBwaWVnYXR1cmU8VGFiPnpSCiAgIiBtZXRvZG8gcGllZ2F0dXJhCiAgbWVudXQgRm9sZFwgTWV0JmhvZAkJCQlNZXRvJkRvXCBwaWVnYXR1cmEKICBtZW51dCBNJmFudWFsCQkJCQkmTWFudWFsZQogIG1lbnV0IEkmbmRlbnQJCQkJCSZOaWRpZmljYXppb25lCiAgbWVudXQgRSZ4cHJlc3Npb24JCQkJCSZFc3ByZXNzaW9uZVwgUmVnXC4KICBtZW51dCBTJnludGF4CQkJCQkmU2ludGFzc2kKICBtZW51dCAmRGlmZgkJCQkJJkRpZmZlcmVuemEKICBtZW51dCBNYSZya2VyCQkJCQlNYXImQ2F0dXJhCiAgIiBjcmVhIGUgY2FuY2VsbGEgcGllZ2F0dXJlCiAgbWVudXQgQ3JlYXRlXCAmRm9sZDxUYWI+emYJCQlDcmVhXCAmUGllZ2F0dXJhPFRhYj56ZgogIG1lbnV0ICZEZWxldGVcIEZvbGQ8VGFiPnpkCQkJJkxldmFcIHBpZWdhdHVyYTxUYWI+emQKICBtZW51dCBEZWxldGVcICZBbGxcIEZvbGRzPFRhYj56RAkJCUxldmFcICZUdXR0ZVwgbGVcIHBpZWdhdHVyZTxUYWI+ekQKICAiIG1vdmltZW50aSBhbGwnaW50ZXJubyBkZWxsZSBwaWVnYXR1cmUKICBtZW51dCBGb2xkXCBjb2wmdW1uXCB3aWR0aAkJCUxhcmdoZXp6YVwgcGllZ2F0JlVyZVwgaW5cIGNvbG9ubmUKZW5kaWYgICIgaGFzIGZvbGRpbmcKCmlmIGhhcygiZGlmZiIpCiAgbWVudXQgJkRpZmYJCQkJCSZEaWZmZXJlbnphCiAgIgogIG1lbnV0ICZVcGRhdGUJCQkJCSZBZ2dpb3JuYQogIG1lbnV0ICZHZXRcIEJsb2NrCQkJCQkmSW1wb3J0YVwgZGlmZmVyZW56ZQogIG1lbnV0ICZQdXRcIEJsb2NrCQkJCQkmRXNwb3J0YVwgZGlmZmVyZW56ZQplbmRpZiAgIiBoYXMgZGlmZgoKbWVudXQgJk1ha2U8VGFiPjptYWtlCQlFc2VndWlcICZNYWtlPFRhYj46bWFrZQoKbWVudXQgJkxpc3RcIEVycm9yczxUYWI+OmNsCQlMaXN0YVwgJkVycm9yaTxUYWI+OmNsCm1lbnV0IEwmaXN0XCBNZXNzYWdlczxUYWI+OmNsIQlMaXN0YVwgJk1lc3NhZ2dpPFRhYj46Y2whCm1lbnV0ICZOZXh0XCBFcnJvcjxUYWI+OmNuCQlFcnJvcmVcIHMmVWNjZXNzaXZvPFRhYj46Y24KbWVudXQgJlByZXZpb3VzXCBFcnJvcjxUYWI+OmNwCUVycm9yZVwgJlByZWNlZGVudGU8VGFiPjpjcAptZW51dCAmT2xkZXJcIExpc3Q8VGFiPjpjb2xkCUxpc3RhXCBtZW4mT1wgcmVjZW50ZTxUYWI+OmNvbGQKbWVudXQgTiZld2VyXCBMaXN0PFRhYj46Y25ldwlMaXN0YVwgcGn5XCByZWNlJk50ZTxUYWI+OmNuZXcKCm1lbnV0IEVycm9yXCAmV2luZG93CQkmRmluZXN0cmFcIGVycm9yaQoKbWVudXQgJlVwZGF0ZTxUYWI+OmN3aW4JCUEmR2dpb3JuYTxUYWI+OmN3aW4KbWVudXQgJk9wZW48VGFiPjpjb3BlbgkJJkFwcmk8VGFiPjpjb3BlbgptZW51dCAmQ2xvc2U8VGFiPjpjY2xvc2UJJkNoaXVkaTxUYWI+OmNjbG9zZQoKbWVudXQgJkNvbnZlcnRcIHRvXCBIRVg8VGFiPjolIXh4ZAkmQ29udmVydGlcIGFcIGVzYWRlY2ltYWxlPFRhYj46JSF4eGQKbWVudXQgQ29udmUmcnRcIGJhY2s8VGFiPjolIXh4ZFwgLXIJQ29udmUmcnRpXCBkYVwgZXNhZGVjaW1hbGU8VGFiPjolIXh4ZFwgLXIKCm1lbnV0IFNlJlRcIENvbXBpbGVyCQlJbXBvJlN0YVwgQ29tcGlsYXRvcmUKCiIgQnVmZmVycyAvIEJ1ZmZlcgptZW51dCAmQnVmZmVycwkJJkJ1ZmZlcgoKbWVudXQgJlJlZnJlc2hcIG1lbnUJCQkJQSZnZ2lvcm5hXCBtZW51Cm1lbnV0ICZEZWxldGUJCSZFbGltaW5hCm1lbnV0ICZBbHRlcm5hdGUJCSZBbHRlcm5hdG8KbWVudXQgJk5leHQJCQkmU3VjY2Vzc2l2bwptZW51dCAmUHJldmlvdXMJCSZQcmVjZWRlbnRlCm1lbnV0IFtOb1wgRmlsZV0JCVtOZXNzdW5cIEZpbGVdCiIgU3ludGF4IC8gU2ludGFzc2kKbWVudXQgJlN5bnRheAkJJlNpbnRhc3NpCm1lbnV0ICZTaG93XCBmaWxldHlwZXNcIGluXCBtZW51CU1vJlN0cmFcIHRpcGlcIGRpXCBmaWxlXCBuZWxcIG1lbnUKbWVudXQgU2V0XCAnJnN5bnRheCdcIG9ubHkJJlNcIEF0dGl2YVwgc29sb1wgXCAnc3ludGF4JwptZW51dCBTZXRcICcmZmlsZXR5cGUnXCB0b28JJkZcIEF0dGl2YVwgYW5jaGVcICdmaWxldHlwZScKbWVudXQgJk9mZgkJCSZEaXNhdHRpdmEKbWVudXQgJk1hbnVhbAkJJk1hbnVhbGUKbWVudXQgQSZ1dG9tYXRpYwkJQSZVdG9tYXRpY28KbWVudXQgb24vb2ZmXCBmb3JcICZUaGlzXCBmaWxlCUF0dGl2YVwgU+wvTm9cIHN1XCBxdWVzJlRvXCBmaWxlCm1lbnV0IENvJmxvclwgdGVzdAkJVGVzdFwgJkNvbG9yaQptZW51dCAmSGlnaGxpZ2h0XCB0ZXN0CVRlc3RcICZFdmlkZW56aWFtZW50bwptZW51dCAmQ29udmVydFwgdG9cIEhUTUwJQ29udmVydGlcIGFkXCAmSFRNTAoKbGV0IGc6bWVudXRyYW5zX25vX2ZpbGUgPSAiW1NlbnphIG5vbWVdIgoKIiBXaW5kb3cgLyBGaW5lc3RyYQptZW51dCAmV2luZG93CQkJJkZpbmVzdHJhCgptZW51dCAmTmV3PFRhYj5eV24JCQkmTnVvdmE8VGFiPl5XbgptZW51dCBTJnBsaXQ8VGFiPl5XcwkJJkRpdmlkaVwgbG9cIHNjaGVybW88VGFiPl5XcwptZW51dCBTcCZsaXRcIFRvXCAjPFRhYj5eV15eCUQmSXZpZGlcIHZlcnNvXCAjPFRhYj5eV15eCm1lbnV0IFNwbGl0XCAmVmVydGljYWxseTxUYWI+Xld2CURpJlZpZGlcIHZlcnRpY2FsbWVudGU8VGFiPl5XdgptZW51dCBTcGxpdFwgRmlsZVwgRSZ4cGxvcmVyCUFnZ2l1bmdpXCBmaW5lc3RyYVwgZSZYcGxvcmVyCgptZW51dCAmQ2xvc2U8VGFiPl5XYwkJJkNoaXVkaTxUYWI+XldjCm1lbnV0IENsb3NlXCAmT3RoZXIocyk8VGFiPl5XbwlDJkhpdWRpXCBhbHRyYShlKTxUYWI+XldvCgptZW51dCBNb3ZlXCAmVG8JCQkmTXVvdmlcIHZlcnNvCgptZW51dCAmVG9wPFRhYj5eV0sJCQkmQ2ltYTxUYWI+XldLCm1lbnV0ICZCb3R0b208VGFiPl5XSgkJJkZvbmRvPFRhYj5eV0oKbWVudXQgJkxlZnRcIHNpZGU8VGFiPl5XSAkJTGF0b1wgJlNpbmlzdHJvPFRhYj5eV0gKbWVudXQgJlJpZ2h0XCBzaWRlPFRhYj5eV0wJCUxhdG9cICZEZXN0cm88VGFiPl5XTAptZW51dCBSb3RhdGVcICZVcDxUYWI+XldSCQlSdW90YVwgdmVyc29cIGwnJkFsdG88VGFiPl5XUgptZW51dCBSb3RhdGVcICZEb3duPFRhYj5eV3IJCVJ1b3RhXCB2ZXJzb1wgaWxcICZCYXNzbzxUYWI+XldyCgptZW51dCAmRXF1YWxcIFNpemU8VGFiPl5XPQkJJlVndWFsZVwgYW1waWV6emE8VGFiPl5XPQptZW51dCAmTWF4XCBIZWlnaHQ8VGFiPl5XXwkJJkFsdGV6emFcIG1hc3NpbWE8VGFiPl5XXwptZW51dCBNJmluXCBIZWlnaHQ8VGFiPl5XMV8JCUEmTHRlenphXCBtaW5pbWE8VGFiPl5XMV8KbWVudXQgTWF4XCAmV2lkdGg8VGFiPl5XXHwJCUxhcmdoZXp6YVwgbWFzc2ltYTxUYWI+XldcfAptZW51dCBNaW5cIFdpZHQmaDxUYWI+XlcxXHwJCUxhcmdoZXp6YVwgbWluaW1hPFRhYj5eVzFcfAoKIiBUaGUgcG9wdXAgbWVudQptZW51dCAmVW5kbwkJCSZBbm51bGxhCm1lbnV0IEN1JnQJCQkmVGFnbGlhCm1lbnV0ICZDb3B5CQkJJkNvcGlhCm1lbnV0ICZQYXN0ZQkJJkluY29sbGEKbWVudXQgJkRlbGV0ZQkJJkVsaW1pbmEKCm1lbnV0IFNlbGVjdFwgQmxvY2t3aXNlCVNlbGV6aW9uYVwgaW5cIGJsb2NjbwptZW51dCBTZWxlY3RcICZXb3JkCQlTZWxlemlvbmFcICZQYXJvbGEKbWVudXQgU2VsZWN0XCAmTGluZQkJU2VsZXppb25hXCAmTGluZWEKbWVudXQgU2VsZWN0XCAmQmxvY2sJU2VsZXppb25hXCAmQmxvY2NvCm1lbnV0IFNlbGVjdFwgJkFsbAkJU2VsZXppb25hXCB0JlV0dG8KCiIgVGhlIEdVSSBUb29sYmFyIC8gQmFycmEgU3RydW1lbnRpCmlmIGhhcygidG9vbGJhciIpCiAgaWYgZXhpc3RzKCIqRG9fdG9vbGJhcl90bWVudSIpCiAgICBkZWxmdW4gRG9fdG9vbGJhcl90bWVudQogIGVuZGlmCiAgZnVuIERvX3Rvb2xiYXJfdG1lbnUoKQogICAgdG1lbnUgVG9vbEJhci5PcGVuCQlBcHJpCiAgICB0bWVudSBUb29sQmFyLlNhdmUJCVNhbHZhCiAgICB0bWVudSBUb29sQmFyLlNhdmVBbGwJU2FsdmEgVHV0dG8KICAgIHRtZW51IFRvb2xCYXIuUHJpbnQJCVN0YW1wYQogICAgdG1lbnUgVG9vbEJhci5VbmRvCQlBbm51bGxhCiAgICB0bWVudSBUb29sQmFyLlJlZG8JCVJpcHJpc3RpbmEKICAgIHRtZW51IFRvb2xCYXIuQ3V0CQlUYWdsaWEKICAgIHRtZW51IFRvb2xCYXIuQ29weQkJQ29waWEKICAgIHRtZW51IFRvb2xCYXIuUGFzdGUJCUluY29sbGEKCiAgICBpZiAhaGFzKCJndWlfYXRoZW5hIikKICAgICAgdG1lbnUgVG9vbEJhci5GaW5kCUNlcmNhCiAgICAgIHRtZW51IFRvb2xCYXIuRmluZE5leHQJQ2VyY2EgU3VjY2Vzc2l2bwogICAgICB0bWVudSBUb29sQmFyLkZpbmRQcmV2CUNlcmNhIFByZWNlZGVudGUKICAgICAgdG1lbnUgVG9vbEJhci5SZXBsYWNlCVNvc3RpdHVpc2NpCiAgICBlbmRpZgoKaWYgMAkiIGRpc2FibGVkOyBUaGVzZSBhcmUgaW4gdGhlIFdpbmRvd3MgbWVudQogICAgICB0bWVudSBUb29sQmFyLk5ldwkJTnVvdmEgZmluZXN0cmEKICAgICAgdG1lbnUgVG9vbEJhci5XaW5TcGxpdAlEaXZpZGkgZmluZXN0cmEKICAgICAgdG1lbnUgVG9vbEJhci5XaW5NYXgJTWFzc2ltYSBhbXBpZXp6YQogICAgICB0bWVudSBUb29sQmFyLldpbk1pbglNaW5pbWEgYW1waWV6emEKICAgICAgdG1lbnUgVG9vbEJhci5XaW5WU3BsaXQJRGl2aWRpIHZlcnRpY2FsbWVudGUKICAgICAgdG1lbnUgVG9vbEJhci5XaW5NYXhXaWR0aAlNYXNzaW1hIGxhcmdoZXp6YQogICAgICB0bWVudSBUb29sQmFyLldpbk1pbldpZHRoCU1pbmltYSBsYXJnaGV6emEKICAgICAgdG1lbnUgVG9vbEJhci5XaW5DbG9zZQlDaGl1ZGkgZmluZXN0cmEKZW5kaWYKCiAgICB0bWVudSBUb29sQmFyLkxvYWRTZXNuCUNhcmljYSBTZXNzaW9uZQogICAgdG1lbnUgVG9vbEJhci5TYXZlU2VzbglTYWx2YSBTZXNzaW9uZQogICAgdG1lbnUgVG9vbEJhci5SdW5TY3JpcHQJRXNlZ3VpIFNjcmlwdAogICAgdG1lbnUgVG9vbEJhci5NYWtlCQlNYWtlCiAgICB0bWVudSBUb29sQmFyLlNoZWxsCQlTaGVsbAogICAgdG1lbnUgVG9vbEJhci5SdW5DdGFncwlFc2VndWkgQ3RhZ3MKICAgIHRtZW51IFRvb2xCYXIuVGFnSnVtcAlWYWkgYSBUYWcKICAgIHRtZW51IFRvb2xCYXIuSGVscAkJQWl1dG8KICAgIHRtZW51IFRvb2xCYXIuRmluZEhlbHAJQ2VyY2EgaW4gQWl1dG8KICBlbmRmdW4KZW5kaWYKCmxldCAmY3BvID0gczprZWVwY3BvCnVubGV0IHM6a2VlcGNwbwoKIiB2aW06IHNldCBzdz0yIDoK