It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://www.techcare.lt

  1. <!doctype html>
  2. <html lang="lt">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <link rel="icon" href="/favicon.ico" sizes="any" />
  6. <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
  7. <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
  8. <meta name="generator" content="Hostinger Horizons" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  10. <meta name="keywords" content="apple aksesuarai, apple servisas, macbook remontas vilniuje, iphone taisymas, kompiuterių remontas vilniuje, premium apple priedai, techcare vilnius" />
  11. <meta property="og:title" content="Premium Apple aksesuarai ir servisas | TechCare.lt" />
  12. <meta property="og:description" content="Patikimas Apple įrenginių servisas ir aukščiausios kokybės aksesuarai Vilniuje. MacBook remontas, iPhone taisymas, nemokama diagnostika. Apsilankykite TechCare!" />
  13. <meta property="og:type" content="website" />
  14. <meta property="og:url" content="https://techcare.lt/" />
  15. <meta property="og:image" content="https://horizons-cdn.hostinger.com/90e6b38b-7536-4cc3-a046-5a811f22f969/0e91ef1161a38afd10a2d2f47a526971.png" />
  16. <meta property="og:site_name" content="TechCare" />
  17. <meta name="twitter:card" content="summary_large_image" />
  18. <meta name="twitter:title" content="Premium Apple aksesuarai ir servisas | TechCare.lt" />
  19. <meta name="twitter:description" content="Greitas ir profesionalus Apple įrenginių taisymas bei premium aksesuarai Vilniuje. TechCare – jūsų Apple ekspertas." />
  20. <meta name="twitter:image" content="https://horizons-cdn.hostinger.com/90e6b38b-7536-4cc3-a046-5a811f22f969/0e91ef1161a38afd10a2d2f47a526971.png" />
  21. <link rel="canonical" href="https://techcare.lt/" />
  22. <meta name="google-site-verification" content="Cv7yMPDfTn9cNxWlAZuYspK7GP2fpOVLD0j4Ie_286c" />
  23.    <meta name="p:domain_verify" content="0f6a1907b156c5a8bc7bac80a3e3c9bd"/>
  24.    <meta name="msvalidate.01" content="D37E44BCB25B754EBEA1E023AF346547" />
  25. <link rel="preconnect" href="https://fonts.googleapis.com" />
  26.    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
  27.    <link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" />
  28.    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"></noscript>
  29.    <script async src="https://www.googletagmanager.com/gtag/js?id=AW-17462862064"></script>
  30.    <script>
  31.      window.dataLayer = window.dataLayer || [];
  32.      function gtag(){dataLayer.push(arguments);}
  33.      gtag('js', new Date());
  34.  
  35.      gtag('config', 'AW-17462862064');
  36.    </script>
  37.    <script defer async src='https://cdn.trustindex.io/loader.js?c59d6b95224b343f9b86e3337db'></script>
  38.    <script type="application/ld+json">
  39.    {
  40.      "@context": "https://schema.org",
  41.      "@type": "ProfessionalService",
  42.      "name": "TechCare",
  43.      "image": "https://horizons-cdn.hostinger.com/90e6b38b-7536-4cc3-a046-5a811f22f969/0e91ef1161a38afd10a2d2f47a526971.png",
  44.      "@id": "https://techcare.lt/",
  45.      "url": "https://techcare.lt/",
  46.      "telephone": "+37065519282",
  47.      "priceRange": "€€",
  48.      "address": {
  49.        "@type": "PostalAddress",
  50.        "streetAddress": "Žirmūnų g. 68",
  51.        "addressLocality": "Vilnius",
  52.        "addressRegion": "Vilniaus m. sav.",
  53.        "postalCode": "09108",
  54.        "addressCountry": "LT"
  55.      },
  56.      "geo": {
  57.        "@type": "GeoCoordinates",
  58.        "latitude": 54.712040,
  59.        "longitude": 25.314410
  60.      },
  61.      "openingHoursSpecification": [
  62.        {
  63.          "@type": "OpeningHoursSpecification",
  64.          "dayOfWeek": [
  65.            "Monday",
  66.            "Tuesday",
  67.            "Wednesday",
  68.            "Thursday",
  69.            "Friday"
  70.          ],
  71.          "opens": "09:00",
  72.          "closes": "18:00"
  73.        },
  74.        {
  75.          "@type": "OpeningHoursSpecification",
  76.          "dayOfWeek": "Saturday",
  77.          "opens": "10:00",
  78.          "closes": "15:00"
  79.        }
  80.      ],
  81.      "aggregateRating": {
  82.        "@type": "AggregateRating",
  83.        "ratingValue": "4.9",
  84.        "reviewCount": "87",
  85.        "bestRating": "5",
  86.        "worstRating": "1"
  87.      },
  88.      "review": [
  89.        {
  90.          "@type": "Review",
  91.          "author": {"@type": "Person", "name": "Mantas V."},
  92.          "datePublished": "2024-05-10",
  93.          "reviewBody": "Labai greitai sutaisė mano iPhone ekraną. Meistras malonus, o kaina tikrai gera. Rekomenduoju šį telefonų servisą!",
  94.          "reviewRating": {
  95.            "@type": "Rating",
  96.            "ratingValue": "5"
  97.          },
  98.          "inLanguage": "lt"
  99.        },
  100.        {
  101.          "@type": "Review",
  102.          "author": {"@type": "Person", "name": "Monika P."},
  103.          "datePublished": "2024-04-22",
  104.          "reviewBody": "MacBook pradėjo kaisti ir lėtai veikti. TechCare atliko valymą ir pakeitė termo pastą – dabar veikia kaip naujas. Ačiū!",
  105.          "reviewRating": {
  106.            "@type": "Rating",
  107.            "ratingValue": "5"
  108.          },
  109.          "inLanguage": "lt"
  110.        },
  111.        {
  112.          "@type": "Review",
  113.          "author": {"@type": "Person", "name": "Linas K."},
  114.          "datePublished": "2024-03-15",
  115.          "reviewBody": "Samsung telefonas nukrito į vandenį. Kitur sakė, kad nieko nebus, o čia sutvarkė! Puikus kompiuterių ir telefonų remontas Vilniuje.",
  116.          "reviewRating": {
  117.            "@type": "Rating",
  118.            "ratingValue": "5"
  119.          },
  120.          "inLanguage": "lt"
  121.        }
  122.      ],
  123.      "hasOfferCatalog": {
  124.        "@type": "OfferCatalog",
  125.        "name": "Remonto paslaugos",
  126.        "itemListElement": [
  127.          {
  128.            "@type": "Offer",
  129.            "itemOffered": {
  130.              "@type": "Service",
  131.              "name": "Nemokama įrenginio diagnostika"
  132.            },
  133.            "priceSpecification": {
  134.              "@type": "PriceSpecification",
  135.              "price": "0",
  136.              "priceCurrency": "EUR"
  137.            }
  138.          },
  139.          {
  140.            "@type": "Offer",
  141.            "itemOffered": {
  142.              "@type": "Service",
  143.              "name": "Kompiuterių remontas",
  144.              "alternateName": "PC taisymas",
  145.              "areaServed": {
  146.                "@type": "City",
  147.                "name": "Vilnius"
  148.              },
  149.              "description": "Profesionalus stacionarių ir nešiojamų Windows kompiuterių remontas Vilniuje. Diagnostika, komponentų keitimas, programinės įrangos tvarkymas.",
  150.              "serviceType": "ComputerRepair"
  151.            }
  152.          },
  153.          {
  154.            "@type": "Offer",
  155.            "itemOffered": {
  156.              "@type": "Service",
  157.              "name": "Telefonų remontas",
  158.              "alternateName": "Mobiliųjų telefonų taisymas",
  159.              "areaServed": {
  160.                "@type": "City",
  161.                "name": "Vilnius"
  162.              },
  163.              "description": "Visų populiariausių gamintojų (Apple iPhone, Samsung, Xiaomi, Huawei ir kt.) telefonų remontas. Ekranų, baterijų keitimas, drėgmės pažeidimų šalinimas.",
  164.              "serviceType": "MobilePhoneRepair"
  165.            }
  166.          },
  167.          {
  168.            "@type": "Offer",
  169.            "itemOffered": {
  170.              "@type": "Service",
  171.              "name": "MacBook remontas",
  172.              "alternateName": "Apple kompiuterių taisymas",
  173.              "brand": {"@type": "Brand", "name": "Apple"},
  174.              "areaServed": {
  175.                "@type": "City",
  176.                "name": "Vilnius"
  177.              },
  178.              "description": "Specializuotas Apple MacBook, iMac, Mac mini kompiuterių remontas. Plokščių litavimas, ekranų keitimas, baterijų ir klaviatūrų keitimas.",
  179.              "serviceType": "ComputerRepair"
  180.            }
  181.          }
  182.        ]
  183.      },
  184.      "potentialAction": {
  185.        "@type": "ReserveAction",
  186.        "target": {
  187.          "@type": "EntryPoint",
  188.          "urlTemplate": "https://techcare.lt/#uzklausa",
  189.          "inLanguage": "lt",
  190.          "actionPlatform": [
  191.            "http://schema.org/DesktopWebPlatform",
  192.            "http://schema.org/IOSPlatform",
  193.            "http://schema.org/AndroidPlatform"
  194.          ]
  195.        },
  196.        "name": "Registruotis nemokamai diagnostikai"
  197.      },
  198.      "sameAs": [
  199.        "https://www.facebook.com/TechCareVilnius",
  200.        "https://www.instagram.com/TechCareVilnius"
  201.      ]
  202.    }
  203.    </script>
  204. <script type="module" crossorigin src="/assets/index-e90dd8c2.js"></script>
  205. <link rel="stylesheet" href="/assets/index-0fc63f2d.css">
  206. <script type="module">
  207. window.onerror = (message, source, lineno, colno, errorObj) => {
  208. const errorDetails = errorObj ? JSON.stringify({
  209. name: errorObj.name,
  210. message: errorObj.message,
  211. stack: errorObj.stack,
  212. source,
  213. lineno,
  214. colno,
  215. }) : null;
  216.  
  217. window.parent.postMessage({
  218. type: 'horizons-runtime-error',
  219. message,
  220. error: errorDetails
  221. }, '*');
  222. };
  223. </script>
  224. <script type="module">
  225. const observer = new MutationObserver((mutations) => {
  226. for (const mutation of mutations) {
  227. for (const addedNode of mutation.addedNodes) {
  228. if (
  229. addedNode.nodeType === Node.ELEMENT_NODE &&
  230. (
  231. addedNode.tagName?.toLowerCase() === 'vite-error-overlay' ||
  232. addedNode.classList?.contains('backdrop')
  233. )
  234. ) {
  235. handleViteOverlay(addedNode);
  236. }
  237. }
  238. }
  239. });
  240.  
  241. observer.observe(document.documentElement, {
  242. childList: true,
  243. subtree: true
  244. });
  245.  
  246. function handleViteOverlay(node) {
  247. if (!node.shadowRoot) {
  248. return;
  249. }
  250.  
  251. const backdrop = node.shadowRoot.querySelector('.backdrop');
  252.  
  253. if (backdrop) {
  254. const overlayHtml = backdrop.outerHTML;
  255. const parser = new DOMParser();
  256. const doc = parser.parseFromString(overlayHtml, 'text/html');
  257. const messageBodyElement = doc.querySelector('.message-body');
  258. const fileElement = doc.querySelector('.file');
  259. const messageText = messageBodyElement ? messageBodyElement.textContent.trim() : '';
  260. const fileText = fileElement ? fileElement.textContent.trim() : '';
  261. const error = messageText + (fileText ? ' File:' + fileText : '');
  262.  
  263. window.parent.postMessage({
  264. type: 'horizons-vite-error',
  265. error,
  266. }, '*');
  267. }
  268. }
  269. </script>
  270. <script type="module">
  271. const originalConsoleError = console.error;
  272. console.error = function(...args) {
  273. originalConsoleError.apply(console, args);
  274.  
  275. let errorString = '';
  276.  
  277. for (let i = 0; i < args.length; i++) {
  278. const arg = args[i];
  279. if (arg instanceof Error) {
  280. errorString = arg.stack || `${arg.name}: ${arg.message}`;
  281. break;
  282. }
  283. }
  284.  
  285. if (!errorString) {
  286. errorString = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ');
  287. }
  288.  
  289. window.parent.postMessage({
  290. type: 'horizons-console-error',
  291. error: errorString
  292. }, '*');
  293. };
  294. </script>
  295. <script type="module">
  296. const originalFetch = window.fetch;
  297.  
  298. window.fetch = function(...args) {
  299. const url = args[0] instanceof Request ? args[0].url : args[0];
  300.  
  301. // Skip WebSocket URLs
  302. if (url.startsWith('ws:') || url.startsWith('wss:')) {
  303. return originalFetch.apply(this, args);
  304. }
  305.  
  306. return originalFetch.apply(this, args)
  307. .then(async response => {
  308. const contentType = response.headers.get('Content-Type') || '';
  309.  
  310. // Exclude HTML document responses
  311. const isDocumentResponse =
  312. contentType.includes('text/html') ||
  313. contentType.includes('application/xhtml+xml');
  314.  
  315. if (!response.ok && !isDocumentResponse) {
  316. const responseClone = response.clone();
  317. const errorFromRes = await responseClone.text();
  318. const requestUrl = response.url;
  319. console.error(`Fetch error from ${requestUrl}: ${errorFromRes}`);
  320. }
  321.  
  322. return response;
  323. })
  324. .catch(error => {
  325. if (!url.match(/.html?$/i)) {
  326. console.error(error);
  327. }
  328.  
  329. throw error;
  330. });
  331. };
  332. </script>
  333. </head>
  334. <body>
  335. <div id="root"></div>
  336. </body>
  337. </html>
  338.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda