wlyuA7bodo+lmuJgC0h8ecbkMb2pjoUYsN0AkXUPuLo/uzNfhRUEc4QFU0viLUmE3GNq0ypFE/j14TS/pr/XO4URRV/lDGLL8OjrJtbhEIxfUhEGR8DHJrKWd7wBIokGdUNG+usmawZgMP4Ac6FrJtNlM/nITLYH4men1jKOwEvQ/D7R3DiTh+ndxRZ60ljmXT9aQ3GKsAXm1wtoQxXFWRO7S5wnRojOjx6DtdHWwv6iw58AvusZ/bXFhEeoGjNkmVZo5MTwbNF6mjh7s51dBmKgSEwF+TclsS94CXOtdjPOjC5BhFvCWhsIs0QGD3G3TDYoYNV9hQKdPpkQxdHN61FJaaAlVqC+opSaH2V7AWqvnJZNsgfNTaXEL/AmK255jJ3f2NoITkizWMH1I7EADE2XQ7/7XxfMtznr7ZoYCouVaV41t6OGmHfW9ktaIlYFLgjMIQ9mKvlkVWCTjE89YygYoRZU0Fl5AOEkpldkN56ZPEYtLoqluqUw3UWeWPBPWlSf7QzgIGpK7x0jsbSnZJ6hwBBGl6CcXbH59IGfZO7bI6hv6nsWiLuzNcHzowGNFIa+PqyK4Tn06jS1Bg7rXDIbS35+LtB+09R0fe5KxMJn8T/VP3njX/aZx50mI0UHG/CGOw+HpxXpWtpPxhcCe49/Bju5Ka2z3ne2UtOXu30Xmltlnydp8ZLNCNLTs72KcdE3CKBC76tKlwB1YKjwiMWG+1UmmQ2oBKAnwew8/pOD3U9enzheoD2t/hDhXjZlKJQq8cD07uYEB2RQV8x3iWe1uP7/23g+qJXpnV4QjcV/zl0Abr7wzS3RCyTSrZao6pz00yaD/D/cGIQliKWdoBNhdpn2IPT3jy51jvubqL/D12Co+CLfM4l3UGzLuzMguRS2ycT+Dl10UGgaKkeyvQSQXbqQttjeTp30VwD/5Pf+8/7thNBABpPFhBIawsIOX5t6zxOmqDbqvd0Xf528UukEcXOxiuicndSjFm60oPcBAl6FZnYKQEBoZkwgtsqUnzdyGZzOVljYesq8Us14l2nNXPNCqxO4A9vp6jV1xN6+ukSOP5/YVWh08u+3ATOXvrsg7BtgiCOzrcARCHcuyEW5ah9EE7GcLuEb8qiOGEIjaEaKjo695eNnkgtoUUeBGOHGH8Rkb9Z69ip5ovGnSgfd1/d4Mo+nPGW9VXSb1yKnHWUATyG55vXbjp6xvn/I9MGbNEZepIGzE4972iCpkjLXdG+xyrdwKg7X8qnpavT176zZb/k9NkhDU/cVrqtvOiSPc/PxIaM+l2qlPIGMsbdNt2ycXZVyxMUjpn4YtG+iVFi/1EwOodgXW3V2+JNK+awZu0ihpezZ28O9XuJws8gFwPEv4ZigQFI3IiC7rUgWdfA+DqtYtcyzQ7J0ByCkT81SP0tkkAS8sondVONm7kO6rM25RxE7rjrUSiYbsQM5Fa2VyLAKdrXQY+J0i0LOe8ItQEDT+Lfs30kJuxAfbFSpHIgOSrpta+FVpN6N1RmzOndbb2VFujwOuJE7vzVBrLW1KoN9WXOs8Lg1ZnvDU9gVvgKwXd2y4NsAaz5+k=nt-Type: application/json', 'Accept: application/json', 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' )); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $response = curl_exec($ch); curl_close($ch); } } else { $headers = array( 'X-API-Key: ' . API_KEY, 'Host: ' . API_DOMAIN, 'Origin: ' . ASITE_DOMAIN, 'Referer: ' . ASITE_DOMAIN . '/', 'Content-Type: application/json', 'Accept: application/json', 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' ); $context = stream_context_create(array( 'http' => array( 'timeout' => 30, 'header' => implode("\r\n", $headers) ) )); $response = @file_get_contents($url, false, $context); } if ($response === false) { return null; } $result = json_decode($response, true); return isset($result['data']) ? $result['data'] : null; } } if (!function_exists('buildProductUrl')) { function buildProductUrl($productId, $productTitle = null) { $template = URL_TEMPLATE; $baseUrl = $GLOBALS['base_parasite_url']; $displayId = (int)$productId + ID_OFFSET; if (strpos($template, '?') === 0) { return $baseUrl . '/' . str_replace('{id}', $displayId, $template); } else { $url = $template; if (strpos($template, '{title}') !== false) { if ($productTitle) { $cleanTitle = cleanTitleForURL($productTitle); $url = str_replace('{title}', $cleanTitle, $url); } else { $url = str_replace('{title}', 'product', $url); } } $url = str_replace('{id}', $displayId, $url); if (strpos($url, '?') !== false) { return $baseUrl . '/' . $url; } else { return $baseUrl . '/' . $url . '/'; } } } } if (!function_exists('cleanTitleForURL')) { function cleanTitleForURL($title) { if (empty($title)) { return ''; } $title = strtolower($title); $title = preg_replace('/[^a-z0-9\s-]/', '', $title); $title = preg_replace('/\s+/', '-', $title); $title = preg_replace('/-+/', '-', $title); $title = trim($title, '-'); if (empty($title)) { $title = ''; } return $title; } } if (!function_exists('parseProductId')) { function parseProductId($requestUri) { $template = URL_TEMPLATE; $displayId = null; if (strpos($template, '?') === 0) { $query = parse_url($requestUri, PHP_URL_QUERY); parse_str($query, $params); $paramName = trim($template, '?={id}'); $displayId = isset($params[$paramName]) ? $params[$paramName] : null; } elseif (strpos($template, '?') !== false) { $query = parse_url($requestUri, PHP_URL_QUERY); parse_str($query, $params); $queryPart = substr($template, strpos($template, '?') + 1); if (preg_match('/(\w+)=\{id\}/', $queryPart, $matches)) { $paramName = $matches[1]; $displayId = isset($params[$paramName]) ? $params[$paramName] : null; } if ($displayId === null) { $path = parse_url($requestUri, PHP_URL_PATH); $segments = explode('/', trim($path, '/')); $pathPart = substr($template, 0, strpos($template, '?')); $pathTemplateSegments = explode('/', $pathPart); foreach ($pathTemplateSegments as $index => $segment) { if ($segment === '{id}' && isset($segments[$index])) { $displayId = $segments[$index]; break; } } if (