{"html":"\u003c!doctype html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"utf-8\" /\u003e\n    \u003cmeta\n      name=\"viewport\"\n      content=\"width=device-width, minimum-scale=1.0, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\"\n    /\u003e\n\n    \u003cscript\u003e\n      window.split_keyword = \"go\";\n\n      // Support for legacy URLs.\n      if (window.location.href.includes(\"#\")) {\n        window.location.href = window.location.href.replace(\n          \"/#/\",\n          \"/\" + window.split_keyword + \"/\",\n        );\n      }\n\n      const baseHref = window.location.href.split(window.split_keyword)?.[0];\n      const baseEl = document.createElement(\"base\");\n      baseEl.setAttribute(\"href\", baseHref);\n      document.head.appendChild(baseEl);\n    \u003c/script\u003e\n\n    \u003cscript\u003e\n      async function hashContent(content) {\n        const data = new TextEncoder().encode(content);\n        const hashBuffer = await crypto.subtle.digest(\"SHA-384\", data);\n        return [...new Uint8Array(hashBuffer)]\n          .map((b) =\u003e b.toString(16).padStart(2, \"0\"))\n          .join(\"\");\n      }\n\n      function resolveUrl(src) {\n        return src?.startsWith(\"http\") ? src : new URL(src, location.href).href;\n      }\n\n      async function reportMismatch({ src, expectedHash, actualHash }) {\n        const env = \"production\";\n        const reportUrl =\n          env === \"production\"\n            ? \"https://reports.outbox.com/report/sri\"\n            : \"https://reports-test.outbox.com/report/sri\";\n        await fetch(reportUrl, {\n          method: \"POST\",\n          headers: { \"Content-Type\": \"application/json\" },\n          body: JSON.stringify({\n            type: \"sri-violation\",\n            app_name: \"es5\",\n            expected_hash: expectedHash,\n            actual_hash: actualHash,\n            user_agent: navigator.userAgent,\n            url: window.location.href,\n            body: {\n              document_url: window.location.href,\n              blocked_url: src,\n              source_file: resolveUrl(src),\n            },\n          }),\n        });\n      }\n\n      async function verifyScriptIntegrity({ src, expectedHash }) {\n        try {\n          // Use cache without revalidation\n          const response = await fetch(src, { cache: \"force-cache\" });\n          if (!response.ok)\n            throw new Error(\n              `Failed to fetch: ${src} (HTTP ${response.status})`,\n            );\n\n          const content = await response.text();\n          const actualHash = await hashContent(content);\n          const env = \"production\";\n\n          if (\n            actualHash !== expectedHash \u0026\u0026\n            env !== \"development\" \u0026\u0026\n            env !== \"dev-local\"\n          ) {\n            console.warn(\n              `Hash mismatch for ${src}:\\nExpected: ${expectedHash}\\nActual: ${actualHash}`,\n            );\n            // Report disabled on Playwright and Cypress\n            if (\n              !window.PLAYWRIGHT \u0026\u0026\n              \"\u003c\u0026percnt;= process.env.PLAYWRIGHT \u0026percnt;\u003e\" !== \"true\" \u0026\u0026\n              !window.Cypress\n            ) {\n              await reportMismatch({ src, expectedHash, actualHash });\n            }\n          }\n        } catch (err) {\n          console.error(`Error verifying integrity for ${src}:`, err);\n        }\n      }\n\n      function loadScript(src, isDefer) {\n        return new Promise((resolve) =\u003e {\n          const script = document.createElement(\"script\");\n          script.src = src;\n          script.defer = isDefer;\n          script.onload = resolve;\n          script.onerror = resolve;\n          document.head.appendChild(script);\n        });\n      }\n\n      (async function () {\n        // TLAScript.js must run and set window.TLA_from_config before any\n        // other script (or the inline TLA block below) reads window.TLA.\n        // Dynamically-injected scripts are always async, so we load it on\n        // its own and await it before loading the rest.\n        const tlaScript = {\n          src: \"js/TLAScript.js?v=9.52.6\",\n          expectedHash: \"8c0302cd269689c7fb6ed201c2914fdad9cef5ee1a5fd4dd2f8e36a98c71d9d72c4c3fc06845dd74492f97336eacdb53\",\n          defer: false,\n        };\n\n        const scriptsConfig = [\n          {\n            src: \"js/polyfills.js?v=9.52.6\",\n            expectedHash: \"da2c729ccc31712021b55ea84b5dedc83c21d33791c03e01c2afbf78da7208fd63253bc902056517984d8d38b9bba294\",\n            defer: true,\n          },\n          {\n            src: \"js/consolidateQueryParams.js?v=9.52.6\",\n            expectedHash: \"adc56c5eb13143fc5f016f9763c4b41d46fc3faf8550050baae2f285e2367b2566e79fc46cb02b3882fee9572d9b7ba1\",\n            defer: false,\n          },\n          {\n            src: \"js/apiPreloader.js?v=9.52.6\",\n            expectedHash: \"474b2b761650c3989810e640a35a1647ca0548c1e953427a50ea44c81da4132d0c161df75c05f13fd9d956222b3343d7\",\n            defer: true,\n          },\n          {\n            src: \"js/loadSkin.js?v=9.52.6\",\n            expectedHash: \"b96f3a31a0d237b056f7ccb36e43c6e5b3a3ae09ea5fb6434c98f7d06f1f5e1f0e91ca483c318de991c6be5269f27583\",\n            defer: true,\n          },\n          {\n            src: \"js/vendor.js?v=9.52.6\",\n            expectedHash: \"\",\n            defer: true,\n          },\n          {\n            src: \"js/bundle.js?v=9.52.6\",\n            expectedHash: \"94be62b5b1f0a8d01930bb3fb9022be9def023d288e40f9fadcbb7cecf5aa295673e8622d0a77b3e6a7d909b8fea054c\",\n            defer: true,\n          },\n        ];\n\n        await loadScript(tlaScript.src, tlaScript.defer);\n\n        window.TLA_from_url = getParameterByName(\"TLA\");\n        window.TLA_from_config =\n          typeof window.TLA_from_config != \"undefined\"\n            ? window.TLA_from_config\n            : null;\n        window.TLA = (\n          window.TLA_from_url ||\n          window.TLA_from_config ||\n          \"default\"\n        ).toLowerCase();\n\n        await Promise.all(\n          scriptsConfig.map(({ src, defer }) =\u003e loadScript(src, defer)),\n        );\n\n        // Verify after scripts are loaded to hit cache\n        Promise.all(\n          [tlaScript, ...scriptsConfig].map(verifyScriptIntegrity),\n        ).catch(console.error);\n      })();\n    \u003c/script\u003e\n\n    \u003cscript type=\"text/javascript\"\u003e\n      window.dataLayer = window.dataLayer || [];\n    \u003c/script\u003e\n\n    \u003cscript\u003e\n      function loadjscssfile(filename, filetype) {\n        if (filetype == \"js\") {\n          // if filename is a external JavaScript file\n          var fileref = document.createElement(\"script\");\n          fileref.setAttribute(\"type\", \"text/javascript\");\n          fileref.setAttribute(\"src\", filename);\n        } else if (filetype == \"css\") {\n          // if filename is an external CSS file\n          var fileref = document.createElement(\"link\");\n          fileref.setAttribute(\"rel\", \"stylesheet\");\n          fileref.setAttribute(\"type\", \"text/css\");\n          fileref.setAttribute(\"href\", filename);\n        }\n        if (typeof fileref != \"undefined\")\n          document.getElementsByTagName(\"head\")[0].appendChild(fileref);\n      }\n\n      function getParameterByName(name, url) {\n        if (!url) url = window.location.href;\n        name = name.replace(/[\\[\\]]/g, \"\\\\$\u0026\");\n        var regex = new RegExp(\"[?\u0026]\" + name + \"(=([^\u0026#]*)|\u0026|#|$)\"),\n          results = regex.exec(url);\n        if (!results) return null;\n        if (!results[2]) return \"\";\n        return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n      }\n    \u003c/script\u003e\n\n    \u003cscript type=\"text/javascript\"\u003e\n      let families = [\"Roboto:300,400,500,700\"];\n      if (\"%MOCK%\" === \"true\") {\n        // This is required to circumvent CORS errors when fetching fonts from fonts.gstatic.com on Playwright's Firefox browser in mock mode.\n        families.push(\n          \"Be+Vietnam+Pro:100,200,300,400,500,600,700,800,900,100italic,200italic,300italic,400italic,500italic,600italic,700italic,800italic,900italic\",\n        );\n      }\n      // This preloads all woff2 font files for each of the above weights, rather than fetching\n      // them dynamically, as we do with @import url(), e.g. in css/vendor/eventshopper/_fonts.scss.\n      WebFontConfig = { google: { families } };\n    \u003c/script\u003e\n    \u003cscript\n      async\n      src=\"https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js\"\n    \u003e\u003c/script\u003e\n\n\n\n    \u003cstyle id=\"antiClickjack\"\u003e\n      body {\n        display: none !important;\n      }\n    \u003c/style\u003e\n    \u003cscript type=\"text/javascript\"\u003e\n      if (self === top) {\n        var antiClickjack = document.getElementById(\"antiClickjack\");\n        antiClickjack.parentNode.removeChild(antiClickjack);\n      } else {\n        top.location = self.location;\n      }\n    \u003c/script\u003e\n\n    \u003c!--[if lt IE 9]\u003e\n      \u003cscript\u003e\n        var isIeOld = true;\n      \u003c/script\u003e\n    \u003c![endif]--\u003e\n\n    \u003ctitle\u003e\u003c/title\u003e\n    \u003cstyle type=\"text/css\" media=\"screen\"\u003e\n      html,\n      body {\n        font-size: 14px;\n        width: 100%;\n        height: 100%;\n        margin: 0;\n      }\n\n      .top-level-spinner {\n        width: 100%;\n        height: 100%;\n        position: absolute;\n        background-color: white;\n        z-index: 100;\n      }\n\n      .top-level-spinner \u003e .top-level-spinner__img {\n        width: 64px;\n        height: 64px;\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n      }\n    \u003c/style\u003e\n    \u003cscript type=\"module\" crossorigin src=\"./js/main.vEtVJqu1.js\"\u003e\u003c/script\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/consolidateQueryParams.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/loadSkinUtil.ZM3V0qg0.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/nivo.C9XwLknu.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/Tools.B1_zJlFx.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/loadSkin.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/LookupSupportedLocales.yiA4EwsW.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/polyfills.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/index.B-RbEckT.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/apiPreloader.js\"\u003e\n    \u003clink rel=\"modulepreload\" crossorigin href=\"./js/bundle.js\"\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003cnoscript\u003e\n      \u003cdiv class=\"container\"\u003e\n        \u003cdiv class=\"well well-lg\" style=\"margin-top: 100px\"\u003e\n          \u003ch1\u003e\n            \u003cspan\n              class=\"glyphicon glyphicon-exclamation-sign\"\n              aria-hidden=\"true\"\n            \u003e\u003c/span\u003e\n            JavaScript is required by EventShopper.\n          \u003c/h1\u003e\n          \u003cp\u003e\n            \u003cstrong\n              \u003ePlease\n              \u003ca\n                href=\"https://www.google.com/search?q=enable+javascript\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                \u003eenable JavaScript in your browser\u003c/a\n              \u003e.\u003c/strong\n            \u003e\n          \u003c/p\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/noscript\u003e\n\n    \u003cdiv id=\"top-level-spinner\" class=\"top-level-spinner\"\u003e\n      \u003cimg\n        class=\"top-level-spinner__img\"\n        id=\"spinner-img\"\n        alt=\"Application is loading\"\n      /\u003e\n    \u003c/div\u003e\n\n    \u003cscript\u003e\n      // Set spinner image source after base tag is established\n      document.getElementById(\"spinner-img\").src = \"img/spinner.gif\";\n    \u003c/script\u003e\n\n    \u003cdiv id=\"main\"\u003e\u003c/div\u003e\n\n    \u003cscript\u003e\n      // Use this variable to invalidate cache throughout the application.\n      // window.TLA / TLA_from_url / TLA_from_config are resolved earlier in\n      // the async loader in \u003chead\u003e, after TLAScript.js has finished loading.\n      window.CACHE_BUST = \"9.52.6\";\n    \u003c/script\u003e\n\n    \u003cscript\u003e\n      // Because visa checkout's sdk has the nasty habit of defining enumerable functions\n      // on Array.prototype and we don't want for (const i in array) to iterate over \"contains\"\n      Object.defineProperty(Array.prototype, \"contains\", {\n        value: Array.prototype.includes,\n        enumerable: false,\n      });\n    \u003c/script\u003e\n\n    \u003cscript\u003e\n      if (\"production\" === \"production\") {\n        (function () {\n          function loadScript(url) {\n            var e = document.createElement(\"script\");\n            e.src = url;\n            document.body.appendChild(e);\n          }\n\n          // Do not load the app on incompatible browsers\n          if (\n            /\\bMSIE\\s?(6|7|8|9|10)\\b/i.test(navigator.userAgent) ||\n            (!!window.MSInputMethodContext \u0026\u0026 !!document.documentMode)\n          ) {\n            const locale = getParameterByName(\"locale\") || \"en-US\";\n            let message;\n            if (locale.indexOf(\"en\") \u003e -1) {\n              message =\n                \"  \u003ch1\u003e\" +\n                '    \u003cGlyphicon glyph=\"exclamation-sign\" /\u003e' +\n                \"    This app requires a modern browser.\" +\n                \"  \u003c/h1\u003e\" +\n                \"  \u003cp\u003e\" +\n                \"    \u003cstrong\u003e\" +\n                '      Please install a modern browser like \u003ca href=\"https://www.firefox.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eFirefox \u003c/a\u003e' +\n                '      or \u003ca href=\"https://www.google.com/chrome/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eChrome\u003c/a\u003e.' +\n                \"    \u003c/strong\u003e\" +\n                \"  \u003c/p\u003e\";\n            }\n\n            if (locale.indexOf(\"fr\") \u003e -1) {\n              message =\n                \"  \u003ch1\u003e\" +\n                '    \u003cGlyphicon glyph=\"exclamation-sign\" /\u003e' +\n                \"    Cette app nécessite un navigateur moderne.\" +\n                \"  \u003c/h1\u003e\" +\n                \"  \u003cp\u003e\" +\n                \"    \u003cstrong\u003e\" +\n                '      Veuillez installer un navigateur moderne comme \u003ca href=\"https://www.firefox.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eFirefox \u003c/a\u003e' +\n                '      ou \u003ca href=\"https://www.google.com/chrome/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eChrome\u003c/a\u003e.' +\n                \"    \u003c/strong\u003e\" +\n                \"  \u003c/p\u003e\";\n            }\n\n            if (locale.indexOf(\"es\") \u003e -1) {\n              message =\n                \"  \u003ch1\u003e\" +\n                '    \u003cGlyphicon glyph=\"exclamation-sign\" /\u003e' +\n                \"    Esta aplicación requiere un navegador moderno.\" +\n                \"  \u003c/h1\u003e\" +\n                \"  \u003cp\u003e\" +\n                \"    \u003cstrong\u003e\" +\n                '      Por favor, instale un navegador moderno como  \u003ca href=\"https://www.firefox.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eFirefox \u003c/a\u003e' +\n                '      o \u003ca href=\"https://www.google.com/chrome/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eChrome\u003c/a\u003e.' +\n                \"    \u003c/strong\u003e\" +\n                \"  \u003c/p\u003e\";\n            }\n\n            document.body.innerHTML =\n              '\u003cdiv style=\"margin:100px auto 0 auto; max-width: 600px;\" class=\"well well-lg\" data-reactid=\".0.0.0.0\"\u003e' +\n              message +\n              \"\u003c/div\u003e\";\n            return;\n          }\n\n          // See https://browser-update.org/ for details\n          // Notify recommended set of browsers and adjust it automatically over time:If a browser is no longer supported by the vendor or has security vulnerabilities, it will be added to the set.\n          var $buoop = {\n            vs: { f: 38, o: 31, s: 8, c: 31 },\n            text: \"We noticed that your web browser (%s) is \u003cb\u003eout of date\u003c/b\u003e. \u003ca%s\u003ePlease update your browser\u003c/a\u003e for more security and the best ticketing experience.\",\n            reminder: 0,\n            reminderClosed: 24,\n          };\n          function $buo_f() {\n            loadScript(\"//browser-update.org/update.min.js\");\n          }\n          try {\n            document.addEventListener(\"DOMContentLoaded\", $buo_f, false);\n          } catch (e) {\n            window.attachEvent(\"onload\", $buo_f);\n          }\n        })();\n      }\n    \u003c/script\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n","signals":{"network_status":"ok","content_type":"unknown","redirect_type":"none"},"hints":[],"final_url":null,"redirect_chain":[],"http_code":200}