<!DOCTYPE html>
<html lang="es">
<head>

  <meta charset="UTF-8">
  <base href="/">
  <title>Gastronomía Las Murrallas - Catering para Comedores de Colegios, Empresas, Hoteles y Residencias en Madrid</title>

  <!--
  <link rel="preload" href="main.dart.js" as="script">
  -->

  <!--
  <link rel="preload" href="flutter.js" as="script">
  <link rel="preload" href="main.dart.js" as="script">
  <link rel="preload" href="flutter_bootstrap.js" as="script">

  <link rel="dns-prefetch"  href="https://www.youtube.com">
  <link rel="preconnect"    href="https://www.youtube.com" crossorigin>
  <link rel="dns-prefetch"  href="https://googlevideo.com">
  <link rel="preconnect"    href="https://googlevideo.com" crossorigin>
  <link rel="dns-prefetch"  href="https://webdesarrollo.web.app">
  <link rel="preconnect"    href="https://webdesarrollo.web.app" crossorigin>
  -->

  <link rel="canonical" href="https://gastronomialasmurallas.es">
  <link rel="icon" href="favicon.ico?v=1" type="image/x-icon">
  <link rel="manifest" href="manifest.json">

  <style media="screen">
    body { background: #ECEFF1; color: rgba(0,0,0,0.87); font-family: Roboto, Helvetica, Arial, sans-serif; margin: 0; padding: 0; }
    #message { background: white; max-width: 360px; margin: 100px auto 16px; padding: 32px 24px 16px; border-radius: 3px; }
    #message h3 { color: #888; font-weight: normal; font-size: 16px; margin: 16px 0 12px; }
    #message h2 { color: #ffa100; font-weight: bold; font-size: 16px; margin: 0 0 8px; }
    #message h1 { font-size: 22px; font-weight: 300; color: rgba(0,0,0,0.6); margin: 0 0 16px;}
    #message p { line-height: 140%; margin: 16px 0 24px; font-size: 14px; }
    #message a { display: block; text-align: center; background: #039be5; text-transform: uppercase; text-decoration: none; color: white; padding: 16px; border-radius: 4px; }
    #message, #message a { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); }
    #load { color: rgba(0,0,0,0.4); text-align: center; font-size: 13px; }
  </style>

  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
  <meta name="description" content="Catering de Colegios en Madrid | Especialistas en Comedores Escolares">
  <meta name="keywords" content="catering comedores escolares, comedor escolar, comedor escolar empresa madrid, comedores escolares linea fria, catering para empresas, campamentos servicio de comedor madrid, catering para residencias, catering para hoteles, comida para llevar empresas">
  <meta name="author" content="Gastronomía Las Murallas">
  <meta name="robots" content="index, follow">
  <meta property="og:title" content="Catering y Comedores Escolares - Soluciones gastronómicas para Colegio, Empresas, Residencias y Hoteles">
  <meta property="og:description" content="Descubre nuestros servicios de catering para comedores escolares, empresas y hoteles. Ofrecemos soluciones de línea fría y comida para llevar, garantizando calidad y sabor en cada plato. ¡Transforma tu idea en realidad con nosotros!">
  <meta property="og:image" content="https://firebasestorage.googleapis.com/v0/b/desarrollo-glm.appspot.com/o/web%2Fglm.webp?alt=media">
  <meta property="og:url" content="https://gastronomialasmurallas.es">
  <meta name="twitter:card" content="summary_large_image">

  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "LocalBusiness",
      "name": "Gastronomía Las Murallas",
      "description": "Catering para comedores escolares, empresas y hoteles en Madrid. Más de 30 años ofreciendo soluciones de línea fría y comida para llevar.",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "Madrid",
        "addressCountry": "ES"
      },
      "url": "https://gastronomialasmurallas.es",
      "telephone": "+34-916-13-30-01",
      "image": "https://firebasestorage.googleapis.com/v0/b/desarrollo-glm.appspot.com/o/web%2Fglm.webp?alt=media",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "C. Plutón, 5, 28936 Móstoles",
        "addressLocality": "Madrid",
        "addressCountry": "ES"
      }
    }
  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Catering Comedores Escolares",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering para comedores escolares en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }

  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Comedor Escolar",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering para comedores escolares en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }
  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Comedores Escolares línea fría",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering para comedores escolares en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }
  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Catering para Empresas",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering para empresas en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }
  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Catering para Hoteles",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering para hoteles en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }
  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Comida para llevar Empresas",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering para llevar a Empresas en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }
  </script>
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Service",
      "serviceType": "Campamentos Servicios comedor en Madrid",
      "provider": {
        "@type": "LocalBusiness",
        "name": "Gastronomía Las Murallas",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "C. Plutón, 5, 28936 Móstoles",
          "addressLocality": "Madrid",
          "addressCountry": "ES"
        }
      },
      "areaServed": {
        "@type": "City",
        "name": "Madrid"
      },
      "description": "Catering Campamentos, servicios de comedor para Colegios en Madrid con soluciones de línea fría y más de 30 años de experiencia."
    }
  </script>

  <!-- iOS meta tags & icons -->
  <meta name="mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="GLM">
  <link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
  <link rel="apple-touch-icon" sizes="180x180" href="icons/apple-icon-180x180.webp">
  <link rel="icon" type="image/png" sizes="192x192" href="icons/android-icon-192x192.png">
  <link rel="manifest" href="manifest.json">

  <meta name="msapplication-TileColor" content="#ffffff">
  <meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
  <meta name="theme-color" content="#ffffff">


</head>
<body>


<script defer>
  (()=>{var C={blink:!0,gecko:!1,webkit:!1,unknown:!1},R=()=>navigator.vendor==="Google Inc."||navigator.userAgent.includes("Edg/")?"blink":navigator.vendor==="Apple Computer, Inc."?"webkit":navigator.vendor===""&&navigator.userAgent.includes("Firefox")?"gecko":"unknown",L=R(),x=()=>typeof ImageDecoder>"u"?!1:L==="blink",K=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",B=()=>{let i=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(i))},w={browserEngine:L,hasImageCodecs:x(),hasChromiumBreakIterators:K(),supportsWasmGC:B(),crossOriginIsolated:window.crossOriginIsolated};function c(...i){return new URL(T(...i),document.baseURI).toString()}function T(...i){return i.filter(e=>!!e).map((e,r)=>r===0?I(e):z(I(e))).filter(e=>e.length).join("/")}function z(i){let e=0;for(;e<i.length&&i.charAt(e)==="/";)e++;return i.substring(e)}function I(i){let e=i.length;for(;e>0&&i.charAt(e-1)==="/";)e--;return i.substring(0,e)}function U(i,e){return i.canvasKitBaseUrl?i.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?T("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var v=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=c("main.dart.js"),onEntrypointLoaded:t,nonce:n}=e||{};return this._loadJSEntrypoint(r,t,n)}async load(e,r,t,n,s){s??=u=>{u.initializeEngine(t).then(m=>m.runApp())};let{entrypointBaseUrl:a}=t,{entryPointBaseUrl:o}=t;if(!a&&o&&(console.warn("[deprecated] `entryPointBaseUrl` is deprecated and will be removed in a future release. Use `entrypointBaseUrl` instead."),a=o),e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,r,a,s);{let u=e.mainJsPath??"main.dart.js",m=c(a,u);return this._loadJSEntrypoint(m,s,n)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,r,t){let n=typeof r=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let s=this._createScriptTag(e,t);if(n)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=r,document.head.append(s);else return new Promise((a,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=a,s.addEventListener("error",o),document.head.append(s)})}}async _loadWasmEntrypoint(e,r,t,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:s,jsSupportRuntimePath:a}=e,o=c(t,s),u=c(t,a);this._ttPolicy!=null&&(u=this._ttPolicy.createScriptURL(u));let p=(await import(u)).compileStreaming(fetch(o)),l;e.renderer==="skwasm"?l=(async()=>{let d=await r.skwasm;return window._flutter_skwasmInstance=d,{skwasm:d.wasmExports,skwasmWrapper:d,ffi:{memory:d.wasmMemory}}})():l=Promise.resolve({}),await(await(await p).instantiate(await l,{loadDynamicModule:async(d,S)=>{let j=fetch(c(t,d)),_=c(t,S);this._ttPolicy!=null&&(_=this._ttPolicy.createScriptURL(_));let A=import(_);return[await j,await A]}})).invokeMain()}}_createScriptTag(e,r){let t=document.createElement("script");t.type="application/javascript",r&&(t.nonce=r);let n=e;return this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(e)),t.src=n,t}};async function E(i,e,r){if(e<0)return i;let t,n=new Promise((s,a)=>{t=setTimeout(()=>{a(new Error(`${r} took more than ${e}ms to resolve. Moving on.`,{cause:E}))},e)});return Promise.race([i,n]).finally(()=>{clearTimeout(t)})}var h=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
The current context is NOT secure.`,o+=`
Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:r,serviceWorkerUrl:t=c(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,s=t;this._ttPolicy!=null&&(s=this._ttPolicy.createScriptURL(s));let a=navigator.serviceWorker.register(s).then(o=>this._getNewServiceWorker(o,r)).then(this._waitForServiceWorkerActivation);return E(a,n,"prepareServiceWorker")}async _getNewServiceWorker(e,r){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(r))return console.debug("Loading from existing service worker."),e.active;{let t=await e.update();return console.debug("Updating service worker."),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((r,t)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),r())})})}};var g=class{constructor(e,r="flutter-js"){let t=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(r,{createScriptURL:function(n){if(n.startsWith("blob:"))return n;let s=new URL(n,window.location),a=s.pathname.split("/").pop();if(t.some(u=>u.test(a)))return s.toString();console.error("URL rejected by TrustedTypes policy",r,":",n,"(download prevented)")}}))}};var k=i=>{let e=WebAssembly.compileStreaming(fetch(i));return(r,t)=>((async()=>{let n=await e,s=await WebAssembly.instantiate(n,r);t(s,n)})(),{})};var W=(i,e,r,t)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let n=r.hasChromiumBreakIterators&&r.hasImageCodecs;if(!n&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let s=n&&e.canvasKitVariant!=="full",a=t;e.canvasKitVariant=="experimentalWebParagraph"?a=c(a,"experimental_webparagraph"):s&&(a=c(a,"chromium"));let o=c(a,"canvaskit.js");i.flutterTT.policy&&(o=i.flutterTT.policy.createScriptURL(o));let u=k(c(a,"canvaskit.wasm")),m=await import(o);return window.flutterCanvasKit=await m.default({instantiateWasm:u}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var P=async(i,e,r,t)=>{let s=!r.hasImageCodecs||!r.hasChromiumBreakIterators?"skwasm_heavy":"skwasm",a=c(t,`${s}.js`),o=a;i.flutterTT.policy&&(o=i.flutterTT.policy.createScriptURL(o));let u=k(c(t,`${s}.wasm`));return await(await import(o)).default({skwasmSingleThreaded:!r.crossOriginIsolated||e.forceSingleThreadedSkwasm,instantiateWasm:u,locateFile:(p,l)=>{if(p.endsWith(".ww.js")){let y=c(t,p);return URL.createObjectURL(new Blob([`
"use strict";

let eventListener;
eventListener = (message) => {
    const pendingMessages = [];
    const data = message.data;
    data["instantiateWasm"] = (info,receiveInstance) => {
        const instance = new WebAssembly.Instance(data["wasm"], info);
        return receiveInstance(instance, data["wasm"])
    };
    import(data.js).then(async (skwasm) => {
        await skwasm.default(data);

        removeEventListener("message", eventListener);
        for (const message of pendingMessages) {
            dispatchEvent(message);
        }
    });
    removeEventListener("message", eventListener);
    eventListener = (message) => {

        pendingMessages.push(message);
    };

    addEventListener("message", eventListener);
};
addEventListener("message", eventListener);
`],{type:"application/javascript"}))}return url},mainScriptUrlOrBlob:a})};var b=class{async loadEntrypoint(e){let{serviceWorker:r,...t}=e||{},n=new g,s=new h;s.setTrustedTypesPolicy(n.policy),await s.loadServiceWorker(r).catch(o=>{console.warn("Exception while loading service worker:",o)});let a=new v;return a.setTrustedTypesPolicy(n.policy),this.didCreateEngineInitializer=a.didCreateEngineInitializer.bind(a),a.loadEntrypoint(t)}async load({serviceWorkerSettings:e,onEntrypointLoaded:r,nonce:t,config:n}={}){n??={};let s=_flutter.buildConfig;if(!s)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let a=n.wasmAllowList?.[w.browserEngine]??C[w.browserEngine],o=d=>{switch(d){case"skwasm":return w.supportsWasmGC&&a;default:return!0}},u=(d,S)=>d.renderer==S,m=d=>d.compileTarget==="dart2wasm"&&!w.supportsWasmGC||n.renderer&&!u(d,n.renderer)?!1:o(d.renderer),p=s.builds.find(m);if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let l={};l.flutterTT=new g,e&&(l.serviceWorkerLoader=new h,l.serviceWorkerLoader.setTrustedTypesPolicy(l.flutterTT.policy),await l.serviceWorkerLoader.loadServiceWorker(e).catch(d=>{console.warn("Exception while loading service worker:",d)}));let y=U(n,s);p.renderer==="canvaskit"?l.canvasKit=W(l,n,w,y):p.renderer==="skwasm"&&(l.skwasm=P(l,n,w,y));let f=new v;return f.setTrustedTypesPolicy(l.flutterTT.policy),this.didCreateEngineInitializer=f.didCreateEngineInitializer.bind(f),f.load(p,l,n,t,r)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new b);})();
//# sourceMappingURL=flutter.js.map

  if (!window._flutter) {
  window._flutter = {};
}
_flutter.buildConfig = {"engineRevision":"d3d45dcf251823c1769909cd43698d126db38deb","builds":[{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"},{}]};


  window.addEventListener('load', function () {
    // Obtener el parámetro 'renderer' de la URL, por defecto 'html'
    const searchParams = new URLSearchParams(window.location.search);
    const renderer = searchParams.get('renderer') || 'canvaskit';

    // Configuración para el loader
    const userConfig = { renderer: renderer };

    console.log('Renderer seleccionado:', renderer); // Depuración
    console.log('Configuración:', userConfig); // Depuración

    if (typeof _flutter === 'undefined') {
      console.error('Flutter no está definido. Verifica que flutter.js se haya cargado correctamente.');
      return;
    }

    _flutter.loader.load({
      config: userConfig,
      onEntrypointLoaded: async function (engineInitializer) {
        try {
          console.log('Cargando motor Flutter...'); // Depuración
          const appRunner = await engineInitializer.initializeEngine();
          console.log('Motor inicializado, ejecutando aplicación...'); // Depuración
          await appRunner.runApp();
        } catch (error) {
          console.error('Error inicializando Flutter:', error);
        }
      },
    });
  });
</script>



</body>
</html>
