{
  "lighthouseVersion": "13.0.3",
  "requestedUrl": "https://palmbeachpost.com/",
  "mainDocumentUrl": "https://eu.palmbeachpost.com/",
  "finalDisplayedUrl": "https://eu.palmbeachpost.com/",
  "finalUrl": "https://eu.palmbeachpost.com/",
  "fetchTime": "2026-04-22T22:00:27.441Z",
  "gatherMode": "navigation",
  "runWarnings": [
    "The page may not be loading as expected because your test URL (https://palmbeachpost.com/) was redirected to https://eu.palmbeachpost.com/. Try testing the second URL directly."
  ],
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/147.0.0.0 Safari/537.36",
  "environment": {
    "networkUserAgent": "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36",
    "hostUserAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/147.0.0.0 Safari/537.36",
    "benchmarkIndex": 2028,
    "credits": {
      "axe-core": "4.11.2"
    }
  },
  "audits": {
    "is-on-https": {
      "id": "is-on-https",
      "title": "Uses HTTPS",
      "description": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. This includes avoiding [mixed content](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content), where some resources are loaded over HTTP despite the initial request being served over HTTPS. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more about HTTPS](https://developer.chrome.com/docs/lighthouse/pwa/is-on-https/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "Insecure URL"
          },
          {
            "key": "resolution",
            "valueType": "text",
            "label": "Request Resolution"
          }
        ],
        "items": []
      }
    },
    "redirects-http": {
      "id": "redirects-http",
      "title": "Redirects HTTP traffic to HTTPS",
      "description": "Make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developer.chrome.com/docs/lighthouse/pwa/redirects-http/).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "first-contentful-paint": {
      "id": "first-contentful-paint",
      "title": "First Contentful Paint",
      "description": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/).",
      "score": 0.3,
      "scoreDisplayMode": "numeric",
      "numericValue": 3694.1915899999995,
      "numericUnit": "millisecond",
      "displayValue": "3.7 s",
      "scoringOptions": {
        "p10": 1800,
        "median": 3000
      }
    },
    "largest-contentful-paint": {
      "id": "largest-contentful-paint",
      "title": "Largest Contentful Paint",
      "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
      "score": 0,
      "scoreDisplayMode": "numeric",
      "numericValue": 10531.071851750492,
      "numericUnit": "millisecond",
      "displayValue": "10.5 s",
      "scoringOptions": {
        "p10": 2500,
        "median": 4000
      }
    },
    "speed-index": {
      "id": "speed-index",
      "title": "Speed Index",
      "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
      "score": 0.83,
      "scoreDisplayMode": "numeric",
      "numericValue": 3823.3730129881133,
      "numericUnit": "millisecond",
      "displayValue": "3.8 s",
      "scoringOptions": {
        "p10": 3387,
        "median": 5800
      }
    },
    "screenshot-thumbnails": {
      "id": "screenshot-thumbnails",
      "title": "Screenshot Thumbnails",
      "description": "This is what the load of your site looked like.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "filmstrip",
        "scale": 3000,
        "items": [
          {
            "timing": 375,
            "timestamp": 5991781174973,
            "data": "data:image/jpeg;base64,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ApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSmR6igUpkeopkeooFKZHqKZHqKBSmR60zQKUpQKUpQKUpQQ7xUuk606cjO2yTIjvOz40dS4zSXXdi3AlQQlQIKsHjjvUTj681DY4DrF3gCTJYYkXAuT3ExXVxEL2o9xKSOqefd4HbzNT7W13tNjsnt99YD7DLqFNNhrqKU8DlG0fvAjIPljNam/XzTEpGnnr3alyXJ8hLUNMq3lSmVqWE5VuHue8U8+flmgjty8WXIMyTGVaMuMqcQQXCDuLe+MCMcFzkfDHnXcnxPmKmXdCbEpUWCmUnrBasdRhJJCspwAoggYJPbIrZy9T6KVd7kidEZDjRU49Meh/q3lxhkhKyPeW3/AEeVZljkaTvvzpdE2qLGlNpLU9U6Gll4IUnP6wqGdpSc5JwRQRC465v1vvibk/EipY+YRPdgKnkISnqnlPu+84U4GMD0zX3VXiU+61fbbEZDOYMpUWbHdWFocaQFEKygAKGf2VHBGKnLidHXeRHSoWGfIQnpsJyy4sBvnan/AEc5wO2ajYv2kpUxTjmnGFSJhipdcLDKyv2vegblAndwghXJ4PnQYbt4uQ0L4hSROk+0Q3HBHc6h3NYYbI2ny5JPHrXeNZXV+9QrbIhpj3OPLUypDUsll3MQuo3nZkjnkY4IzzUqt03Tk21Npdat0Zu7lWYrymsyT9E5AJCzhIHn5CsuMNOSrwsxfml66tqLiumW1PJUkdMqOOQQPdz5dqCB2nxAvcfTGmpt1hwnk3BG5+b1VhtvJQEhYS2dqiVHuNox35re6i1HebbrtENlEJVrRaX5qkLcKVrUgjt7p58sZxgk+QFZGomdJ6eEESbFFekuPKVEjRYCXHVOfSUpCQOOwJPHYV8Tf9NX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"
          },
          {
            "timing": 750,
            "timestamp": 5991781549973,
            "data": "data:image/jpeg;base64,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zGvY+cM6Q7teHN7ctB2H35OM8YkiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg99jfZNjfZVIgp2N9k2N9lUiCnY32TY32VSIKdjfZNjfZVIgp2N9k2N9lUiCnY32TY32VSIKdjfZNjfZVIgp2N9k2N9lUiCnY32TY32VSIKdjfZNjfZVIgp2N9k2N9lUiCnY32TY32VWUyEFOxvsmxvsqkygp2N9k2N9lUiCnY32TY32VSIKdjfZNjfZVIgIiIId4qXWutGnKaa2VNRTTS19NTukp4WyybHyBrgxjgQXYPAx3UVpte6gstBLBd7f8VU08FRcHS1r20kr6Rj9rTsDSOqefL5fT3U91tdbRZLJ8ffoRPTwysfFGIuo50wOWbB/aBGQfTGVh7/AHrStazT818tpqZK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"
          },
          {
            "timing": 1125,
            "timestamp": 5991781924973,
            "data": "data:image/jpeg;base64,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"
          },
          {
            "timing": 1500,
            "timestamp": 5991782299973,
            "data": "data:image/jpeg;base64,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"
          },
          {
            "timing": 1875,
            "timestamp": 5991782674973,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHyAPoDASIAAhEBAxEB/8QAHQAAAQQDAQEAAAAAAAAAAAAAAAQFBggCAwcBCf/EAFYQAAIBAwMBBAgACggEAgQOAwECAwAEEQUSIQYTMUFRBwgUIjJhcZEVFiM3UoGSs8PRQlNVYnKUocEkM4KxNDUlQ0XSFxgnVGRzdHWDk9Ph8PGEoqP/xAAaAQEAAgMBAAAAAAAAAAAAAAAAAQQCAwUG/8QAPBEBAAEBAwgGCAUEAwEAAAAAAAECAwQREhUhQVNxgaEFEzFR4fAUFjNhYmOR0SM0UrHBBiIyokJD8UT/2gAMAwEAAhEDEQA/ALU0UUUBRUWk6j11ZGVeitWdQSAwu7PB+fM1PGh395f28kl/pNzpcittWO4likLDHxAxswx4cnPFA40U3a7q0ejWM13Pb3EsEMLzyNCFOxUGTnJHPkPka1W+uRS6mLGa3uLaVojKrTbArDKjghjz7woHaik93dx21pcT4MogRnZIyC3Azjkjmm7Ruo7HVCVj7SCQRRT7J8KSkoJQjBI52njOeKB5opvsNWtrxJWDdiY53gKykAlkbaSOe4kcVjrOs2+lab7dKsk8HaJF+Q2scu4Qd5A7yKByopBpOrW2p2zTQ7o9kzwOkuAyujFWHBIPI7wSKV+0Q4c9rHhPiO4e79aDZRSHS9Ug1JZjDlWileIqxGSVbBIwTwfCm4dVWI1WSwmjuIXS79i7R1XYZTH2gAIJPK85IHlQP9FaJ7y2t4WlnuIo4lUuWZwAAO8/St6kMAQcg8g0BRRRQFFFFAUUUUBRRRQFFFFAUUUUBRRRQFFFFAUUUUHKbjoiZ55H/Ebp99zE7m124BPPeR2HFTLoXSH0bT7iF9HstJLy7+ytLx7lX4A3FnRSDxjGPCpJRQN3UmmtrGgajpqTLAbuB4O1Kb9m5SM4yM9/nTXrnTUuq7i11DG7WD2W7sC20synePe/u93+tSWigj2l9PPY6TPaG4ikleF4FuDGd+GLHLe9z8XhjJ54zTde9FtJ07b6XaXNrbFbU200yWuGlO1VV+GBGNvdk548qmVFBCLvoia69tMt/b7rmOZM+zH3DJKsmfj5wVx+ult/0rLd6NqVgLyJBeXy3gJgJVAHR9m3dzkp35Hf3VKqKCIWnRz2+oTXLXkckMxlHsZiIhiSTs8qgDccx5PgSx4FYR9I3g1WO/k1KGR0MZ7L2chG2GXAIDYAxKeAOCqnnnMyooI3pvTcllqEFz7RB+TuJ5iqQFdwkAG3O44xgfXA7q0S9IRzXup3U0sDT3V7DexP2HvRGMRjZnOSD2fOMfEaldFBCb7oU3T38g1Bo3vBMJNqEriRXG3aWxgF9wPBzu594gTOBWSFFfbuAAO0YH6qzooCiiigKKKKAooooCiiigKKKKAooooCiiigKKKKDSyKPF/2z/OtZ2eb/tn+dRb0odSz9J9FanrNpDHPPbKmxJCdpLOqc4543ZqvLesP1Mf/AGbpP7En/v0Frtyeb/tn+dBaMd7P+2f51TzqL029Q67p3sVxaWEUJkSRuxMqFgpztJD5wcc4waS33pf1u50S00tLKwhgtZop42XtXYNG4cZLuSRkeNBc3cnm/wC2f50bk83/AGz/ADqoR9PfWHs8MYGnCRDlpewOZB5EZwP1AVp1T05dX30V1Er2dtFPGYwIYiDHnvZWJJz3/eguHuTzf9s/zo3R/pP+2f51TW79NXVtzo1rYdtBE8Do5uUQiSTYcgNzjHAzxzjnvNY2Hpk6ksr3UZ447Blv3Ms8TREqzbFTI5yOFB+9Bczcn6T/ALZ/nRuTzf8AbP8AOqd6f6cOqrCGzgtk09bW2jSIQ9gcMFGO/Oefka3j099YdrI3/o/a27anYHCZxjHOTjwz585oLe7k83/bP86Nyeb/ALZ/nVOtR9OHVt9okunyPaRySDa11EhSXHywcD6gUpi9PfV6SwMy6c6RptdDCcSH9IkHIP0wPlQW8LRjvZ/2z/Ojcnm/7Z/nVNupfTR1Lr9m1ncRWENo+3fHFG3vFWDA5LE94FOMXp/6sS7kleDTHiYe7CYmAT6ENn7mgtxuT9J/2z/Ojcnm/wC2f51TiH02dUWvb+wpp9sJ53uHCwZyzEeZ+X+p+WNXUnpg1zqFrL261tEjtizbLd5ohIWGPeKuDx3jmguZuTzf9s/zoDRnuZ/2z/Oqd6Z6cerbC3tIN9pcQ28QiInjLNLj+kzZzmk2j+mXqnR9NtLDTzZJa267VVodxPLE5OfHd/oPnkLm7k83/bP86Nyeb/tn+dVKtfWB6qigRJrXS53HfI0bgt9QGArb/wDGF6m/s7Sf2JP/AH6C0mrarpuj2L3mq3sdnaIQGmnmKKCTgck+dM9v150jchzb9R6dIE+LbeA4/wBaqr1x6Xdb6w6dn0fUbOwit5WRy0KuGBVgR3sR4VDdP1uSxiiiigiaJDuKMTh+c885qY97fd6bGqqeuqmI90YzK8kPV/Tc3/J1uzk/w3Of962XHVGgWwzcatbRDze4x/v8qp5Y+kvUrJAlvp+mogVkAWNhhW7x8XPcPtWjWfSPrWqrKk4t0ikRUKIpxhc4xknB5NQUdTVaRFWMU81y7LqfQb7tPY9WtZ+zGX7O4ztHz5rK56j0S1bbcapbxNnGHuMf71Suy681axSBLJYIY4fhUKSGJGCW55zWzVfSBqmpXAmmht0YAA7NwzgAeJ+QrHGe5ERZTbxTMzFnj268Ny5w6n0E2z3A1a1MCfFJ7RwPqc0k/HnpPIH4w6fk/wD0sfzql03V1/LaRWzpH2SEkhSw35GMNzz/APua1fjLKmOwsLCLCsn/ACixIJHmT5UiZw0xpZxF3poxqmZn3YcO1eDS+qen9WvDaaZrFpd3IUsYobncwA7zgGnnKfpP+2f51R/pz0iX3T+u/haw07T1uezaIjYwQhseAb5VMB6w3Uw/9naT+xJ/79ZNVpkY/h44e9bNVQ+L/tn+dZ9mvm/7Z/nXJPQb6R9Q68j1capa2tvJZNFtNvuAYPv7wSe7Z/rXWQxo1uYesKf/AJKdd+kP7+OqZ1cv1hvzU659If30dU0oCiiigKKKKAooooCiiigKKKKAooooCiiigKKKKAooooCiiigKKKKAooooCiiigKKKKCw3qknB6n+tt/FqyIPFVu9Ur4up/rbfxasjQcz9Yb81OufSH99HVNKuX6w35qdc+kP76OqaUCrTdPvNUvY7PTbWa7u5c7IYULu2Bk4A5PANbfwRfjTLjUDbMLO3nW2lckDZIwYhSO/OFbw8KlHoz13SumRrGqag9w1/2AtrOG2bs5ffPvushVlXCjHIyd3FT616v6WE+tSWmq2dmmq6jaai0V5p73Kxjs27eMjYRu3MQGA5zxjJIDhVZwRSTzRwwI0ksjBURBksTwAB4muxfjL0OdFvUto7S3tWF8H0+Sw3z3DuzG3ZJdpCBQV43DG08HNKB1Z0jp2p/hjTbq2M02oadcC3WwIa3ijiKTLkrtznJ90+RHPcHHbXTL67uJ4LazuJZ4EeSWNIyWRV+IkeAHj5Vjd2F3ZxW0l3bTQR3MfawtIhUSJnG5c94yDzUwuupfYvSx+HrTUYLmAXgkNxFAYkaInDKU2qfhJU8c89+anNv1r0xedQatNdXVhBBHqMS27XGnNOkumRgqIIlKkxkjnkL394oOG1usrW4vruG1s4ZJ7mZgkcUalmdj3AAd5rrA1zoqTSJp4pLe2m/BM9lHZSWjM4lNxvRt4UrnZxnOeKb73qzSZvTTpurQNa2/T9jfRNFJb2vZARBgSxUKGJzk8jNBAta0PVdDmSLWdOu7CVxuRbmFoyw8xkc1ovrC6sVtmu4jGLmETxZIO5CSA3HzBrqdt6RtMmuL+KSxtILKzsbz8HLcq132lzI6MpO8HHw8DAA5z31npfUvR93c6da677Oti+lWzXU0dmdyXkU7SFeF/pqSpI45HPFBx+iuyL1R0fe9F6guqeyvqF2JZxarZhGhl7fcqI6xd2zjJf5YApfaXOj9S9ZT2do+nXfTNzbTrL7Ppot30uDCsju5VclWXBOT48+9QcMop46w1OHWOp9SvrSCO3tZZj2ESKFCRjhRgcZ2gZ+dM9AUUUUBRRRQFFFFAUUUUBRRRQFFFFAUUUUFhvVK+Lqf6238WrI1W71Svi6n+tt/FqyNBzP1hvzU659If30dU0q5frDfmp1z6Q/vo6ppQFFFFAUUUUBRRRQFFFFAUUUUBRRRQFFFFAUUUUBRRRQFFFFAUUUUBRRRQFFFFAUUUUFhvVK+Lqf6238WrI1W71Svi6n+tt/FqyNBzP1hvzU659If30dU0q5frDfmp1z6Q/vo6ppQP/AE10vda9a312l1ZWNjZbBPdXkhSNWckIvAJJOD4eHNPTeji/bp6LU7S5ivGlTdHDboXLn2gwAKfHJGQfnTL0p1FqmjNcWmmRQXcd/sSS0ntxOkrA5T3CDlgTx9adrb0h9TWkUVlavDA8TBY1itlVkYT9sAFAwPfPdju4oPT6NdfXRrm8a3Ant7jsZbfevuJ2RkMjPu2hQFxye+td/wCjnqCCF7iztGvLNIUmeZCq4zCspXaTkkKwPApRL6QuorAX9g9rZWcVyxN3aCyWJXJQoQycd4Ofrg+FeR+kHqd7NXjEbW9rhTItvlU3W/s4BPzQYHz5oGTV+kNe0fTYb/UtNlt7WZ1jRmZSS7LuVSoOQSozgj/vS0ejvqvtxCdGmWQxtL77ooCqVDZJOAQWXIPIzyKcesvSNc9SaFYad+D4LSWCZLme6RsyXEyR9mrngY4+vhzWi99JfUd9FcRSy2oS4SRZljt1TtGkKF5Djvc7F5+VA36d0VrN8NeCwxQS6Im+7iuJRGw97btAPeeD8uO/JALl1F6MuotI1lbGG0e8jkz2VxHhUfCB2JyfdAB/pY86RQdWa3c6trl5HDDcz6xE4vIzbiRWXIYsF8Mbc58MU4RelTqiG9a6iuYElaZpnxCMMWjWMgjy2ov6xmga7LpQk6rDrGo2ukX1gcG1uyFeQ7HbC88/CB/1rT1r/om6j0gQ7PZL9pJuwK2rPlG7PtOd6qMbeSwyB4modrmrXWt6vc6lfuHurht7kDA7sDA8sAVM39JvWUskWrNJuWCdjHObfKRl4wjRAngKVUHb58igbT6O9fNlE6Wcpu2uJYHtyAvZiNEYuXJ27SJF5zjkc81qsfR91LdzwxnTXthLdC0D3LLGBJu2ngnJAPBIBp9k9L2vIts9isVvdK8slzK3vi4MiopG0/CoEaYA5yM5prv+u+pJ4LS4vkgfFybu0upbRS6MJA5EbkfDvHIH0oEen9E6pe9ZT9NLJaRXsBk7WaSX8jGqAksXUHAwPLx5xTtY+jPUJ9P1K4uLuG3lsJ7u3liKk+9bxCRsHyOcCmeDrbWLXVtW1Owkhsr3U12TS20YjKjcGOzHw5IGfOnCf0k9R3KXMcj27Ndb+1IgG6RpIVhZj8yqj9fNB5a9Ayan1RFomiazpt/I8M05njZmRRG7rj3AxJKoGAA5DitWqejnqOw1SSxW0S6dJex7SGQBS/Y9sR720giME8gd2O+mnp/WNQ6U1mS4t4Y1u1SS3khuodw2sNrKyn5cVJh6TOq4VlumS1EF0+I2ayXYjLF2REZxwQjAHB7j86DRP6L+ooBeF/YP+FsI9QkAukzsfGFH94Z+nHBORlAvo96qaSNPwNOrPG0o3MigKoBbcSfdIDA4ODg5xWY6/wBZyS62LlrBdNkLWyntIl27d3mw2rg/Kt936S+o7u3nhmmtdlxDLFPst1UymRAjOxA5faoGaBqtuj9eudQ1Kxi06T2rTV33cbOq9kM4ySSBj6U56b6NOqL26WBrAWjNbyXAa5kVFwihipOeGwy+6cHkE4HNIL/rHVr651y4neHtNZRI7srHjIUqRt8uVFO9z6VOp7u6s57u4t55LaOSLEkAZZVdNjbx3NlaBFpHQOt35t5JYOwtJ0kdLgFZFykTSbSFJIJVTjOPOsW9HnVQktk/A8xNznsyHQjhO05O7C+7zzjil8fpT6ki0y2sInsktbdCkaJbKuAY3j8P7rt/oa1RekvqGOdJg9qXWVJxmHuZYexB7/0P9aBv0vorV9RtNbuI1t400fHtSyTqGBLYwvPJHJ+eOMnALjr/AKM+pNK11tOisnu1JfsrhNoR1QDcxJPugbh8WO8edNsXWWqpda7OxtpW1rPtayQKVY7twKj+iQeQRTxZ+lHqqPUTPazw9vNNLIyJAD2jShFZceR2JgDxFBC9QsrnTr2ezvoXguoHKSROMMrDvBpPTprUupatq2pX1/DM13vMl1+TI7M5x7w/ojOBz9Ka6AooooLDeqV8XU/1tv4tWRqt3qlfF1P9bb+LVkaDmfrDfmp1z6Q/vo6ppVy/WG/NTrn0h/fR1TSg6B6Jeounenb2S6162Ju0ubea3uPZhcbERiXVQWG1j7uHGSMVJ7Lrfoa0l0i+t9JddSg1CO4nle2Rmx2pZ3DZySVPCnuIBGCM1xiig7Ba9Y9E3FobvXdOa81aTUFupP8AgIgpQXAJXcOWBi4KnjPh40qs+vOj9EFtHo1tK0SS2ckpayRO1Mc8zOxXJG7Y6AHv4HdiuK0UHStF6h6VTrHqO91u3S7sL3JtnGnoGQk5ysZJRT4Zwc9+RT3onW/Q2kTdN3VhpDQ3Vqyi6ZrVGdR2TK5DZ9/LkNzyPDHdXGqKDsEfXnT34N02CZQWs4dRt2EWmxxB+2EnZuNp90e8uV7geecUstNf9H+sa92a6dp2nruuVt55rJEhiVo07NpEyA5DiTg+YridFB1K61joq09JHUE4s7aTSHjjjsZIrNZYY3URh27EkAhtrgHPBOeaRdXdZaRqHTmm6NpFkYNNt9Subl7YxqrdkzgxqH787dwP6u/ArnVFB12/6s6DSaabT9EgaX2adYO109AiszxmJWTcwYqA4Lnk5pzi6n6G1S9tLOW1t06es0vZJIriMI6B5hJGIO87jjaQMcE1w+ign3TXUPTajqeXXNMt0lvstZLDZo4tzh8Km73VGSvhnA7x4v8ArfXnTd7bTXK6fazai9lY28Ql02MC3aMbZtrA88fCcDHA8BXIqKDr2oda9JNqR1KwsVS6XV2vH7bT0leeLtlZdshb8nhARtwQT96cW6s6V1/VIrS+a2bSjdX9xdPc2y2+yKZYtrRAbvyoZD3cnB8zXEKKDovT/VPTUOva/falolmYLq4gNnbexpIkMImHaAA8A9lkZHead4+pPRrHp1rGdAmkaK73SIYgGaPtid2/OT7hA2E448O+uR0UHWB1H0F+DtZjuNOW4vptxgmj01IEYdmAqhQxMZD5OVIz457qWfjV6OzqhlOkots9l2TKmmx+5Ju70BJ5xjJbcfI1xuig67H1P6P7bTNOMWkrdahb20qubjT4wjuYMKGC/FiQZycnBPNMvVmq6C/QelxW1jpQ6jvNpu5LOJQsUSFivcMI7bwGA/QGa55RQdYi6k6EF1buNOjjhFp2caNpaSezy/k8s5L/AJfOHwTjG6tlv1X6P4IZXttEkglFy8sSm3VpAe2Vo3Eu7KhUBHZgEHPfXI6KDtGsdddFXeq6lcx6dKbS+iCzW4t1WSR/bFkdmkzk7owcZ+HuFabvqj0dPd6kYNICwzWmyKQWEe9ZMuRhSdi4BQEgZOO/IyeO0UCrUUtI7nbp88s8GxTvljCNu2jcMZPAOR86S0UUFhvVK+Lqf6238WrI1W71Svi6n+tt/FqyNBzP1hvzU659If30dU0q5frDfmp1z6Q/vo6ppQP3TGrWWnrcR6pa+1QM0cqRYBBdSQQfIbXY/ULW/VNQ0G7urB4bS6jWNsXDsdzOi8IMZx8IXPd40i0LR4tTR2lvorbbIEAfxyrHPeP0cfUilmldOW+odoRqKxKk5hO9ADjdGN2N399j/wBBoHO31fpS21GG5trC6j7GQSRnZkjEu7kF8H3MAfPmmnTLvQI7MJfWU0lwUYGRecP+UwcbgCOY+PkfoV9r0hBctGE1FVBQux2gnASR8kZ4ACAHk8sKQ6z05Fptj7QNRimftCgiVeeNvJwTjO44/wAJoFEGq6Hb9R+0W9m8em+zTRbTEHcu8bKCQzEcMQcgjup5TqnpiPpxLGLSpxcrZyQF3jjbc5WXBJzn4nRs+GwAeFIZuk7EW90RqMcbxzHa597Me4rgAHLEYDEjwzWD9J2UKMzamJiCwAUKuMCbn4j4xLjz3Cg1xzdMQWtul5aySXBtss8HI3FFxu9/vDbj3Dy5rcdU6SeZhJpUq2+5wqxqQ2zMu3ntO/mLPf8AC1ZXnSmnyXaey6kkELyiLa/vsMzSIGODwMID+vwzTHc6IqXNkIboPa3BjU3DrtERcnAYZODwT+qgXXN9004kWHTpowYZFVskssnGxuWxj4sjHGeK9g1DptdHjhk0+Y3u1d77cgsI3GQdwOCxQkfI+GBWi/6egtdIN6mopK4AYwhQCB+TyD73f+U7v7ppSnSts92IfwxAoOCrMoAw20qT73G5WUgeeR4UGjU73p2SxuksdNmjuWK9g7MfdHjn3jk+Hdzml0F/0cscCS6deSEBRK23BJDHJGH8V2j9R+tN9709DbXNlAL9ZHuImlOEGFwpO34uWOMY45NL9X6X063vbgQ6tEkQDyxoRu9xWAIDZwW25OPHGPEUCVNR0K41S4uNTgupoTHCiKihSSsYDZ97jkCsIL3p5QPaLGSTEZBCApufdwc7jgbeCPPmt8/TFqLmRU1ONIxGZQdu/AD7dpwfix72Md1JNA0e2vVvIbyYW1ynwNM22Me6xOSMkHgYHceRkEig3zXHTtx7PHa2k0MpuoyzSH3Oz4DKTnuzzn58k99Kbq96VillWPTZHkVpBuBPZn8nhMDfnG/J7+7n5V6/Stl7ET+FYI5YppEd3U+8AsRHu94AZmBbkVqtumbSWKTN+yyLK8ZLKoACmMBgN3OQ5x9KAS/6VErMdNuSrA4U8hT7mP6QyOJPn7w5OKyvtT6dTTr2PSra7inuInT3kG3mSN1HxHgBWGe/kVq1TpQWdvayRXvbm4mWNPyeFClnXJbJA+AcfPxwayuum7J7uNrPUESznMPZFiGKhgQxbuwAykd3iO7NBui1bprsbNJ7S5dbcqRH2YIxuDOCd2Tnny7/AAps1GXRyLO400zRTQsglRo8bzySy4Y4xjGPmKXWHScF0kTHUxGXi7VlMX/L/KiP3jnAxuyflWqy0Cyk1LULaW8/JovZW0hIXtJipZc942nGM58QaBwn1zpy6aQXVtdvG9wZtoQLwXJPc3ftIGf/AO6R6VqugxrPBf2Mz2TXYnSJfeKpjGM7hz98j717qGgWJm0yG2uEgaeNmkZ33AEQRyYx5lmdR8+PCsB0vAUWRNSjddju2VC/CoYDls85x3d9AQah0x8NzpU+1sZMTEFfhzjLHOSH+gI763W+qdMiE9pp06s27cgXcp94FedwPdkH6Z8eFN/0npqxStb6nEgEkjjd7zCMOEC7QTk9758V5puh6atn1K5tH1JdsaxmOVVGG3MASQTkY8u+gUao3TYt9MuLWACJrjdcxBj2hj3tkAbjjC7RyR3jGeTSifWOl7giSe1unuDBDCXMK4XbD2bEDf5hSM//ANpLLpq09qsGuL0PbzyRBkAAYK5bJbDHAAA55xuFe/itbG0Z/wAIosih/AEPgZGOeAfA/wClAwa1JYy6i76VHJFalEwsnfu2AOe897bj+vwpDTt1LpH4F1H2XtWl93dvaMoD7xHHmOO/9XhTTQWG9Ur4up/rbfxasjVbvVK+Lqf6238WrI0HM/WG/NTrn0h/fR1TSrl+sN+anXPpD++jqmlAtstLvL6CSa0hMqRusbYIyCQzDj6I32pXD05qU1vJIkHvoyKYScPh1ZgceWFz+sHupLpurXumLILKbsxIQWGxWyQrL4g+DsP10og6i1SA5iuVVvdBbskJO1SoycZOFYig3WOg6ut0QkUls3ZuTKSQNuzJ5HgQwHl7wHjWqDpvVZpez9jdOQCX4AyxX/uCMDng17+M2r5BF2RhDGMRpjaQox3d3urx8hS2z6o1aKzupGUXAZ1zPJEGEb5ZlPdgHJZh3ZIJOaBqutF1G0t3uLi0ljgQqC7DA94ZA+pHOPLmsrzRNRsyvb2rjdtAIwQd3d3frH1BFbLvqHVLuKWK4ui6SxrE/wCTUFkXG0ZAzjgfYVqu9a1C7SNLm4Lqm3aCi/0e7w58/qSfGgzXp/VGPFo3j/SXw3Z8f7jfas5OntYiTEljcKu4AjHc2AQD5Ngjjv5pRB1ZqqsxnmWcFWUB40OCVKg93huPHdzWdx1JreoNEkMkvvlF2xoGMkoVV3d2S52j5jw76BG+galDdxwSQiOdkklCmRchYwxcnnjG1vtWWtaJqdjc3TXkTyCNyHnB3K2G25B+vH6+a1Sa3qM14Lh5g1x+UXd2S8iQEOMY5B3Nx8zSi/1XW74SWV2ZpN2ZWh7AA95ctgDI7yT8vkKDD8WdY3qnsEu5jtHI5OSMd/mCP1GsPxe1bCkWMrBiACuGGTjA48TuGB45pZN1fq73kk0FwIVL70jEaME95m4yPNmPzzzmtU3UmqIscMUrWwiChkVQPfUr7x4zkFFx5Y4xQaD09qwZ1NhNmMkPx8JAyc+WMjPlXmnaFfahE0lvFxsLxgnBlw6phfM5alp6g6hNvFcmaYwRPmOXsF2IwAHB24HAHFI7LXdUsIEjtrgxxbt6js1IJDBs8jnkD7UHidP6tJD2qWE7JnbkLnnBP/ZSflisJ9F1GCWOOW2YNIhdOQQVCBycg/okH6EVvt9e1ntlW2vJxI/uBYhgtkjwA5JIHPea9fUdZMNvct2vY24KRyGAbANixEE4wfdVV58qBTB0/r109tYSxzRwNKIgZG/JxkvtycZwNz4+pOKbp9E1GCMSTWrxoWVAXwMlu4c/Q/Y0sHVmtBywvBuLBz+Rj7w24H4f0gDSS+1fUdSgKXUzTRgozHYucqCqkkDPcSP10G38C61axXH/AAlzGhVllGMZVcMQfMcA/q+VabfRdRubX2mC1eSDBO9SMcDJHf3gEcd/IpZcaxr80l1BczXUknZMkySR5KpkscgjjBJOfDJrVF1Nq8VnHapd4gjG1F7JDgYC9+M9wA/VQYz9P6jFcQ24gMlxJH2hiTlk/KGPa3kdwxjzIHfWq50TUbW1a4uLV44VZVLMRwTnA7/HB+1bZde1Vrxbt7krOVwHWNVyO0354GM7+c9+awvNe1G9tFtbu47SAMj7digkqCASQMk4J+9BmenNXEzQ+wydooyVyO7dsz3/AKXu/Xisn6a1dVLCzd1C7iyMrADaGycHuAYEnwzSu56z1mW4uHiuRDFKzN2SxoVUF95AyP0ufme+k1v1RrFsgSC82KE7PAiTldqrg8c8Io/VQJL3R9QsYmku7V4UXAJfAwT3D6/KkFONxrWoXEEsMtxmOVVRwEUbguNo4HhgU3UG25uZ7qTtLmV5Xxjc7ZPfn/uT961UUUFhvVK+Lqf6238WrI1W71Svi6n+tt/FqyNBzP1hvzU659If30dU0q5frDfmp1z6Q/vo6ppQSHpvV7PS9Ou/arVLuZ54ikbgfCFkDHJU45ZD4cgeVbH6ktnglT8EwK7oFEqbA0ZDA5X3PEDBznxxikOhW+k3MdwNVu5LV1IaNlXcHGGyuAODnbz5Zp2vToS9PTrbNAbwxgplSXDH2bIzj5T/AOvmKDa3V2nNOz/i5aqnbGQIjhQFIIK5C58eD4YGMc5TaH1NZ6dYQ20+ki5CSLI/5YIshUyY3Dac8SY5PcopVPa9LvFDCt7tVGC9sAdzDdL7zcf/AFefEfPFZ6Zb9LwT2i3V4kqJKkkjlSQfewVI25KlRnwxn9VAg1HqW0u4l7PSVjmEsLiQyhsCNFXaBtGAduf1+OKzj6gsbnWbOa4sIreBLgzStgOSCOQcLznvOQefKtUNv0/FqlsBdSS2/sxd2k4XttmQOBnG7jBH66U3Fn0s00kqXk4DNIwiU+6oCZUZ2+LZHd5fWgwueqrSQII9Ftk2IVydh3H3+ThB+kCRxyoxit1t1lbxzrNJo8RdZRKnZuqbGyrNt9w4yVb6BsDupFcWui23UNg1pdrPpnbqJhKSxCiRgSfdGQUAPd/SxW0JoFxqkUc8ixWgtYwXjJH5Usu8n3fAF/sKBBf6xbT3tndW1ibN7bs8dhIBu28ls7fiJxg84+dOX412nZn/ANCwCZt+6ZXCsd0YTuC4HOTgAd5HjmsEs+nY7SC4F6z3XaDdbs2VCe6cltnJ5YYxzj7qLyy6V9quJI7+Z0MkpjSP3BtEYZO9TjLll8cYH1oNMvVNqbh5bfR4rUN2o2wuo4dNoBJQ/D3ju76c7Lq/SJr4yXekRQKCZEYlXwxd2xxHnudR/wDhgcA5DALLRG1C4UXzraCAvEzfEZMcKeMd/wD3+2+9sumxdWaWt9c9lJcFJ2OCI4w7DdnaDyoRu7+kfKgy0zqeCx0wWD6eLqLtXkZnkC7wXibaRg8fksEc5z4YpSeqdOiRCNFs52ODsccR4Le73e9kEEnzwawubbp25eM+1pbtsjB2A7N2F3593PnyB/3pSkHSvZxo14FKxmJn2kkgtIS2NvxKNmDnnPyoGhuoI/abGYWjFrOJ0jDSge8SSrHaqnI3eGO4fr2av1Hb31rdQw6e0HbyvN/zgyqXZGIA2jjKHHPj8q3Xdnof4LuotMuRJcsFkBuCAy7Q5cKQMYIAxzzkDHFarSx6dawgkuNQmW5YASR/onYxz8JyNwQefJ8s0GvVOoobuzWG10y3tJFm7USKFJxuZgvwjgblH0QCl8XV9pFctLDosMKsPgjkA97fndkqedoA+58a1T2HS+yR47+5UqjbUDBize5jvUeb8f3aSWVpoTwQm6vJVYohcq3KsWwwxtPcMEc8+YoHVOtbUXhuH0cNIRtY9soLL7/DHs+Rhh+yP1JIOp7CO3ihfQ4JlG/te0kH5TLKRjCjbjacY4948VulsOkwZAt/cbQcqVbJIDOMDKgcgIf14pHqVnoCaSjWN4zXrSRKwdiQilTvbAUeO0Y+XjQL9K6r09ZrddQ0iKSPevauxVhjeW+EoeOQMZ8KTTa5Yx6jqdxFDHPHKkSwxOnAYAAnOBwBuHIBOQceW19O6WAfZqUpYKzKd3BIRCFPudxcuM+S1oNroFzfapLLeiCIXEhto4wQGTcNo+HgEE/THd5hvturLGJcSaFA5AIBDqM5aM8jYQT7hHhwx/W1WWswwQxrLYpI6lizDaAxOcEgqeRnHljw8adNRstBu9esk0+dzBcSMswjHEPAw44+EZyfH3T3cGtdvY9MSON9/cRglSNx8N5DZwvGFAPjnP6qBS3WGnO6s/TloQCDs3KFwFjG3hM4yjHBJ+M+QNa5OrbQ20sUeiwxM8TRK6OoK5SVc52Z/wDWKTzzs+fDfptnoUlgZL6+njuFVvyaKDuO4Yx4fDk8+IHnwg12HT4NQaPSZ5bi1A4kkABbk/7YoG+iiigsN6pXxdT/AFtv4tWRqt3qlfF1P9bb+LVkaDmfrDfmp1z6Q/vo6ppVy/WG/NTrn0h/fR1TSgddG0S41WGeWCWGNYWCt2hIySrtxgHwRqVN0pqKW008vYxrErO4YkEKuMnGO73l58dwxTdpKahcXKWmmNN2kzqgWN9oLH3Rk5A8cc+dbPaNTljmgkedwVYP2pJIA95gCe74QTjvwKBbbdKahc21vPC0DJMqsPfII3MqqDx4lxW6z6SubyW8traaKS9t51hVMkLJmORzhj3YEZ76ZxJqIRIg93txhUy2MeQFYxzXz7zFJct2nDbWY7sDx88CgX2/Td9cX89pEYTJCAWff7g90ty2MA4VuDjuNZW/TN9PJdRq0KvbuEcOSMnYz8cd21GP6vmKR2z6pJdZgku+3nwSwdgXHcCT5fM1te31i3WGZ/a4/aXyjbyCzY4J5znDcZ8D5UDhJ0hel4xbyQMJFAQM4Bd+zVyigZ3HLgDHfmvI+j9RkgMyPbmPLqrbmG4rt7uOQd64Pcc03XcWrwXElrP7Z2kEm1k3MwV14GMccY4I8uK0x3WohI4op7sIchEV2x88CgcX6ZuRNqESz27GymMMhywBwDkjju4rCHpq+lS4YNCpt5JYpQW+FoxuYcDy3Eee0+VIFl1D8pKr3XvYZ3BbnggEn7ivUa+EQhjSZQrFzsUg57skj6/60CnV9AvNKh7S67Mr2hjOxs4IyP8AY0ufphpYLWWwuFlW6RZIt428HKkHvwd6uvl7ufEU1O2p7Tau15tKgmElsFWwwOPI5B/XWAOoY7EG6xHmHYN3u+JXHh4nFAuvOm72zupoJ2hXsY3lkfcSFVZjCfDJ98eA7ua9u+mr60spLmYxKqLuKHcGxuKngjjBB7/KkedUluIjm9edvycZyxY5z7o/14rK5bVdjLcSXjR7Ru3MzLgjPPhQOMfSGoSCIpJa/lCVUGTBJCq2AMZJwy8Dk5rfbdGXheBru4ghgkmjhLAlmBcFhgY8gTTRbvqrpO8M11iBRLJiUgqOFDYznxA+lYm41UNHC016GUgohZ+COBgfLuoHL8UdRK2rjslS6IWHeSpJO7gjHB90/wC2a80vpiW99rBuoEaF+yXBLBnIJHIHdx/rSeaHW4LuO3kluhMdoUCfOAMEcg4AGe/uFaNuq2wkcNdpvYlyrnkr3k4+vf8AOgVXPTd3E1ttaNlnkhhBz8LyIrDOO4c/rwfI0ofo7UVg7cSWpgABL9oQBlVYDkDkh1puhj1e9uYIEN5JKxV4wzMMc7Q2TwAO7PhWuS61NHMclzdqc7CGkYDw47/kPsKBdqXTF9p9vPPM8DRw7txRifhZFOOPNx9jXt90vfWkoTdBLulESlWxuJd4weQON0bD9XlWF/Y69DHdLeLebI5zbTK0hbMgBbbjPPAz5U3zm+kX8ubpgMP7+4/IHmgdk6YnmtoJLWeOWR5GjdQG90jPPd3cHPl9Oay/E/UOy7VpbVUEZclpCMe4rYPHfhl+WTjNNjXOqpKqtNfLISAAXcHJHH3B/wBaWrqGt6UZU9ply4w/5USbccc4Jx4DB8h5Cgxk6avI7+8s3ktxPaoZJQHzhQ21u4eB5Py57qVxdF6pJcJCDbh2fsxl/HeUPh+kp+1Nyxaq9u1wVkkW5LQGRzub3QpIyeQMMvyOaTpd6jDudLi7j7tzB2H0z/tQJJU7OR03K20kbl7jWNekkkkkknkk15QWG9Ur4up/rbfxasjVbvVK+Lqf6238WrI0HM/WG/NTrn0h/fR1TSrl+sN+anXPpD++jqmlA66LrlxpG3sI4ZAtxHcqJN3DpnB90jjk8GnAdZaiAo7K1wsPYYKsfd2Mn6Xfh2OfP5cVp6d1LT7Syu7fUkldZXDKEQMOI5V8x4uv2NLdb1TQLjRHtNOtbiGZZWlj3J7gzsBHxEgkJ38+PHOQGEfW+ox5C29ntMzzMrK7Bi/xA5blT34pFYdTX1jYm0hWHszE8OSGztYSDwPeO1bB+lKrm96ba1u0gsJklZSIWOSV+Pbk7/nGDx4HjzXJrPTcun21reWE7JEN4Ea7SHMcCk53cgskhPHOR86Br03qvULC0tLaJbd4raVJU3ocna5cKSCDjJPH8q3fjlfdmENtaFRH2ZH5TkdmI/0+/aPCvbXU9D/B01td2UzKLiWW3VcnswxjwM7hkAKwI8cjmlFxqnTD2SRRaY6SKoy2zJLDtsnO/OMvFx5KRz4hpl621GS4nnFvZpNLtO9VfKYcv7uW45P+gpBcdR3dxftdSxW+Wh7AxopRNv8A0kEHgcg+FLtTvumptOuI7HT5obgg9i5BJU5TGTvweBJ4eIrVqGp6SNLu7bSrWSBppYzlxnKKXOCdx80+Rx4UG21621K2gEKRWxQEsMhwQTG0ZOQw8GJ+RAIxW1OvNTR42W2sV2FWASNlB2vvGcMPHP7RpTqOs9L3bsX064ZYw6wKo7Papldgpwx4CsB96a9Iveno7O2XU9OnluUkAkMbYV492T4g7irEfLYvmaDC36pu4NRmvktrM3EkSQ7mRjsCpsyvvcEjv8KLHqi5sorxIbWzzdNIzuVfcN4wQDuzgZOM5p7i1Ppm9jgilsSgtbZlTtSccNM5Gd43El0wOOQRnFY2j9JS2tzItu6NGq4Wd9rMNrkhfe5OcAHHfjuBOAadR6qu7u/sbzana207XO0ghS7SFyvfnaCTjnIya3r1rfrbiBbazEfZiPGJOQE2fp+QpHFqNhZ9RRXlhHIlju2yQMu4mMgK45PJI3eWPA0uTU+npXDXtlcO2QN4GcKC+Bjf+j2Q/wCk9+aBK/Vt++r3OpGK2E86bWCqwVffD5Az+kM4ORyeK13fUU8uoSTqiuj262xWTILKNp3EqQQxZdxIPeT381ld3miNqdxJa2bpa9hGsAZSSJRt3sw3+Pvjg+I4p4fWul5NbivptPuWzMZZsLgt+UJBA34ztxnzPl30DVP1beToEe1tAm5XwBIMsAADndnu8O7mlCdb36b9trYguxdiFcZJEYPAbH/q1/1rCC96aSM9rp08jZh2+8VwAPyuSG5yeR3d+OK0215oCTX/AG9jcSRmXtLQggEDB91+cYyFHHmT4AUCvVOr2m1xNRsrZFIi7MpKWIP5TtPBs5zjJzycnAzikWrdVXuqafFZ3ENsIY2U5QMGbaqqASW5GFFKtV1rT59JltrQXCOxQqDGAq4Yk/0j+kaV6hq/S93qN1ePY3LPPKzlNgUAGUnd8ff2Z7u7cKBOOu9TNwk01vYzOkqyp2kbHBUMF/peAbvPPA54r2364u0uYZJrKyZUKjKq4dVCBCFJY490fekU13oD3GnlbGdYkZjdYblxk7cDPlj/AFp3TqLQjYCyksp1tdu0xoOfjlb4t3PLQ+HO35Cgbtc6rnvpFW1hjgiSZZ0YKdwZVUAck4X3Rgc486T2fU91YyyyWNraW7SOZG2qxGSrr3Mx8HYYo1C90d7OdLCyMTs0bR71LFcD3xu3dxPy+VOUGrdMRXQePTJ1icAyI4DjPao20e8Pd2h1578DzNAlHWd/7LDbvbWbxQyiWMMr5VhtA53ZI93xPiflhNq3U95qltNDcw2oWUqSVQgqQc5XnjJJzjvzTxPrfTk6M01lM8xRVP5PAYrEVUn3/wBIju8BTda3nTiXlw09hcPbtcs0YB5WLcu0fF3gb/PORz40Ebop46iuNJn9jGjWzwhIcTs6kF5MnJ+IjGMeVM9BYb1Svi6n+tt/FqyNVu9Ur4up/rbfxasjQcz9Yb81OufSH99HVNKuX6w35qdc+kP76OqaUD305oLa6JkhuEimjdARIPdCNkbifDDbF/6xTj+JV3unRpo0lWFXjRiMs5lSIoeePecjPd7vhmovE8sau0TOqnCsVJAPOQD+sZ/VShb7UEiDJc3SxDKAiRgoydxH6zzipwlGMHtejNQaM+/CJQxAXJw/vRqNreOTKOe7jvpBpOim81S4s5pliMMMkpYFcHYM4ySAPqTSP8KahkH266yDn/nN8vn8h9hWv2y7aTIuJy5Ux53nJUkkr9CSePnUJOV709c2ttLdM8Xs6KHBLe8VIUrwM8kOvj41tfpa+WBZRJbspTtDhzlV7MSZPH6JHd50zvcXIhETyzCJlACFjtK58vLI/wBK2HUr4qFN7c7QMY7VsYxjz8hQxxOWpdL6hp0NxJc9gBbkLIBJkg5Ix8/hP2pVD0bezRWpjlhDSuI5N7YWNm+EZ8eATx9OaYZLu8MWyWe4Mcij3WdsMATj6gHP+tZrqWoEIi3t0QAFVRK3AHcAM0wRjB6tOkriSF5biURx9k0iFVJ3AI7Dg4P9D/XNNz6Fdx6u+nSGNZlRpCxJ2FVQuSDjkYHeO+tB1PUzGSb68KfASZWx3d3f5ZrGXU76UJ2l3OxTdtJc5G4ANz8wAPoKJxxPa9HXvYXO+WEXUUgTsg2RjEhYk+GOzPHjnPdSW36YvJ7ue2jltzNFbx3BAc4IcoAM478ODTaNSvgQRe3IIxz2reAIHj5Ej6GsFvbtZTKtzOJWUKXEhyQMYGfIYH2FA5WXTV/eXLwQiLcuzkvgHchcEf8ASCf/AN62w9MXPtmlRXM0UaahOkCFTuI3KjZxx3CRfGmVbmdS5WaUFyC2HPJHdmtsuo30skckt5cvJG29GaViUbjkHPB4H2FA+t0m0jg2l/ayxPtVHLD4yYgysRkDaZVBIJ/74Tv0rqKWs9zJ2UcEG3tmckdnk4weMnDAg4zgg5pnF5ciNoxcTCNs5XecHJBPHzIH2FbE1G/ACJeXQG4sFErfEc5Pf38n7mgdLbpuQ6nb2l1cRos9s90joQQUEZcH3iBg4I5PGD5Utt+jZZru6jW7ieCNlWKaMZEm50VTjPAKvu8fKo9LeXTXRkDvFKqGPEeU2rjBHHhjOf11jDqF5AF7G7uI9owuyRhgZBwMHzAP6qGOJc2gXS21xMZIMW6o0qhiWUOpZfDxwB9SBSewsFurS4maXYYyqqvHvEg45JHlXi6jfRwhRPMA2Nr5O7CnIAPkCAcDxApI4kQFHDqM8qcjkfL71ts5ppqxrpxjzg1WsVVU4UVYT5xL7vSJ7WCSWaSEKmBwTliSRgcf3TW38AXRVSkkDMce6GORnb8v7wpreWRwQ8jsDjOWJ7u6tiG6lR2jM7qgyxXJA+v2/wBK3xXYTM4UT9VeaLxFMY1x9NxcNDuS6L2kALttUFiM+7uz3d2DTdcwtb3EkLlSyHBKnIP0r3tJ8CTfLgNkPk/F9fOtbMWYsxJY8kk5JrVa1WUx/ZTMTv1NtjTbRP4lUTG7W8ooorQsCiiigsN6pXxdT/W2/i1ZGq3eqV8XU/1tv4tWRoOZ+sN+anXPpD++jqmlXL9Yb81OufSH99HVNKBfp2oCzilQxCTewYZPdhWHl/ez+qlg10e6ptVMYLNtyOCcd3GPA/c0m0q2s5re5kvZGjEZUKQ2O/d4YOe4Usg0W33gTXQcNtxsIHewBPjxg8fSurd4vfV0xZVRhw0adevtci8zdOsqm1pnHjp0atXZLVHrao+fZI9gVVCjGBjOfDx4+1Zx67HGVZLJRIHVywYd4Az4cZwfvWpdIjLYN0ABF2xbYCCvjjnkj9VNUiNG5Rxhh3isLS8XyxiMqf2Z2d2uVtMxRGP18+dJ2/DEZgMbWof3CgZ2BPJY88f3vDHIrGTVo3v4rk2ijZvG0EDOSceHhmmmitHp1vOEY92qNXZqWIuFhGP9vbjrnXxPj65CyoPYUwrEqCwIUEseOP73047q8j1uONw6WSrIHDAhh3bgfLv4/wBaZKKyzheP1co+zHNt3/Tzn7nO21RYY7mNoBKkzlyHIPeCB4eZB8O6lI1yHc+dPiKtjjIz3nPh5HA8qY6Kxpv1vRGEVco+zKq4WFc4zTzn7nWx1ZLftTLaRyl5DIM4GM+Hd5gfb50Pqkby2j+yIFhBDKMe9kY8v185pqoqPTbbJinHRujf3J9BsMqasNM++d3eeRrEAZf+BQhXDAFhwAuPLnzrVFqMSm+kaFS0v/LUqCFPdnPHgT4U10VM322nTM8oRFwsYjCI5zvPZ1qAsSbBPAjBA55+XdzWiPVVXUDctbKV7MRqowNuMc5x8j4eNNdFJv1vOGM9mnsj7EXCwjHCnt0ds/c+nXUyCloFbLksHGSGB8cfMH9VJptTie4tZFtFVYQVZcg7weMZx9aa6KVX63qjCZ5Rq4e4p6PsKZxinnOvj7zydZRg4a0XBVlADD3cnIxx4Vhd6uLm4t5XgBEUjPsZgQwJzjuppopVfreqMJq5RqKbhYUzjFPOdZ7XWYA242Kkg5B3Dn4c547/AHf9TSeDV5YBdmNF7SdwwbwTGfAfWmyik363mYnK0x7o3EXCwiJjJ0T753nr8NqXPaWiPEX3dnkAY24x3eYzmiPWYhFGr2al1zlwRnJ7yMqcUy0VPp94/Vyj7Izdd/085+5dqF3HPbW0UaAMi5kfaBubuH2AFIaKKr2lpVaVZVSzZWVNlTk09gooorW2LDeqV8XU/wBbb+LVkard6pXxdT/W2/i1ZGg5n6w35qdc+kP76OqaVcv1hvzU659If30dU0oCiiigyV3VWVXYK3xAHg/WsaKKnFGEQKKKKhIooooCiiigKKKKAooooCiiigKKKKAooooCiiigKKKKAooooCiiigsN6pXxdT/W2/i1ZGq3eqV8XU/1tv4tWRoOZ+sN+anXPpD++jqmlXL9Yb81OufSH99HVNKBTa2N3dxySWtrPMkZVXaOMsFLHCgkd2TwPM17qmn3elX0tnqNvJbXUWA8Ugwy5GeR9DUs9HvWMHS1jqcUkM7y3VxZTI0e3CiGbewOfMcCnfpzrXTW646j13X1jn0+8LzJZTRFnlZX3wqCowpBVQSSAQT30HMqK6vp3pN0mHTrEXugrPexXEU8wCRCNnWftWlB27t7L7mCduPtTde9aaB+OGg6jZ6PNJp2nWrW7w3Aj3uxeUiTgFSV7RSMjvXHzoIXb6Fqlzpxv4LC4kswsjGZUyuE27zn5blz9RSaCwup7G6vIbeR7W1KCaUD3Yy5IXJ8MkH7V08+knSBpdzaSWF3ebxd7WnSJd5lEGCwTAH/ACmzgeI7+acbP0raDb32pyPpN3LbXvY7IDFAotdjSHCbQAdu9dpYHlecUHJYNH1GfS5dRhs53sYiQ86r7ikFQcn/AK1+4rRf2N3p9wbfULWe1nADGOeMo2D3HB5p66c1/wDB+sW4v7nUJ9DW57ee0STAnAYNhlzt5KJn6fIVP7n0qaRqmpLqepaPPDqj2z2r3MPZzGNe0DoyCUEZwXU5HAIx3YoOPUV1ax9I2gwT6JJLokjxWSNHLbdlCI9xRl7ZSFDFySCQSB5eBDnfekfphtBvOw0tfabqa6/4JLZFXDxRojOxBx7wZ/cbORz30HHJ7W4t5lhnglilYKwR0KsQwyDg+YII+tONv01rdxdT20WlXpuYGjSWIwlXRpGCoCDyNxIA+tTHVuvNN1Xr3Q+ob61vJ4rGCLtbZgmDLGnG0j+iXAJzz30/Q+lrSnvxqVzpd2moTCyFz2bh1f2e5EgbcxySUAXnxAoOV6joeqabaxXN/Yz28ErbUkkXAY9+BTbUlm1eLWG1UazqOoi2RJJtPt+0LqJSw2qVOQBtJ7sd36jMtB9Jejaf0pbWFzoQm1OGzkh9q2JgyruEDc84Cu+fHOKDlFFdG61640PXodBSy0JbEWUqvOsaKDtAUFEbnIOCeV7z9cye49K/Ta3nb2WgyozezJIzwxMXjjmZnBz4lG25/wCwoON29hdXFldXcFvJJbWu0zyKMrHuOFyfDJ4pNXUde9IWjXvQt/oWnaXPZyXEcMaoqRiJTHNvL5A3EsO8HIBHFKdO9JPT9vZaTBN08WFuiRyhViAiAheN2jOMsXLBzvPeP10HJaK6R1X15pd70zPpOhafLbGU20ZlniiLGKKHYwyO4swVsjFPtx6Qul7ew0K09gmvhbw2ZmaOGOPsXjQh9hZdzMSQDnjA4PkHHI0aSRUjVndiFVVGSSfACvZ4pIJpIZ43jljYq6OCGUjggg9xrrOq+lPTVnafQdJNpLJqFtdSFoo/ejjjAdQeSCzKDkV7d+k3RpxrCSadc3MeoXF3MxuIoi22WBUjXI7tjrnjwA7zQciorsd96VNDZFk03p2KzuksJreIiCNhFKwQJjJwVBQnle893fUf1rrbStQi6RCaa6S6TJG10wjRFmC7MgKDyTtJycZz3eNBzyiuyXXpT0K9UR3miytH2qyfk4IEYbboyLg48IsJ+r9dbbn0kdOy/hjULbT4Y5mto1srWWDMguwjJ2+QCu3a5yCckqvHjQcWooPJyaKCw3qlfF1P9bb+LVkard6pXxdT/W2/i1ZGg5n6w35qdc+kP76OqaVcv1hvzU659If30dU0oJx6Nug/x0h1GT22e29klt4tsNr25Pasy7j7y7VXbknnjJ8KeI/RbbNcWtsNdea7kspL5oraz7UsiyGMCL3x2jEjOOOMmuc2+oXdtZXNnBcyx2tyUM0SthZCudufPGT96Th2BBDHI7ue6g6hN6JTE6xnWllL6gbETQW2+3hw6Jumk3fkyd/C4OcYzWy89Efszaso1WdpLG0F2IzYlGIxJkMS+1cdnnhjkHjOCK5XvbBG44PJGaDI5zl254PPfQdE1P0aCz6o6Z0hdSlePWiALh7Xs+zyQDhC+44J8QtPNt6GDPdPGNakjCwRzdlJZEXCbndcvFvyEGzO4EnDDiuU2V9dWN7Bd2lxJDdQMHilVsMhHcQa1PNI8jSNIxduSxPJoOoab6KrW+vbKxj1ydr2401NRMcdhuVQ5AVQ5cD9Llto4HngZ6f6Ifa4dKdtb7IXvZZY2uU9+J5MRNv/AChXZhhxjPjXKhI4OQ7A4x3+FAdhjDNx3c91B1WL0QvcWN3eWupzPapZLewytaqqsDEZNj/lCVOARwGHzrXe+j+xv/SHrOl6e8lpZWFpBciCGNriWTckW4IpYE8uSTngZrl3aOBje2O7vo3tu3bm3eeeaDtXUPojsodQ1O/iup7HR4NREAh7IOBCZxEdrmQkkbgfeA48TTTq3oo2R9W3dncX0Fro8s4iW7tlXtFjCtgsHzkq2QduGAB4zgcrMjkEF2IPzr0yOc5due/nvoOraZ0Do2sdJdPNZzXMWqXVrcX9w6wGWWVY5ez7OKPtACQecYyQCcjuph6z6FtOltLS4uNa9puJL6a0SOC3yhWMruffv4PvD3cd/GfGoMHYYwxGO7nurwsSMEkig7g/ot6fafUbCK5v4jJ+DRZXs8GfenDZ2qHAZCQPe/o8gZxkw3qj0dNoHSFtrcuppOZTHmNITs94tlVkzyy7eVIHyzioF2j8e+3HzoLsV2liR34zQdo1D0XaPqmoLa6FezWq2tvarMzW5kZpJou07WT8phIwO9gAATjB7zsufRpo99oGjJY7bO+uxZ77ne8m7dbSyOFQtgligwOOcAYrie9sn3m5GDzRvfAG5uO7mg67Z+hkXj3UcPUCJNCI8wzW2yRWlQGGN13na7MSpHOMZ57q2XXos0s2cO3V2iS37ZJbmO1LtOy3i26naZcDlvDwHjXHt75J3NknJ5o3vjG5sfWg6drXonbSum9V1OXVWlewSRyI7XMLFbjsdnabuH/pFccDFb9O9ES3mlaPevrTwC/jtJCZbPEY7diuxH3++64yVwODmueHqDVzop0c6jdfgstuNt2h2E5zyPrz9aS3uo3l8LcXdzLMLeJYYQ7Z2IucKPIDJoOi3/osXS9JuLvVtVntZYre2l9nNllu0mklRUOXGMGMEnyY8ccuOoehn2TUGg/DFwwQT5jNhi4m7IoMwxb/AMop39+R8JrkazSq4dZHDAgg58R3Vtvr+6v72W7vLiWa6lYu8rtlmJ7yTQdQPoeO0BddiY/hH2B5Ow2wpl9obeWG4/3VBweCRWq+9Evs0WssNUuHk0+1W67E2JRiCrEhyX2qRt8GbIIIzXLd7YxubGc4zQZHOcu3Pfz30C/qHTfwRrd5p+6ZvZ5CmZouyc/VcnH3pur0kk5Jya8oLDeqV8XU/wBbb+LVkard6pXxdT/W2/i1ZGg5n6w35qdc+kP76OqaVcv1hvzU659If30dU0oHvQZNPW2mW+aBJRcQSK0sZbMY3b1GAe/K8eOK339v06NIM1teXDaiyIRBswqufiycYI+nmPnWjQLnTIIJhqSM0nao8RCk4wknfg/pFOPlTve3vS0t1cv7FMO0LMGbcDkq2OAQB7+D48H5UGd5pfStpfSW9zd3UbKSrBWLbSBIR/Q5BIjHf/SPPlotrfpU3Ekcl5MtqQhWRgxkzt94EBMcN5HkePjSqXWengt1HBbFYZRIAFiwQD7RsA58N8P2PkKRw3PTCC8ZrZ2ZjMLYFGwqlGEe73uSGKk/TxoCy0rQLvX7W1tbu5mtDbtJM+CDvCZ2qNue/ju/nWVzZdLW07BL64aWPblWG5A2xiwyFO4CQKvkVJNZpe9JtezPPZzOjyhlwGA2mTLDAYc7O7FNWi3VhZi+jugZoZYwquiYdTtPcTwOSAQRz3gjAoF17B0y7XkkN3J2pYtCgDLG2WGQfcyuAWx9BnHcVUlp0gkSRx6g7liwkk2vkDdFjaCnl2p//mK1XF50o1zdSR2EuxjmJfeAHvtkfF+jsx9DmkdpL07+Frp7mGVbHaBCi7mOdp5zkEe9jjyJ545D27tum/Zbc295P2xkh7UcnCnd2mBtHd7uOefKnCWHpSRS73ih0haNI40kAZhH7rMdgzlsc48OaxbUumoIJzY28iSyJyrIWBZWiZQMk4BKvn/F5cU2apNoT2DrptrKtwZB777jtTc/97GcdmOfnigwuLbR4dYtzDeibTgcyEK247RkjBA+LuH+uKcbqPphr2eaKcmKYSSLEQ6CEmMFFwFOcOWU89wH69FxN02JB7PDIVxJuLhu/YAhA3d2/JI8jWyO46Yxh7KbcI4jkO3LAflB8gTnB54xxQbJYek5Lqcm6uEj3Pt7JTzhsgjKjAKsAPIqc8EUm1eHRza29zEWEk0wRgg2KUCrudRjjkkd3eCea2adddOos0d7BJLGLl2i9wg9kWjx3N37Q/GTyRW99S6anZWubSR2S27NQAwG8RoF4Dd27tM+PINBq9i6XN6iLqUgtSAXkZXDA57goU+GDnJ5B76xSHpuLWbZ47tmtFjLsJAzKZBIcA+5naUwcYPPGa3i46TYRCW0liZcF9qud3HIOX8z/oK8ub3pdzGFtZRCu33VUgkbIgxznvJWQjw5FBrvIulllc29zPIdqyAlSqbiMMgG3wY5z+ipHea1Xdt01i9aK8mJVGaDaD77c4BBUAAHHjyM9xry5n6bOpK8NtKLXsmGz3sb+1JBPvZ/5eBwe+sZpunnvbExQyx26qROMMS3uLj+l37t/d4Y4oN+mp05+D5obq42ySxIwkIYukm0kgYQ4Abjv5GK3T2PSQeJItUlILN2km18BQExgbO8kuc57l7ua1aLe9O29rexXkMziftEGAc43xtGc54xtbPjzWMd702QwNlLEHXDKCWAxKpGCTnlAc93PdQZRW3SpSVZbudQjsUZNxaRcrtyCuAcbv1geFZxW/Spm2y3ciwpM+CAxLplMZO0YyN/0/XmmbUn0ySzg9iQx3KqTKfew53cAA9wxzT/AHes9PX1yPa7Fmji7IRuvuFhtxJnHkQCB/i554BM9v0y11Fm7ZYm4kKb/wAn7i4IBX3ve355HcMVpsBoEmjww30xjuFmdnaNTvKlkA52nuXeQM945rNLnpghWls5lbkMiFtuMNggls5zt4Oe4+eAtivel7d5Z4IJ0dkdUHZsVBKFR3sc9+fkf9Ai+sLZJqMyaYzPaKcI7HJb58gf9qRVL5bzpSQzySWlw8jMxUKxQEFuD8jjw5HFMvUVzZ3N3F+Dl2wRx9mBtI7mYjvJPwkUDVRRRQWG9Ur4up/rbfxasjVbvVK+Lqf6238WrI0HM/WG/NTrn0h/fR1TSrl+sN+anXPpD++jqmlA+dNX2kWXbHV7OS73Mm1VCkAA5Pkc/rwfGnGXqDSJ5omudOMpVQjSmNQWCxBV93PfuBPf3YHhTZ0/rUOlwzRz2Ed2JZFY72AwAjrgcHBy6tnzQU4jqixMQWTQoC+6Ml1k2nCkkgALhc58PIHk0GyLW9KlRLaHTDlmULHHApMhIiBU4bcfeR/HnfW621fp43UMF5p8gjVwjGaJfcXtHJBwcjgqDgeBpM3Vdt2sbRaUsQRlcbJFDZDMxG7Z3ENgj+6Oa1L1LaHV7m+m0lZDLB2ITtgMNtwXPu4J7j3d4oFCXWjR6zeXDWb3dmkUfEMChE9zaSwzgHeVOQcE58xWi+1rSn027gs7J4ZbgIGxGqq2DGe8Hj4W7h/Sr3U+qLe8sL2CLSxbvcggyJIvdvRgCAgzjZgcjvNZP1VaGNwmiQJI2/8AKBwT70ewcFcDB97A45IGKD2DV9DSSSV9IMkO99v5JQIwzKUHfzgK45792fCtr670+5gJ0o/k2TI7FMFe0dmHf4hlH/TjupK3VMcqOJ9OjLME96NguGCOGcZUgEl93kNo48a03+v2t1p81smlRQs8USCRX5Vk724UZ3c8d1Aa3Pp11BZypbzWgVFxGIFUTgsd7hs+YIHf3fXDtFrWi7LhbLSZ2iZALgCJTuj/ACWXJBwpBVyOMZYUnuOsLdwpg0aBJI2Uxl3DKgEjOUA2j3TuxjwA8aLbq+1hVAdEt228HLj30D7lVvd5GMKfMAeVBrtdc0aF7eU6UnaK6u69krKcSKSBk92wEd3eazXXNF7QO9lMzBQpYRqNw7HYQRu7twzgY4z3+GwdVWUWnW6pp0b3AV0blQU9wKHzs5bOTn6+JzWT9ZWJkMi9P2wcuW3b1zjezY+DHAKqPkPnig1aje6Fc9PXJtYY7e9cgBWgG4gdn8JB93OHPHHJzyRWTa100IljTSpWGTlnjTcfeXB4I7lDccAk009R61BrAtilm1s8EfZrtkBUgu7k4CjnLj7fPhkoJI2saZNqNxcXNq8okljfLRqSyBcMuM+7zg5HlSyLX9ASFB+BxvEWxj2ancxjdS2c8ZLK2PDHHcKh9FBLl1zQUW5CaZguJRExhQlNyqqk5Ph7xx8x+rRYavokWn2sF3pvbSRhe1IjUGQhnJ97OeQYx/0nzqMUUEpGq9PiKUfg6UyN3Hs0G3gjI54J9085Hfjv43PrfTxn3LpR7M7yVMSe7kuVxzzjKDw4WohRQTA63084QSaSQoTGEiUYbs0UHO7JwwkbB79wz3Vok1TRLmza29kNo0gCtMlurFRlDx72f6LeOeai1FBJtE1TQrXT4or/AE+W4uAyl3KIQMSbiByCcqAOe7J+lLB1BoZsoraSwmMSHcsexdqnYw/S973mB578VDaKCWz61oDxRhNJ2SKykkRrgqFjBTG7xYSHd3jcKj+sz2tzqMsthD2NucBE27TwMZIyefpSKigKKKKCw3qlfF1P9bb+LVkard6pXxdT/W2/i1ZGg5n6w35qdc+kP76OqaVcv1hvzU659If30dU0oFtnZG6tLiVBI0kTJ7qjPunOSftTg2hILjb7QwjZ5EX3ctlQcfXu8KYqKtWdtY00xFdnjO/3/bQqWtjbVVTNFphG7HV99JzsNL9qhSZ51RDIEIxk94H357vka2RWFk0d+7zSJHDJsjYkc8N3jHPI8KaKKU29lTEfh8+3QVWFrVM/ibtHZpPM+iC3iEs9yqodncmTkkjH+lZS6ERI6x3AGJNoEi7eNwXJ/aFMlFZTb3fZf7SxiwvG1/1g8tom2ZYzcjc0hjA7M54UH/etEGmrIrq0hEntBgTHdkAnn68AU21kHcRtGGIRiCVzwSO7/vUddYY49XhxnzxT1Nvhh1mPCPPA8fgI4z7Un/MMfCk4I7+ayj0HMcrPcLgAbCBgZO0gsfD4u75Ux0VlFvd4/wCr/aWM3e8z/wBv+sHhtF2Nh7lRl1QDYSctnvHh3Gkuo2Is44zuJYu8bA471xyPlgj7UhrJpHdUVmJVBhQTwKwrtbGqmYpownfjrZ0WVtTVE1WmMa9GGpjRRRVVbFFFFAUUUUBRRRQFFFFAUUUUBRRRQFFFFBYb1Svi6n+tt/FqyNVu9Ur4up/rbfxasjQcz9Yb81OufSH99HVNKuX6w35qdc+kP76OqaUBRXqqzfCCfoKy7N/0G+1TFMyjGGFFZ9m/6Dfajs3/AEG+1Tkz3GVDCis+zf8AQb7Udm/6DfamTPcZUMKKz7N/0G+1HZv+g32pkz3GVDCis+zf9BvtR2b/AKDfamTPcZUMKKz7N/0G+1HZv+g32pkz3GVDCis+zf8AQb7Udm/6DfamTPcZUMKKz7N/0G+1HZv+g32pkz3GVDCis+zf9BvtR2b/AKDfamTPcZUMKKz7N/0G+1HZv+g32pkz3GVDCis+zf8AQb7Udm/6DfamTPcZUMKKz7N/0G+1HZv+g32pkz3GVDCis+zf9BvtR2b/AKDfamTPcZUMKKyKMoyysB8xWNRMYdqccVhvVK+Lqf6238WrI1W71Svi6n+tt/FqyNQOZ+sN+anXPpD++jqmlXL9Yb81OufSH99HVNKCSdLAezTnHO//AGp7wPKmXpX/AMLP/j/2p7r3vRX5Sz3fy8h0j+ZreYHlRgeVe0V0VJ5geVGB5V7RQeYHlRgeVe0UHmB5UYHlXtLNGW3fV7Fb3aLVp0E244GzcN2T4cZrGqcmJlMRjOBFgeVGB5V0u60voa5kgitL/sUkunkmk7Uq0cZRiIl3ZBwwA3Hvz30gHT3SpKxjWzvFwVaQzIFaPtmQEDbwdgVs8jnyqnF/o101RwWJutUdlUfVA8DyowPKujt0boDaZrF/bapPLaWj7UmDLgAiMgEY94++3cR8Pzptn0vpiy6ytrWK/N5pJiJaSaQbTJhtoZk7lJC58QDU032zrxyYnRjq7oxJu1dOGMx9UKwPKjA8qmX4K0CaDUJrvUbazuY3wkVo5kiA2rjbuyz5JYcHjHiKck0Lo9Vv4fwsJH7NHgYzAHcDJ7obG0bgEJyDtzipm+0RH+M/REXaqdcfVzvA8qMDyqcXGkdLyaTc3KakYryOC37O3jdSGcxIXJ3HJ98sMDuxTD1ZY6dp+rtBo137VabFYSFw5BPeCQAM/TP1rOyvNNrOTETG+N33Y12NVEYzMfUy4HlRgeVe0VZaXmB5UYHlXtFB5geVGB5V7RQeYHlRgeVe0UCPVwPwZc8D4DULqa6t/wCW3P8AgNQqvI/1D7ajd/L0fQvsqt6w3qlfF1P9bb+LVkard6pXxdT/AFtv4tWRrz7suZ+sN+anXPpD++jqmlXL9Yb81OufSH99HVNKCS9K/wDhZ/8AH/tT3UHtWuhu9lM3z7PP+1b9+p+d59mr01x6WiwsKbPq5nDucK99HTa21VeXEYpjRUO36n53n2ajfqfnefZqtZ8jZVK2aZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJjRUO36n53n2ajfqfnefZqZ8jZVGaZ2kJNq3/ltz/gNQqlc73xibtzc9n4792KSVw+lb56XaU1RTMYRrdfo+7ej0TTlY4zqWG9Ur4up/rbfxasjVbvVK+Lqf6238WrI1y19zP1hvzU659If30dU0q5frDfmp1z6Q/vo6ppQSXpX/AMNP/j/2p7pk6V/8LP8A4/8Aanuve9FflLPd/Lx/SP5msUUUV0VIUUUUBRRRQFFFFAUUVMulLrp2HprUodYSBr+Rn7HfCWOOyO3Dj4ffx3fr45rVbWs2VOVETO5ss6MucMcENoronsHR/sd1JZ3DyWqwwrLLIfyisZUyVUge9t35xkU3apb9IRLqD6fPJM6GPsEeSQBhj3tp7Pk58GwPnWim+RVOGRV9N33bartMRjlR9UMoqbWs3S0HXt3dyiFtCiDSQQiN5FkJGFUqQDxnJB447zWWoS9LxaXfw2bwTTbbjsH7FgxzJGY+SO8LvH386elTjEZE6cNXf9j0fRM5UaMUHoooq4rCiiigKKKKAooooCiiigSav/5Zc/4DUKqa6t/5bc/4DUKryP8AUPtqN38vSdC+yq3rDeqV8XU/1tv4tWRqt3qlfF1P9bb+LVka8+7LmfrDfmp1z6Q/vo6ppVy/WG/NTrn0h/fR1TSgkvSx/wCGn/x/7U95qD2sNzLu9mWUgd+zNb/ZNR/q7j7mvTXHpSuxsKbOLKZw1x/44V76PptbaqubSIx1JjmjNQ72TUf6u4+5o9k1H+ruPuatZ5tNhV54K+a6NrHnimOaM1DvZNR/q7j7mj2TUf6u4+5pnm02FXngZro2seeKY5ozUO9k1H+ruPuaPZNR/q7j7mmebTYVeeBmujax54pjmjNQ72TUf6u4+5o9k1H+ruPuaZ5tNhV54Ga6NrHnimOaM1DvZNR/q7j7mj2TUf6u4+5pnm02FXngZro2seeKY5ozUO9k1H+ruPuaPZNR/q7j7mmebTYVeeBmujax54pjmjNQ72TUf6u4+5o9k1H+ruPuaZ5tNhV54Ga6NrHnimOaM1DvZNR/q7j7mj2TUf6u4+5pnm02FXngZro2seeKY5ozUO9k1H+ruPuaPZNR/q7j7mmebTYVeeBmujax54pjmjNQ72TUf6u4+5o9k1H+ruPuaZ5tNhV54Ga6NrHnimOaM1DvZNR/q7j7mj2TUf6u4+5pnm02FXngZro2seeKY5ozUO9k1H+ruPuaPZNR/q7j7mmebTYVeeBmujax54pLqxH4Nuf8BqF0rnt71ImaZJxGO/dnFJK4fSt7qvVpTVVRNOEa3W6Pu8WFExFWVjOpYb1Svi6n+tt/FqyNVu9Ur4up/rbfxasjXLX3M/WG/NTrn0h/fR1TSrl+sN+anXPpD++jqmlBJelf/Cz/AOP/AGp7pk6V/wDCz/4/9qe6970V+Us938vH9I/maxRRRXRUhRRRQFFFFAUUUUBRRUx0i96aj6RksNQR21CZjO0ywZZCrLtQP3jKhvDHvDyrVa2k2cRMUzOnV+7ZZ0RXMxM4IdRUyv5Okduoeyoc9ons+FlH5P8ApAZb4/MtlfIU6sOgXfUJ4oilqixLEjSSmRie03bRkc8JycgGtE3vCMcir6bvv+7bF3xnDLj6ucUVLJ7zp+bqHRLgRJDp0UERu444myzoPeUgk53EYz8+fGnmbW+lXury4jt41FziQRm0A7NvZ5UIA5AG8o3B8flSq9VxEYWc9mPPsIsKZ/5w51RRRVxWFFFFAUUUUBRRRQFFFFAk1f8A8suf8BqFVNdW/wDLbn/AahVeR/qH21G7+XpOhfZVb/4WG9Ur4up/rbfxasjVbvVK+Lqf6238WrI1592XM/WG/NTrn0h/fR1TSrmesN+anXfpD++jqmdBJOlmAtpwSM7/APanvcPMVAASO6vcnzNd+6dOej2NNlkY4e/wce89FdfazaZeGPu8U+3DzFG4eYqA5PmaMnzNWPWP5fPwaMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8U+3DzFG4eYqA5PmaMnzNPWP5fPwMyfHy8Uz1dl/BtzyPgPjULr3JPia8rkdI3702uK8nDCMO907ldPRaJpxxxWG9Ur4up/rbfxasjVbvVK7+p/rbfxasiBXPXEA9OunXepejHW7bT7aW5uXWIrFEpZmxKhOAOTwCf1VUE9J9RDv0HVv8nJ/KvoDJHurQ1sD4UFBfxU6h/sHVf8AJyfyo/FTqH+wdV/ycn8qvx7KPKj2UeVBQf8AFTqH+wdV/wAnJ/Kj8VOof7B1X/Jyfyq/Hso8qPZR5UFB/wAVOof7B1X/ACcn8qPxU6h/sHVf8nJ/Kr8eyjyo9lHlQUH/ABU6h/sHVf8AJyfyo/FTqH+wdV/ycn8qvx7KPKj2UeVBQf8AFTqH+wdV/wAnJ/Kj8VOof7B1X/Jyfyq/Hso8qPZR5UFB/wAVOof7B1X/ACcn8qPxU6h/sHVf8nJ/Kr8eyjyo9lHlQUH/ABU6h/sHVf8AJyfyo/FTqH+wdV/ycn8qvx7KPKj2UeVBQf8AFTqH+wdV/wAnJ/Kj8VOof7B1X/Jyfyq/Hso8qPZR5UFB/wAVOof7B1X/ACcn8qPxU6h/sHVf8nJ/Kr8eyjyo9lHlQUEl6Z16FC8uiamiD+k1rIB/2rR+BNV/s29//Ib+VXk63t1Xp6Y4/pL/AN65dKoGMcHNVba8TZ1ZMQsWVhFdOVirV+CNSyR+D7zI7x2Lcf6VplsrqJd0ttMg82QirKW0Cu0jsuVkd/14AX/aoX19pHZaPdyxYMUSZI8RUelaYjBPo+iZxcUaRFbazqG8ieaz8QPE91NMO2TW4e0OUIYf/wCpp1iBWaLPADAZPnmrUzhirxDPY36LfavMHyNOssY7yea0OpXkd3lVWLzPc39T72mxsLzUJ+wsLW4upsbuzhjLtjzwKcfxU6i/sHVv8nJ/KulerPCX9JJz/wDMpeP1rVrxbDyrfZ15cYtNdOTODgnqs6Jqelp1E+p6fd2aytbiP2iFo9+3tM4yBnGR96sCF4ojiC1u21sYsqMUUUBijFIdV1S20sWpu2ZVuZ1t0IHAYgnnyGFPNItA6q0XqCSVNJvRO0QDN+TdMqTgMCwG4HHeMige8UYrHeg/pL96TX9/FZQxySLLIHkSMCFC595gASB4c8nwoFeKMV5vXj3l5Ge+jevHvLz3c99B7ijFMt51RpNpr0WizTzfhGRUYRx20rgBiQpZ1UquSp7yO6kMXXnTs7TJaX4uJIZY4mWNG73kEYKkgBl3HBZciglGKMV4WAIBIyfDNN+vazZ6Ho91qV6zG2tl3ydmNzYzju/XQOOKMV4HU4ww57uab9H1i01cXnsjN/wlzJayBxj30OGx8ue+gccUYrHem3duXHnmmzqDqLSunoYJdZvY7VJ5BFFuBYuxOMAAEnvoHXFGKKKAxRiiigSapp8Gp2bW1yG7JiCdpweDTEeh9HPes/8A+ZWXpH6rXorpW41qS19rWF0Qxdp2edzBc7sHz8q4pd+tHbWz7W6Vkf5pqAI/d1qqiiZ/ujSmLSadES7TH0Po8aBFWfAzjMnmc03656MdC1myktLl76OCQESLDNt3DyJxXGj619uGIPSEv1/CI/8A06VWnrQNdIzxdE3RRTgsL7I/d0mizjTgnrKu9L09XHoJJo5RDqe9O4+1n+Vb39XzoZySYtR5OeLo/wAqiOn+s5b3eqQ2T9LSxGRtm43wOD4DHZ1pv/Whisr2W2l6QmDRsQzG/AH1/wCXWWVTMscdCef/AAD9F4wYr8//AOSf5V4PQL0UDkRX4P8A9pP8qgR9aSPYzL0bdEAZz7bwf/8AnSZ/WvtlHPSM2fL8ID/9OoyKO5PWT3ux9H+i/pzpLWfwnpEd0t12bRZkm3DacZ4x8qnOK4t6I/TtF6ROrfwHH0/Jp7ezvcds12JPhIGNuwefnXaazpiIjCETOPaKKKKkFFFFBpvIVnt3Ro45Dg7VkGVzjxrlNv0N1LHptzbwmytrWKS1mtNP9tlmiEkUwkYqzLujUgYCjIFST0wS3kfTFmmnSzx3E+pWkGIblrdnDygFO0XlQc4yM4qHX+pal0lrkzqpjuE0u2SRru6kvEthJduGkd2wzqoOfDjA7hQPHT/o/vD1Ha6h1Fb2MsMct9cGJJC4WSaWN0xlRnAVu/xxxSWw9HGrQwSLcT20z293aw2JLnKWMM5kAJx8WDjH90c0o0TrPX9Z1HSrK3fTTDM172t4IX2XMUDxgPEN3G4OR3kZ5qFap1hqF10XZ6aZrGwgNlYTJCyyNNdF5RuMTF+Au0Zzu8ckUEsm9GuqmLWIUuLY28eItKhLsFMDXHbyxSEDKhuE4zwPnilPT3o7uotf0u+1W3sUsrae7uUsIZWeO1L9l2apkDIBjZu4AEjAph1b0h3/AE5bXXsC2vaLqN+7QyozCVI5wvDtKMNgk4UN54AqUaH1jrN11VBb3PsR0y41W701I0iYSoIojIrlt2D3YIx86BT1T0hqGpdYQajpywWoZ4DLfLdyrKEjY7o+yHuMGBIycYye+tXQvRuqaVqtlJrHsDWumae2n2xgLM04Mqv2jggbSNg455JOai2r9Yap0zq2tx6eLZRda1OrXF2R2UeyCIqmWdANxJ728DgE0l1e66hu7jrDXY76K2vLTRrSSKOKNpDCJVZmEbCTHg3vYOeDxjkJd1P0TqupdatqVv7G0MktrJHeSSsJ7JYjl0jUDBD/AFHec5piufRfqo0iWGzFjFdXFteRXLiQjtWkuFki3HbyAoP08K6Xo+o22saY1nHqsF5d+zI0s9plBhwdrrgnGcEjBPdXD4uo+p5rSNje3q9uq9Lj8o3u3gZd0/f8WC/vd/FB0LpPQJW9I2rX4S4TRbKSR7OOaBosXMwXt2TcBlfc4I4/KNikcno91OLVLvUrFdPS/nvdQlaSRiQ8M0RWJHGOQHwSvhyab9I6h1np7VdWW3SK/sZ9X1CGO2KsZzJHAZVw+cEHZtxjxzmpJ6P+rdT6jGpQmfT7xorSKeO6tImWOOWQNmFwWOWUgZ5HfyBQRGP0Y6+uh3Nq0WntIbtbq3hNwphiPY7GynY7GG7nAUeYOeT0brHQLvWeil0yAW3twNuc8rGCkiM23vIGFOP1VAdA9J+uanf2kMtpbww3CiRZBA7e7DC5uuM94lCgfI+JpPaelTWrjRL+4D6WDbT25Fwyqu+GSORiFjM20uCmMdoD38ZGKDuFFItEuzf6NY3bHLTwJKTsKZyoPwkkj6ZpbQFFFFByn1nFR/RFqKyPsQz24LeQ7RaphHol1NF29nZ3M9rk/lFQ4P086vV6bLexu/R/dw6pbrc27SxfkTIY97bxtGRz34rhbyQR28mnokcaWjqFW1hdzEMYwxxgeQzVW8VZGFWLOwsuvtJojVhz/wDHEuirG2utak9ste3t44nLqfDHdXT0llsdNjFlYiG0yRuifaw8ief+9Pem3ljq2j3VhHHNHHHLJHLJFFHGIwucFmxndz45zjNNWr32jm2nEGs3srogBhZFQSscnII8sjPHhWq3qmKYrjslauVMVVV2dcYTTP13Sg/Vdv8AhGBtXtljjvrFlebauN4yADxwTmkfWtqk95perwoXhuUBdCON48D/APzwrVpl/c6J1XbXcjO0UeHwSMSA/Ly/lXXdH1bp3rXWvZL6FGeNA8Sldquw55xjmt0UTTZdb24fs01Rl20Wca/3J+l9C02Wynm1PT4JHMQZfeYHO0cDkZOMfeuGdb6aNK6ku4FheGIkSRo5BYKwzg4J7s4/VXaerdQvV1X2XQY7iO8Ue9YkZXAGfHGPDkcHzriPVM11f67dT3ts1tcu3vRHOVOMY55rRdZtJmaq1m+9TFMU2fbDsPqiW4T0oCYucvYTgA+IBTmrpVSL1Qd49MBVyeNOnGCe73kq7tXqYnDS5tMYCiiismQooooPCA3eAfHmgqpzlQcjByPCiigAijGFAxwMDurwxRnGUXjgcd1FFAGND3op7/CvQig5CrnOe7xoooPGjRgQyKQTk5HjXu1efdHPB476KKAVVX4VA+grzYn6K9+e7x86KKD3Yuc7RnOe7xoVVQHaoXPPAxRRQeBEGMKox3cV52UeMdmmPLFFFBnRRRQFFFFBEfSaiSaHYpIqsp1K1yGGQfyq1FL1Vj0zWigCllGSBjPu0UVRvX+S9dOyd7j1wBFaXyxAIsk7M4XgMdi8nzrjqyPJrESyOzqJGwGOQOTRRW+09hSxsvbVedZPrTMeopwWJAGBk9wxTz6P3ZOsIijFTt7wcUUVP/zTu/hhT+ajfH7rI6vFG3/EMiGfYq9oR72MnjPfVdvTQqr1FbMoALQZJA7+T30UVRu2pbv/APjKT+qJ+eR//u6b/ulXcoorpx2OVAoooqUv/9k="
          },
          {
            "timing": 2250,
            "timestamp": 5991783049973,
            "data": "data:image/jpeg;base64,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"
          },
          {
            "timing": 2625,
            "timestamp": 5991783424973,
            "data": "data:image/jpeg;base64,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"
          },
          {
            "timing": 3000,
            "timestamp": 5991783799973,
            "data": "data:image/jpeg;base64,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"
          }
        ]
      }
    },
    "final-screenshot": {
      "id": "final-screenshot",
      "title": "Final Screenshot",
      "description": "The last screenshot captured of the pageload.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "screenshot",
        "timing": 1946,
        "timestamp": 5991782746421,
        "data": "data:image/jpeg;base64,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"
      }
    },
    "total-blocking-time": {
      "id": "total-blocking-time",
      "title": "Total Blocking Time",
      "description": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).",
      "score": 0.81,
      "scoreDisplayMode": "numeric",
      "numericValue": 276.5,
      "numericUnit": "millisecond",
      "displayValue": "280 ms",
      "scoringOptions": {
        "p10": 200,
        "median": 600
      }
    },
    "max-potential-fid": {
      "id": "max-potential-fid",
      "title": "Max Potential First Input Delay",
      "description": "The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/).",
      "score": 0.25,
      "scoreDisplayMode": "numeric",
      "numericValue": 349,
      "numericUnit": "millisecond",
      "displayValue": "350 ms"
    },
    "cumulative-layout-shift": {
      "id": "cumulative-layout-shift",
      "title": "Cumulative Layout Shift",
      "description": "Cumulative Layout Shift measures the movement of visible elements within the viewport. [Learn more about the Cumulative Layout Shift metric](https://web.dev/articles/cls).",
      "score": 0.09,
      "scoreDisplayMode": "numeric",
      "numericValue": 0.645698,
      "numericUnit": "unitless",
      "displayValue": "0.646",
      "scoringOptions": {
        "p10": 0.1,
        "median": 0.25
      },
      "details": {
        "type": "debugdata",
        "items": [
          {
            "cumulativeLayoutShiftMainFrame": 0.645698,
            "newEngineResultDiffered": false
          }
        ]
      }
    },
    "errors-in-console": {
      "id": "errors-in-console",
      "title": "Browser errors were logged to the console",
      "description": "Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. [Learn more about this errors in console diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/errors-in-console/)",
      "score": 0,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "sourceLocation",
            "valueType": "source-location",
            "label": "Source"
          },
          {
            "key": "description",
            "valueType": "code",
            "label": "Description"
          }
        ],
        "items": [
          {
            "source": "javascript",
            "description": "Access to fetch at 'https://user.palmbeachpost.com/NPPP-GUP/user/' from origin 'https://eu.palmbeachpost.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://eu.palmbeachpost.com/",
              "urlProvider": "network",
              "line": 0,
              "column": 0
            }
          },
          {
            "source": "security",
            "description": "Error with Permissions-Policy header: Parse of permissions policy failed because of errors reported by structured header parser."
          },
          {
            "source": "network",
            "description": "Failed to load resource: net::ERR_FAILED",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://user.palmbeachpost.com/NPPP-GUP/user/",
              "urlProvider": "network",
              "line": 0,
              "column": 0
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"alerts-atoms\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/alerts/alerts-atoms/alerts-atoms.html.js:1:669",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"alerts-manager\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/alerts/alerts-manager/alerts-manager.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"cta-atoms-container-aux\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/cta/cta-atoms-container-aux/cta-atoms-container-aux.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"media-badge\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/media/media-badge/media-badge.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"nav-hub\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-hub/nav-hub.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"nav-promo-item\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-promo-item/nav-promo-item.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"nav-search-bar\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-search-bar/nav-search-bar.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"nav-search-bucket\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-search-bucket/nav-search-bucket.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"nav-tree\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-tree/nav-tree.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-banner\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-banner/partner-banner.html.js:4:12",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-branded-content-tile\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-branded-content-tile/partner-branded-content-tile.html.js:4:8",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-gci-analytics\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-gci-analytics/partner-gci-analytics.html.js:1:541",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-inline\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-inline/partner-inline.html.js:4:12",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-leaderboard\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-leaderboard/partner-leaderboard.html.js:4:12",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-poster\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-poster/partner-poster.html.js:4:12",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"partner-posterscroll\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-posterscroll/partner-posterscroll.html.js:4:12",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"util-analytics\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-analytics/util-analytics.html.js:4:21",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"util-page-reload\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-page-reload/util-page-reload.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"util-section-color\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-section-color/util-section-color.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"util-sticky-module\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-sticky-module/util-sticky-module.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          },
          {
            "source": "exception",
            "description": "NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name \"util-user-subscription-manager\" has already been used with this registry\n    at window.Polymer._polymerFn (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js:19:106)\n    at window.Polymer (https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html.js:12:58)\n    at https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-user-subscription-manager/util-user-subscription-manager.html.js:1:14",
            "sourceLocation": {
              "type": "source-location",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html.js",
              "urlProvider": "network",
              "line": 18,
              "column": 105
            }
          }
        ]
      }
    },
    "server-response-time": {
      "id": "server-response-time",
      "title": "Initial server response time was short",
      "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
      "score": 1,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 29,
      "numericUnit": "millisecond",
      "displayValue": "Root document took 30 ms",
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "opportunity",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "responseTime",
            "valueType": "timespanMs",
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "url": "https://eu.palmbeachpost.com/",
            "responseTime": 29
          }
        ],
        "overallSavingsMs": 0
      },
      "guidanceLevel": 1
    },
    "interactive": {
      "id": "interactive",
      "title": "Time to Interactive",
      "description": "Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).",
      "score": 0.21,
      "scoreDisplayMode": "numeric",
      "numericValue": 10918.134842713047,
      "numericUnit": "millisecond",
      "displayValue": "10.9 s"
    },
    "user-timings": {
      "id": "user-timings",
      "title": "User Timing marks and measures",
      "description": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more about User Timing marks](https://developer.chrome.com/docs/lighthouse/performance/user-timings/).",
      "score": null,
      "scoreDisplayMode": "notApplicable",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "name",
            "valueType": "text",
            "label": "Name"
          },
          {
            "key": "timingType",
            "valueType": "text",
            "label": "Type"
          },
          {
            "key": "startTime",
            "valueType": "ms",
            "granularity": 0.01,
            "label": "Start Time"
          },
          {
            "key": "duration",
            "valueType": "ms",
            "granularity": 0.01,
            "label": "Duration"
          }
        ],
        "items": []
      },
      "guidanceLevel": 2
    },
    "redirects": {
      "id": "redirects",
      "title": "Avoid multiple page redirects",
      "description": "Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/).",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 3466.70742,
      "numericUnit": "millisecond",
      "displayValue": "Est savings of 3,470 ms",
      "metricSavings": {
        "LCP": 3450,
        "FCP": 3450
      },
      "details": {
        "type": "opportunity",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "wastedMs",
            "valueType": "timespanMs",
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "url": "https://palmbeachpost.com/",
            "wastedMs": 828.027
          },
          {
            "url": "https://www.palmbeachpost.com/",
            "wastedMs": 2638.68042
          },
          {
            "url": "https://eu.palmbeachpost.com/",
            "wastedMs": 0
          }
        ],
        "overallSavingsMs": 3466.70742
      },
      "guidanceLevel": 2
    },
    "image-aspect-ratio": {
      "id": "image-aspect-ratio",
      "title": "Displays images with correct aspect ratio",
      "description": "Image display dimensions should match natural aspect ratio. [Learn more about image aspect ratio](https://developer.chrome.com/docs/lighthouse/best-practices/image-aspect-ratio/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": ""
          },
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "displayedAspectRatio",
            "valueType": "text",
            "label": "Aspect Ratio (Displayed)"
          },
          {
            "key": "actualAspectRatio",
            "valueType": "text",
            "label": "Aspect Ratio (Actual)"
          }
        ],
        "items": []
      }
    },
    "image-size-responsive": {
      "id": "image-size-responsive",
      "title": "Serves images with appropriate resolution",
      "description": "Image natural dimensions should be proportional to the display size and the pixel ratio to maximize image clarity. [Learn how to provide responsive images](https://web.dev/articles/serve-responsive-images).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": ""
          },
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "displayedSize",
            "valueType": "text",
            "label": "Displayed size"
          },
          {
            "key": "actualSize",
            "valueType": "text",
            "label": "Actual size"
          },
          {
            "key": "expectedSize",
            "valueType": "text",
            "label": "Expected size"
          }
        ],
        "items": []
      }
    },
    "deprecations": {
      "id": "deprecations",
      "title": "Avoids deprecated APIs",
      "description": "Deprecated APIs will eventually be removed from the browser. [Learn more about deprecated APIs](https://developer.chrome.com/docs/lighthouse/best-practices/deprecations/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "value",
            "valueType": "text",
            "label": "Deprecation / Warning"
          },
          {
            "key": "source",
            "valueType": "source-location",
            "label": "Source"
          }
        ],
        "items": []
      }
    },
    "third-party-cookies": {
      "id": "third-party-cookies",
      "title": "Avoids third-party cookies",
      "description": "Third-party cookies may be blocked in some contexts. [Learn more about preparing for third-party cookie restrictions](https://privacysandbox.google.com/cookies/prepare/overview).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "name",
            "valueType": "text",
            "label": "Name"
          },
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          }
        ],
        "items": []
      }
    },
    "mainthread-work-breakdown": {
      "id": "mainthread-work-breakdown",
      "title": "Minimize main-thread work",
      "description": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to minimize main-thread work](https://developer.chrome.com/docs/lighthouse/performance/mainthread-work-breakdown/)",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 3819.7599999999597,
      "numericUnit": "millisecond",
      "displayValue": "3.8 s",
      "metricSavings": {
        "TBT": 300
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "groupLabel",
            "valueType": "text",
            "label": "Category"
          },
          {
            "key": "duration",
            "valueType": "ms",
            "granularity": 1,
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "group": "scriptEvaluation",
            "groupLabel": "Script Evaluation",
            "duration": 1569.9399999999725
          },
          {
            "group": "other",
            "groupLabel": "Other",
            "duration": 1141.6279999999867
          },
          {
            "group": "styleLayout",
            "groupLabel": "Style & Layout",
            "duration": 560.6640000000003
          },
          {
            "group": "scriptParseCompile",
            "groupLabel": "Script Parsing & Compilation",
            "duration": 256.86400000000026
          },
          {
            "group": "paintCompositeRender",
            "groupLabel": "Rendering",
            "duration": 122.02000000000024
          },
          {
            "group": "parseHTML",
            "groupLabel": "Parse HTML & CSS",
            "duration": 118.48799999999994
          },
          {
            "group": "garbageCollection",
            "groupLabel": "Garbage Collection",
            "duration": 50.156000000000056
          }
        ],
        "sortedBy": [
          "duration"
        ]
      },
      "guidanceLevel": 1
    },
    "bootup-time": {
      "id": "bootup-time",
      "title": "Reduce JavaScript execution time",
      "description": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 1396.9760000000035,
      "numericUnit": "millisecond",
      "displayValue": "1.4 s",
      "metricSavings": {
        "TBT": 400
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "total",
            "granularity": 1,
            "valueType": "ms",
            "label": "Total CPU Time"
          },
          {
            "key": "scripting",
            "granularity": 1,
            "valueType": "ms",
            "label": "Script Evaluation"
          },
          {
            "key": "scriptParseCompile",
            "granularity": 1,
            "valueType": "ms",
            "label": "Script Parse"
          }
        ],
        "items": [
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "total": 1020.6000000000024,
            "scripting": 523.8760000000023,
            "scriptParseCompile": 0.9
          },
          {
            "url": "https://eu.palmbeachpost.com/",
            "total": 716.3400000000003,
            "scripting": 49.32399999999998,
            "scriptParseCompile": 8.928
          },
          {
            "url": "Unattributable",
            "total": 571.475999999998,
            "scripting": 28.755999999999993,
            "scriptParseCompile": 0
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "total": 350.87200000000036,
            "scripting": 312.26400000000035,
            "scriptParseCompile": 5.148
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "total": 340.88400000000104,
            "scripting": 282.22800000000103,
            "scriptParseCompile": 0.984
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "total": 166.66799999999998,
            "scripting": 64.37199999999999,
            "scriptParseCompile": 40.82
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-icon'%2CdesignId%3A'UI9'%2Cproperties%3A%7BiconName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CimgSource%3A%7Btype%3AString%2Cvalue%3A''%7D%2CiconFull%3A%7Btype%3AString%2Ccomputed%3A'_makeIcon(iconName%2C%20imgSource%2C%20svgResize)'%7D%2CsvgResize%3A%7Btype%3ANumber%7D%7D%2C_makeIcon%3Afunction%20_makeIcon(iconName%2CimgSource%2CsvgResize)%7Bif(iconName)%7Bvar%20iconData%3Dthis.%24.iconMap.querySelector('%23'%2BiconName)%3B%2F%2F%20if%20we%20have%20an%20icon%20name%20and%20it%20matches%20one%20of%20the%20ids%20above%0Aif(iconData)%7Bvar%20container%3Dthis.%24.iconCont%2C%2F%2F%20iconVBs%20are%20on%20end%20of%20every%20iconName%0AiconVB%3DiconName.slice(-2)%2Csvg%3Dthis.%24.iconSVG%3Bwhile(svg.firstChild)%7Bsvg.removeChild(svg.firstChild)%3B%7D%2F%2F%20If%20the%20icon%20is%20already%20filled%20(ie%20its%20changing)%2C%20deletes%20current%20data%0Asvg.setAttribute('viewBox'%2C'0%200%20'%2BiconVB%2B'%20'%2BiconVB)%3Bcontainer.removeAttribute('class')%3B%2F%2F%20backwards%20compatibility%20-%20only%20add%20class%20if%20we%20don't%20have%20a%20width%20and%20height%20ruleset%20on%20%60this%60%20instance%0Aif(!svgResize)%7Bvar%20style%3Dwindow.getComputedStyle(this)%3Bif((style.width%3D%3D%3D'auto'%7C%7Cstyle.width%3D%3D%3D'')%26%26(style.height%3D%3D%3D'auto'%7C%7Cstyle.height%3D%3D%3D''))%7Bcontainer.classList.add('ic-'%2BiconVB)%3B%7D%7Delse%7Bcontainer.style.width%3Dthis.svgResize%2B'px'%3Bcontainer.style.height%3Dthis.svgResize%2B'px'%3B%7D%2F%2F%20cloning%20the%20first%20child%20so%20it%20can%20be%20deleted%20without%20affecting%20iconMap%0Asvg.appendChild(iconData.cloneNode(true))%3Bcontainer.hidden%3Dfalse%3B%7D%7Delse%7Bthis.%24.externalImage.hidden%3D!imgSource%3B%7Dreturn''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-icon%2Fui-icon.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-icon%2Fui-icon.html.js%0A",
            "total": 80.20400000000008,
            "scripting": 78.72800000000008,
            "scriptParseCompile": 0.648
          }
        ],
        "summary": {
          "wastedMs": 1396.9760000000035
        },
        "sortedBy": [
          "total"
        ]
      },
      "guidanceLevel": 1
    },
    "diagnostics": {
      "id": "diagnostics",
      "title": "Diagnostics",
      "description": "Collection of useful page vitals.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "debugdata",
        "items": [
          {
            "numRequests": 283,
            "numScripts": 112,
            "numStylesheets": 1,
            "numFonts": 17,
            "numTasks": 2604,
            "numTasksOver10ms": 11,
            "numTasksOver25ms": 4,
            "numTasksOver50ms": 2,
            "numTasksOver100ms": 0,
            "numTasksOver500ms": 0,
            "rtt": 0.357999999999997,
            "throughput": 30442331.744163726,
            "maxRtt": 26.034000000000002,
            "maxServerLatency": 103.4325,
            "totalByteWeight": 1468095,
            "totalTaskTime": 954.9399999999937,
            "mainDocumentTransferSize": 33242
          }
        ]
      }
    },
    "network-requests": {
      "id": "network-requests",
      "title": "Network Requests",
      "description": "Lists the network requests that were made during page load.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "protocol",
            "valueType": "text",
            "label": "Protocol"
          },
          {
            "key": "networkRequestTime",
            "valueType": "ms",
            "granularity": 1,
            "label": "Network Request Time"
          },
          {
            "key": "networkEndTime",
            "valueType": "ms",
            "granularity": 1,
            "label": "Network End Time"
          },
          {
            "key": "transferSize",
            "valueType": "bytes",
            "displayUnit": "kb",
            "granularity": 1,
            "label": "Transfer Size"
          },
          {
            "key": "resourceSize",
            "valueType": "bytes",
            "displayUnit": "kb",
            "granularity": 1,
            "label": "Resource Size"
          },
          {
            "key": "statusCode",
            "valueType": "text",
            "label": "Status Code"
          },
          {
            "key": "mimeType",
            "valueType": "text",
            "label": "MIME Type"
          },
          {
            "key": "resourceType",
            "valueType": "text",
            "label": "Resource Type"
          }
        ],
        "items": [
          {
            "url": "https://palmbeachpost.com/",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 0,
            "networkRequestTime": 1.0569992065429688,
            "networkEndTime": 89.9399995803833,
            "finished": true,
            "transferSize": 374,
            "resourceSize": 0,
            "statusCode": 301,
            "mimeType": "",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://www.palmbeachpost.com/",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 89.9399995803833,
            "networkRequestTime": 90.34299945831299,
            "networkEndTime": 105.29100036621094,
            "finished": true,
            "transferSize": 703,
            "resourceSize": 0,
            "statusCode": 302,
            "mimeType": "",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://eu.palmbeachpost.com/",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 105.29100036621094,
            "networkRequestTime": 105.71099948883057,
            "networkEndTime": 142.9749994277954,
            "finished": true,
            "transferSize": 33242,
            "resourceSize": 149925,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "Document",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 152.39099884033203,
            "networkRequestTime": 153.13399982452393,
            "networkEndTime": 177.9399995803833,
            "finished": true,
            "transferSize": 354,
            "resourceSize": 103,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "polyfill-fastly.io"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 152.65199947357178,
            "networkRequestTime": 153.64599895477295,
            "networkEndTime": 196.51900005340576,
            "finished": true,
            "transferSize": 4255,
            "resourceSize": 11823,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 152.75,
            "networkRequestTime": 154.01499938964844,
            "networkEndTime": 193.99300003051758,
            "finished": true,
            "transferSize": 1108,
            "resourceSize": 938,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 152.80399990081787,
            "networkRequestTime": 154.21399974822998,
            "networkEndTime": 361.8129997253418,
            "finished": true,
            "transferSize": 83901,
            "resourceSize": 335587,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/NPPP/89488459007-66-z-62-1098.jpg?crop=4024,4023,x1512,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 152.94999980926514,
            "networkRequestTime": 154.38500022888184,
            "networkEndTime": 287.97900009155273,
            "finished": true,
            "transferSize": 13817,
            "resourceSize": 13569,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/10/17/PNAS/86737703007-hermes-store-010.JPG?crop=4000,3999,x1190,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.05099964141846,
            "networkRequestTime": 154.80200004577637,
            "networkEndTime": 195.26499938964844,
            "finished": true,
            "transferSize": 7056,
            "resourceSize": 6551,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Medium",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/89668763007-getty-images-2231384154-3.jpg?crop=683,682,x307,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.11999988555908,
            "networkRequestTime": 198.76699924468994,
            "networkEndTime": 208.05200004577637,
            "finished": true,
            "transferSize": 11309,
            "resourceSize": 11072,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/12/16/PBRE/87786842007-img-2684.jpeg?crop=3019,3019,x263,y5&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.17399978637695,
            "networkRequestTime": 199.04299926757812,
            "networkEndTime": 213.07599925994873,
            "finished": true,
            "transferSize": 12176,
            "resourceSize": 12054,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/10/PBRE/89548378007-koch.jpg?crop=1440,1439,x96,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.3169994354248,
            "networkRequestTime": 199.35299968719482,
            "networkEndTime": 213.26399898529053,
            "finished": true,
            "transferSize": 5974,
            "resourceSize": 5755,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/PTAL/89737077007-alex-vindman-standing.jpeg?crop=4283,4284,x0,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.35900020599365,
            "networkRequestTime": 199.57499980926514,
            "networkEndTime": 208.39900016784668,
            "finished": true,
            "transferSize": 8435,
            "resourceSize": 8191,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/03/05/PNJM/88998213007-3051569-19563-b.JPG?crop=2000,1999,x999,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.40399932861328,
            "networkRequestTime": 199.77899932861328,
            "networkEndTime": 215.5329999923706,
            "finished": true,
            "transferSize": 11978,
            "resourceSize": 11392,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/07/21/PTAL/85310284007-cfo-blaise-ingoglia-162.JPG?crop=2369,2368,x0,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.49099922180176,
            "networkRequestTime": 200.07299995422363,
            "networkEndTime": 216.91600036621094,
            "finished": true,
            "transferSize": 9041,
            "resourceSize": 8858,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/02/19/PBRE/88767218007-a-tagged-burmese-python-released-for-the-telemetry-scout-project-a-photo-credit-sam-smith-2.jpg?crop=1080,1079,x486,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.5379991531372,
            "networkRequestTime": 200.342999458313,
            "networkEndTime": 215.77899932861328,
            "finished": true,
            "transferSize": 9967,
            "resourceSize": 9847,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/02/25/USAT/88865189007-getty-images-544738956.jpg?crop=3644,3644,x1620,y5&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.59199905395508,
            "networkRequestTime": 200.61299991607666,
            "networkEndTime": 217.16899967193604,
            "finished": true,
            "transferSize": 8653,
            "resourceSize": 8420,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89648585007-20260416-t-200623-z-818692593-rc-2-jqka-9-c-5-sf-rtrmadp-3-spacemoonartemis.JPG?crop=3769,3768,x942,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 153.64599895477295,
            "networkRequestTime": 201.32200050354004,
            "networkEndTime": 218.85099983215332,
            "finished": true,
            "transferSize": 11304,
            "resourceSize": 10673,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/otSDKStub.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 157.3090000152588,
            "networkRequestTime": 158.46000003814697,
            "networkEndTime": 246.45699977874756,
            "finished": true,
            "transferSize": 9317,
            "resourceSize": 26578,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "High",
            "isLinkPreload": true,
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-loader.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 159.62299919128418,
            "networkRequestTime": 201.63299942016602,
            "networkEndTime": 214.596999168396,
            "finished": true,
            "transferSize": 1690,
            "resourceSize": 3664,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://www.gannett-cdn.com/gannett-web/properties/palmbeachpost/logos-and-branding/logo-default.svg",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 201.29199886322021,
            "networkRequestTime": 201.95099925994873,
            "networkEndTime": 216.01200008392334,
            "finished": true,
            "transferSize": 3186,
            "resourceSize": 9512,
            "statusCode": 200,
            "mimeType": "image/svg+xml",
            "resourceType": "Image",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 207.3760004043579,
            "networkRequestTime": 236.63699913024902,
            "networkEndTime": 243.16999912261963,
            "finished": true,
            "transferSize": 18096,
            "resourceSize": 17876,
            "statusCode": 200,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 207.73200035095215,
            "networkRequestTime": 237.42299938201904,
            "networkEndTime": 247.7839994430542,
            "finished": true,
            "transferSize": 18151,
            "resourceSize": 17984,
            "statusCode": 200,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 207.87299919128418,
            "networkRequestTime": 238.36799907684326,
            "networkEndTime": 250.74199962615967,
            "finished": true,
            "transferSize": 16823,
            "resourceSize": 16620,
            "statusCode": 200,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 256.4179992675781,
            "networkRequestTime": 258.99199962615967,
            "networkEndTime": 262.80099964141846,
            "finished": true,
            "transferSize": 18264,
            "resourceSize": 78891,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 256.5689992904663,
            "networkRequestTime": 259.39799976348877,
            "networkEndTime": 264.77099990844727,
            "finished": true,
            "transferSize": 5511,
            "resourceSize": 18995,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cdn.cookielaw.org/consent/86365fa6-32e8-4b61-a335-fa2c38958d67/86365fa6-32e8-4b61-a335-fa2c38958d67.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 268.7519998550415,
            "networkRequestTime": 269.20100021362305,
            "networkEndTime": 438.76500034332275,
            "finished": true,
            "transferSize": 2959,
            "resourceSize": 7954,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 275.04199981689453,
            "networkRequestTime": 275.55099964141846,
            "networkEndTime": 277.8199996948242,
            "finished": true,
            "transferSize": 3819,
            "resourceSize": 10912,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/universal.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 280.0620002746582,
            "networkRequestTime": 281.27599906921387,
            "networkEndTime": 284.1199998855591,
            "finished": true,
            "transferSize": 5562,
            "resourceSize": 25631,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/polymer.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 280.5559997558594,
            "networkRequestTime": 281.5089998245239,
            "networkEndTime": 285.97700023651123,
            "finished": true,
            "transferSize": 777,
            "resourceSize": 1403,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/elements/custom-style.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 286.2180004119873,
            "networkRequestTime": 288.2289991378784,
            "networkEndTime": 292.4650001525879,
            "finished": true,
            "transferSize": 2713,
            "resourceSize": 5518,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/legacy-element-mixin.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 288.51799964904785,
            "networkRequestTime": 292.6659994125366,
            "networkEndTime": 309.875,
            "finished": true,
            "transferSize": 10222,
            "resourceSize": 37955,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer-fn.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 288.7769994735718,
            "networkRequestTime": 292.9340000152588,
            "networkEndTime": 306.99199962615967,
            "finished": true,
            "transferSize": 986,
            "resourceSize": 1536,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/templatizer-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 288.9670000076294,
            "networkRequestTime": 293.0909996032715,
            "networkEndTime": 321.5989999771118,
            "finished": true,
            "transferSize": 2312,
            "resourceSize": 6013,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/elements/dom-bind.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 289.2220001220703,
            "networkRequestTime": 293.36499977111816,
            "networkEndTime": 339.9959993362427,
            "finished": true,
            "transferSize": 2297,
            "resourceSize": 5635,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/elements/dom-repeat.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 289.48899936676025,
            "networkRequestTime": 293.539999961853,
            "networkEndTime": 322.21099948883057,
            "finished": true,
            "transferSize": 8471,
            "resourceSize": 26333,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/elements/dom-if.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 289.79199981689453,
            "networkRequestTime": 293.75,
            "networkEndTime": 340.64599990844727,
            "finished": true,
            "transferSize": 4132,
            "resourceSize": 10725,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/elements/array-selector.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 290.61599922180176,
            "networkRequestTime": 293.9670000076294,
            "networkEndTime": 341.01399993896484,
            "finished": true,
            "transferSize": 4145,
            "resourceSize": 14055,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/mutable-data-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 290.86299896240234,
            "networkRequestTime": 294.1519994735718,
            "networkEndTime": 322.9130001068115,
            "finished": true,
            "transferSize": 2070,
            "resourceSize": 7229,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/html-tag.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 291.1319999694824,
            "networkRequestTime": 295.4940004348755,
            "networkEndTime": 350.0880002975464,
            "finished": true,
            "transferSize": 2072,
            "resourceSize": 5533,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-sticky-module/util-sticky-module.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 293.9680004119873,
            "networkRequestTime": 295.70599937438965,
            "networkEndTime": 345.76200008392334,
            "finished": true,
            "transferSize": 1443,
            "resourceSize": 2888,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-manager/nav-manager.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 294.1490001678467,
            "networkRequestTime": 295.8719997406006,
            "networkEndTime": 323.35699939727783,
            "finished": true,
            "transferSize": 3723,
            "resourceSize": 9695,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/alerts/alerts-manager/alerts-manager.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 294.39599990844727,
            "networkRequestTime": 296.0629997253418,
            "networkEndTime": 341.3519992828369,
            "finished": true,
            "transferSize": 3355,
            "resourceSize": 8271,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-search-bar/nav-search-bar.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 294.5659990310669,
            "networkRequestTime": 296.29600048065186,
            "networkEndTime": 323.70099925994873,
            "finished": true,
            "transferSize": 1471,
            "resourceSize": 2499,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-search-bucket/nav-search-bucket.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 294.80199909210205,
            "networkRequestTime": 296.628999710083,
            "networkEndTime": 324.3369998931885,
            "finished": true,
            "transferSize": 3487,
            "resourceSize": 7332,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-hub/nav-hub.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 294.98899936676025,
            "networkRequestTime": 296.8179998397827,
            "networkEndTime": 346.08899974823,
            "finished": true,
            "transferSize": 2256,
            "resourceSize": 5215,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-banner/partner-banner.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 295.51599979400635,
            "networkRequestTime": 297.007999420166,
            "networkEndTime": 346.4309997558594,
            "finished": true,
            "transferSize": 1336,
            "resourceSize": 2752,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-branded-content-tile/partner-branded-content-tile.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 295.76900005340576,
            "networkRequestTime": 297.2519998550415,
            "networkEndTime": 331.6579999923706,
            "finished": true,
            "transferSize": 900,
            "resourceSize": 1493,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-inline/partner-inline.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 296.38899993896484,
            "networkRequestTime": 297.71099948883057,
            "networkEndTime": 331.9699993133545,
            "finished": true,
            "transferSize": 1095,
            "resourceSize": 2174,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-poster/partner-poster.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 296.8759994506836,
            "networkRequestTime": 297.9659996032715,
            "networkEndTime": 332.29100036621094,
            "finished": true,
            "transferSize": 967,
            "resourceSize": 1893,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/cta/cta-atoms-container-aux/cta-atoms-container-aux.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 297.58799934387207,
            "networkRequestTime": 299.628999710083,
            "networkEndTime": 424.98600006103516,
            "finished": true,
            "transferSize": 915,
            "resourceSize": 583,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-posterscroll/partner-posterscroll.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 297.8499994277954,
            "networkRequestTime": 300.2880001068115,
            "networkEndTime": 341.82499980926514,
            "finished": true,
            "transferSize": 3254,
            "resourceSize": 8972,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-leaderboard/partner-leaderboard.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 298.01699924468994,
            "networkRequestTime": 300.6199998855591,
            "networkEndTime": 342.1659994125366,
            "finished": true,
            "transferSize": 917,
            "resourceSize": 1790,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/alerts/alerts-atoms/alerts-atoms.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 298.14799880981445,
            "networkRequestTime": 300.91899967193604,
            "networkEndTime": 351.11599922180176,
            "finished": true,
            "transferSize": 1978,
            "resourceSize": 4156,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-page-reload/util-page-reload.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 298.32499980926514,
            "networkRequestTime": 301.2530002593994,
            "networkEndTime": 426.1859998703003,
            "finished": true,
            "transferSize": 850,
            "resourceSize": 1202,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-user-subscription-manager/util-user-subscription-manager.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 298.4720001220703,
            "networkRequestTime": 301.6649990081787,
            "networkEndTime": 346.88999938964844,
            "finished": true,
            "transferSize": 1662,
            "resourceSize": 3084,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/partner/partner-gci-analytics/partner-gci-analytics.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 298.71399974823,
            "networkRequestTime": 301.96099948883057,
            "networkEndTime": 364.0060005187988,
            "finished": true,
            "transferSize": 5619,
            "resourceSize": 12781,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-section-color/util-section-color.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 298.9720001220703,
            "networkRequestTime": 304.3680000305176,
            "networkEndTime": 369.3509998321533,
            "finished": true,
            "transferSize": 1338,
            "resourceSize": 2935,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 310.0429992675781,
            "networkRequestTime": 324.61400032043457,
            "networkEndTime": 408.664999961853,
            "finished": true,
            "transferSize": 527,
            "resourceSize": 567,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/style-gather.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 310.54199981689453,
            "networkRequestTime": 324.89799976348877,
            "networkEndTime": 379.08499908447266,
            "finished": true,
            "transferSize": 2694,
            "resourceSize": 9685,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/class.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 313.1510000228882,
            "networkRequestTime": 325.13799953460693,
            "networkEndTime": 417.83599948883057,
            "finished": true,
            "transferSize": 6632,
            "resourceSize": 19488,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/apply-shim.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 315.48099994659424,
            "networkRequestTime": 325.45899963378906,
            "networkEndTime": 376.9379997253418,
            "finished": true,
            "transferSize": 478,
            "resourceSize": 555,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/element-mixin.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 315.78600025177,
            "networkRequestTime": 325.6280002593994,
            "networkEndTime": 418.05199909210205,
            "finished": true,
            "transferSize": 9473,
            "resourceSize": 31453,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/gesture-event-listeners.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 315.9499988555908,
            "networkRequestTime": 326.58799934387207,
            "networkEndTime": 418.2149991989136,
            "finished": true,
            "transferSize": 1845,
            "resourceSize": 4946,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/dir-mixin.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 316.10400009155273,
            "networkRequestTime": 326.82100009918213,
            "networkEndTime": 419.5290002822876,
            "finished": true,
            "transferSize": 2769,
            "resourceSize": 7216,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/mixin.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 316.2550001144409,
            "networkRequestTime": 327.2130002975464,
            "networkEndTime": 419.9119997024536,
            "finished": true,
            "transferSize": 1190,
            "resourceSize": 2293,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/import-href.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 316.4619998931885,
            "networkRequestTime": 327.60999965667725,
            "networkEndTime": 420.10200023651123,
            "finished": true,
            "transferSize": 1716,
            "resourceSize": 3414,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/render-status.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 316.63500022888184,
            "networkRequestTime": 327.8839988708496,
            "networkEndTime": 420.32499980926514,
            "finished": true,
            "transferSize": 1454,
            "resourceSize": 3543,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/unresolved.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 316.82599925994873,
            "networkRequestTime": 328.3759994506836,
            "networkEndTime": 375.3059997558594,
            "finished": true,
            "transferSize": 678,
            "resourceSize": 867,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/legacy/polymer.dom.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 317.02099990844727,
            "networkRequestTime": 328.57899951934814,
            "networkEndTime": 420.5269994735718,
            "finished": true,
            "transferSize": 4189,
            "resourceSize": 11727,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/templatize.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 323.371000289917,
            "networkRequestTime": 329.0050001144409,
            "networkEndTime": 377.4650001525879,
            "finished": true,
            "transferSize": 8127,
            "resourceSize": 25151,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/polymer-element.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 325.7760000228882,
            "networkRequestTime": 329.30299949645996,
            "networkEndTime": 372.3800001144409,
            "finished": true,
            "transferSize": 1239,
            "resourceSize": 1479,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/debounce.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 326.2760000228882,
            "networkRequestTime": 329.6569995880127,
            "networkEndTime": 372.6840000152588,
            "finished": true,
            "transferSize": 1861,
            "resourceSize": 4464,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/flush.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 326.6959991455078,
            "networkRequestTime": 329.86199951171875,
            "networkEndTime": 420.7749996185303,
            "finished": true,
            "transferSize": 934,
            "resourceSize": 1543,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/mutable-data.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 327.1319999694824,
            "networkRequestTime": 330.29799938201904,
            "networkEndTime": 421.0429992675781,
            "finished": true,
            "transferSize": 3132,
            "resourceSize": 10630,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-ajax/iron-ajax.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 330.74199962615967,
            "networkRequestTime": 353.10599994659424,
            "networkEndTime": 414.914999961853,
            "finished": true,
            "transferSize": 5238,
            "resourceSize": 16196,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/gallium-i18n.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 332.1209993362427,
            "networkRequestTime": 353.41899967193604,
            "networkEndTime": 409.3799991607666,
            "finished": true,
            "transferSize": 3535,
            "resourceSize": 7709,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/ui/ui-icon/ui-icon.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 332.3739995956421,
            "networkRequestTime": 353.7869997024536,
            "networkEndTime": 422.33199977874756,
            "finished": true,
            "transferSize": 18007,
            "resourceSize": 48155,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-input/paper-input.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 332.57899951934814,
            "networkRequestTime": 354.05000019073486,
            "networkEndTime": 409.52199935913086,
            "finished": true,
            "transferSize": 3684,
            "resourceSize": 10975,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-progress/paper-progress.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 337.16699981689453,
            "networkRequestTime": 354.41800022125244,
            "networkEndTime": 423.70999908447266,
            "finished": true,
            "transferSize": 2919,
            "resourceSize": 11540,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/util/util-analytics/util-analytics.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 337.7799997329712,
            "networkRequestTime": 354.7199993133545,
            "networkEndTime": 426.5640001296997,
            "finished": true,
            "transferSize": 3682,
            "resourceSize": 12349,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/packaged-content-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 337.9650001525879,
            "networkRequestTime": 355.1239995956421,
            "networkEndTime": 416.1219997406006,
            "finished": true,
            "transferSize": 1325,
            "resourceSize": 3302,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/partner-utils.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 340.886999130249,
            "networkRequestTime": 356.26300048828125,
            "networkEndTime": 410.67099952697754,
            "finished": true,
            "transferSize": 3580,
            "resourceSize": 8494,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/partner-slot.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 341.2909994125366,
            "networkRequestTime": 356.5359992980957,
            "networkEndTime": 413.6230001449585,
            "finished": true,
            "transferSize": 8569,
            "resourceSize": 28511,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/promo/promo-story-thumb-small/promo-story-thumb-small.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 341.4479990005493,
            "networkRequestTime": 356.842999458313,
            "networkEndTime": 411.2430000305176,
            "finished": true,
            "transferSize": 5096,
            "resourceSize": 14720,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/partner-bid.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 342.9029998779297,
            "networkRequestTime": 357.38599967956543,
            "networkEndTime": 409.6889991760254,
            "finished": true,
            "transferSize": 7159,
            "resourceSize": 28085,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/array-splice.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 345.83699893951416,
            "networkRequestTime": 357.73199939727783,
            "networkEndTime": 409.1929998397827,
            "finished": true,
            "transferSize": 3129,
            "resourceSize": 8392,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/boot.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 349.0899991989136,
            "networkRequestTime": 358.0269994735718,
            "networkEndTime": 410.10200023651123,
            "finished": true,
            "transferSize": 1201,
            "resourceSize": 2576,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/property-effects.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 349.36599922180176,
            "networkRequestTime": 358.36299896240234,
            "networkEndTime": 426.8719997406006,
            "finished": true,
            "transferSize": 25963,
            "resourceSize": 101693,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-promo-item/nav-promo-item.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 354.7159996032715,
            "networkRequestTime": 358.98999977111816,
            "networkEndTime": 429.23499965667725,
            "finished": true,
            "transferSize": 1206,
            "resourceSize": 2184,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/nav/nav-tree/nav-tree.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 354.9969997406006,
            "networkRequestTime": 359.33199977874756,
            "networkEndTime": 432.76999950408936,
            "finished": true,
            "transferSize": 3175,
            "resourceSize": 8970,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/gallium-element.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 358.05499935150146,
            "networkRequestTime": 359.5939998626709,
            "networkEndTime": 432.9399995803833,
            "finished": true,
            "transferSize": 1263,
            "resourceSize": 1406,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/analytics-element-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 368.04699993133545,
            "networkRequestTime": 379.79599952697754,
            "networkEndTime": 433.1319999694824,
            "finished": true,
            "transferSize": 2296,
            "resourceSize": 4949,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/popular/NPPP/10?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&searchtype=socialReferrals",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 380.8169994354248,
            "networkRequestTime": 382.08699893951416,
            "networkEndTime": 436.5629997253418,
            "finished": true,
            "transferSize": 1807,
            "resourceSize": 5364,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/argon/navreimagined/nppp/top_nav_primary/?apiKey=f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 381.3129997253418,
            "networkRequestTime": 382.5609998703003,
            "networkEndTime": 437.4989995956421,
            "finished": true,
            "transferSize": 1548,
            "resourceSize": 5933,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/popular/NPPP/10?assettype=video&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 387.72900009155273,
            "networkRequestTime": 392.26599884033203,
            "networkEndTime": 542.4019994735718,
            "finished": true,
            "transferSize": 2791,
            "resourceSize": 12045,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/popular/NPPP/10?assettype=gallery&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 388.1269998550415,
            "networkRequestTime": 392.5939998626709,
            "networkEndTime": 540.67799949646,
            "finished": true,
            "transferSize": 3276,
            "resourceSize": 16081,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://user.palmbeachpost.com/NPPP-GUP/user/",
            "sessionTargetType": "page",
            "protocol": "",
            "rendererStartTime": 400.6309995651245,
            "networkRequestTime": 400.6309995651245,
            "networkEndTime": 513.8229990005493,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 0,
            "statusCode": -1,
            "mimeType": "",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/breaking-news/?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&site-code=NPPP",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 401.6540002822876,
            "networkRequestTime": 402.9729995727539,
            "networkEndTime": 538.4569988250732,
            "finished": true,
            "transferSize": 441,
            "resourceSize": 56,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/async.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 439.70699977874756,
            "networkRequestTime": 440.11699962615967,
            "networkEndTime": 443.70599937438965,
            "finished": true,
            "transferSize": 2223,
            "resourceSize": 6112,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/resolve-url.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 445.1679992675781,
            "networkRequestTime": 445.79699993133545,
            "networkEndTime": 452.7289991378784,
            "finished": true,
            "transferSize": 1543,
            "resourceSize": 3096,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-form-element-behavior/iron-form-element-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 451.60699939727783,
            "networkRequestTime": 453.1639995574951,
            "networkEndTime": 461.79399967193604,
            "finished": true,
            "transferSize": 1133,
            "resourceSize": 2459,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-input/iron-input.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 452.1009998321533,
            "networkRequestTime": 453.45199966430664,
            "networkEndTime": 469.96099948883057,
            "finished": true,
            "transferSize": 4259,
            "resourceSize": 12456,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-input/paper-input-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 452.72700023651123,
            "networkRequestTime": 454.4959993362427,
            "networkEndTime": 465.99099922180176,
            "finished": true,
            "transferSize": 4925,
            "resourceSize": 18772,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-input/paper-input-char-counter.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 453.02299880981445,
            "networkRequestTime": 454.6809997558594,
            "networkEndTime": 471.6309995651245,
            "finished": true,
            "transferSize": 1234,
            "resourceSize": 2635,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-input/paper-input-container.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 453.3090000152588,
            "networkRequestTime": 454.83100032806396,
            "networkEndTime": 462.5579996109009,
            "finished": true,
            "transferSize": 5421,
            "resourceSize": 22395,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-input/paper-input-error.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 454.0640001296997,
            "networkRequestTime": 455.0389995574951,
            "networkEndTime": 470.3439998626709,
            "finished": true,
            "transferSize": 1262,
            "resourceSize": 2667,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/settings.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 462.210000038147,
            "networkRequestTime": 472.0319995880127,
            "networkEndTime": 479.6160001754761,
            "finished": true,
            "transferSize": 2076,
            "resourceSize": 4154,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/elements/dom-module.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 462.76999950408936,
            "networkRequestTime": 472.39499950408936,
            "networkEndTime": 482.9139995574951,
            "finished": true,
            "transferSize": 2856,
            "resourceSize": 6682,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/properties-mixin.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 463.22900009155273,
            "networkRequestTime": 472.6309995651245,
            "networkEndTime": 483.3089990615845,
            "finished": true,
            "transferSize": 3270,
            "resourceSize": 10244,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/gestures.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 465.4440002441406,
            "networkRequestTime": 472.8500003814697,
            "networkEndTime": 485.342999458313,
            "finished": true,
            "transferSize": 8062,
            "resourceSize": 27357,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/property-accessors.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 467.08199977874756,
            "networkRequestTime": 473.0860004425049,
            "networkEndTime": 480.0869998931885,
            "finished": true,
            "transferSize": 4542,
            "resourceSize": 13445,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/flattened-nodes-observer.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 473.7790002822876,
            "networkRequestTime": 474.33799934387207,
            "networkEndTime": 493.0599994659424,
            "finished": true,
            "transferSize": 3563,
            "resourceSize": 10247,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/promo-item.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 480.4439992904663,
            "networkRequestTime": 493.39099884033203,
            "networkEndTime": 520.3159999847412,
            "finished": true,
            "transferSize": 1990,
            "resourceSize": 3559,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/story/story-timestamp/story-timestamp.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 481.0949993133545,
            "networkRequestTime": 493.70499897003174,
            "networkEndTime": 522.5839996337891,
            "finished": true,
            "transferSize": 2140,
            "resourceSize": 4335,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/behaviors/image-resize.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 481.61499977111816,
            "networkRequestTime": 494.9139995574951,
            "networkEndTime": 520.4939994812012,
            "finished": true,
            "transferSize": 931,
            "resourceSize": 2041,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/ui/ui-button/ui-button.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 482.210000038147,
            "networkRequestTime": 495.3439998626709,
            "networkEndTime": 520.6459999084473,
            "finished": true,
            "transferSize": 2130,
            "resourceSize": 6565,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/media/media-badge/media-badge.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 482.5009994506836,
            "networkRequestTime": 495.6349992752075,
            "networkEndTime": 520.8369998931885,
            "finished": true,
            "transferSize": 1697,
            "resourceSize": 2404,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/promo/promo-premium-indicator/promo-premium-indicator.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 483.39899921417236,
            "networkRequestTime": 495.9650001525879,
            "networkEndTime": 522.4159994125366,
            "finished": true,
            "transferSize": 1259,
            "resourceSize": 2595,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/path.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 487.10799980163574,
            "networkRequestTime": 496.225998878479,
            "networkEndTime": 521.003999710083,
            "finished": true,
            "transferSize": 2235,
            "resourceSize": 7567,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/case-map.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 487.61199951171875,
            "networkRequestTime": 496.46399974823,
            "networkEndTime": 522.2229995727539,
            "finished": true,
            "transferSize": 949,
            "resourceSize": 1820,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/template-stamp.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 488.011999130249,
            "networkRequestTime": 496.83499908447266,
            "networkEndTime": 555.0179996490479,
            "finished": true,
            "transferSize": 6259,
            "resourceSize": 20406,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-ajax/iron-request.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 493.1490001678467,
            "networkRequestTime": 497.0949993133545,
            "networkEndTime": 555.3470001220703,
            "finished": true,
            "transferSize": 4822,
            "resourceSize": 14743,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-flex-layout/iron-flex-layout.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 497.05099964141846,
            "networkRequestTime": 500.9969997406006,
            "networkEndTime": 552.3140001296997,
            "finished": true,
            "transferSize": 2415,
            "resourceSize": 10085,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-range-behavior/iron-range-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 497.257999420166,
            "networkRequestTime": 501.30000019073486,
            "networkEndTime": 554.1429996490479,
            "finished": true,
            "transferSize": 1317,
            "resourceSize": 2859,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-styles/color.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 497.511999130249,
            "networkRequestTime": 502.08099937438965,
            "networkEndTime": 552.5599994659424,
            "finished": true,
            "transferSize": 3023,
            "resourceSize": 10953,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 509.1840000152588,
            "networkRequestTime": 517.7960004806519,
            "networkEndTime": 597.1269998550415,
            "finished": true,
            "transferSize": 131454,
            "resourceSize": 541512,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://atoms.palmbeachpost.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 514.8689994812012,
            "networkRequestTime": 518.1330003738403,
            "networkEndTime": 663.9419994354248,
            "finished": true,
            "transferSize": 16464,
            "resourceSize": 58540,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-styles/default-theme.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 517.3859996795654,
            "networkRequestTime": 518.8559999465942,
            "networkEndTime": 552.7729997634888,
            "finished": true,
            "transferSize": 1469,
            "resourceSize": 2896,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-styles/typography.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 517.7110004425049,
            "networkRequestTime": 519.8330001831055,
            "networkEndTime": 553.2639999389648,
            "finished": true,
            "transferSize": 1310,
            "resourceSize": 4412,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 520.0009994506836,
            "networkRequestTime": 521.8590002059937,
            "networkEndTime": 564.1849994659424,
            "finished": true,
            "transferSize": 5219,
            "resourceSize": 15018,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-behaviors/iron-control-state.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 520.3280000686646,
            "networkRequestTime": 522.0819997787476,
            "networkEndTime": 566.8959999084473,
            "finished": true,
            "transferSize": 1494,
            "resourceSize": 3474,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-a11y-announcer/iron-a11y-announcer.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 522.5669994354248,
            "networkRequestTime": 523.7530002593994,
            "networkEndTime": 562.048999786377,
            "finished": true,
            "transferSize": 1488,
            "resourceSize": 3371,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-validatable-behavior/iron-validatable-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 523.1069993972778,
            "networkRequestTime": 523.9839992523193,
            "networkEndTime": 565.6149997711182,
            "finished": true,
            "transferSize": 1857,
            "resourceSize": 4589,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/paper-input/paper-input-addon-behavior.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 524.8719997406006,
            "networkRequestTime": 534.7919998168945,
            "networkEndTime": 559.1069993972778,
            "finished": true,
            "transferSize": 1331,
            "resourceSize": 1520,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/properties-changed.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 529.1299991607666,
            "networkRequestTime": 536.0080003738403,
            "networkEndTime": 562.7239990234375,
            "finished": true,
            "transferSize": 5717,
            "resourceSize": 21020,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/utils/telemetry.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 532.1129989624023,
            "networkRequestTime": 536.3719997406006,
            "networkEndTime": 562.9820003509521,
            "finished": true,
            "transferSize": 966,
            "resourceSize": 1781,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://www.gannett-cdn.com/sites/palmbeachpost/images/favicon.png",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 551.4869995117188,
            "networkRequestTime": 551.8850002288818,
            "networkEndTime": 568.451000213623,
            "finished": true,
            "transferSize": 317,
            "resourceSize": 172,
            "statusCode": 200,
            "mimeType": "image/webp",
            "resourceType": "Other",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/font-roboto/roboto.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 570.079999923706,
            "networkRequestTime": 571.051999092102,
            "networkEndTime": 574.2110004425049,
            "finished": true,
            "transferSize": 568,
            "resourceSize": 707,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/iron-meta/iron-meta.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 584.5590000152588,
            "networkRequestTime": 585.5749998092651,
            "networkEndTime": 588.8039999008179,
            "finished": true,
            "transferSize": 2537,
            "resourceSize": 5526,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 588.342999458313,
            "networkRequestTime": 596.456000328064,
            "networkEndTime": 600.9119997024536,
            "finished": true,
            "transferSize": 20884,
            "resourceSize": 20664,
            "statusCode": 200,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://eu.palmbeachpost.com/?width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 610.5239992141724,
            "networkRequestTime": 611.0209999084473,
            "networkEndTime": 1049.628999710083,
            "finished": true,
            "transferSize": 165839,
            "resourceSize": 165839,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/89740057007-20260422-wpb-semmie-035.jpg?crop=2999,1687,x0,y156&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 611.5159997940063,
            "networkRequestTime": 612.0460004806519,
            "networkEndTime": 730.8219995498657,
            "finished": true,
            "transferSize": 7323,
            "resourceSize": 7072,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/NPPP/89632792007-041426-data-center-01.JPG?crop=8063,4537,x0,y269&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 611.7279996871948,
            "networkRequestTime": 612.4539995193481,
            "networkEndTime": 733.3329992294312,
            "finished": true,
            "transferSize": 16170,
            "resourceSize": 15946,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/21/NPPP/89719215007-green-cay-2.jpg?crop=3024,1700,x0,y1162&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 612.1099996566772,
            "networkRequestTime": 612.835000038147,
            "networkEndTime": 718.6009998321533,
            "finished": true,
            "transferSize": 16865,
            "resourceSize": 16617,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/10/17/PNAS/86737817007-hermes-store-025.JPG?crop=5714,3215,x0,y571&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 612.4039993286133,
            "networkRequestTime": 613.092999458313,
            "networkEndTime": 728.056999206543,
            "finished": true,
            "transferSize": 11729,
            "resourceSize": 11607,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/NPPP/89657290007-koala-sydney-perched-pbz-resize.jpg?crop=999,562,x0,y52&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 612.6019992828369,
            "networkRequestTime": 613.3509998321533,
            "networkEndTime": 725.4910001754761,
            "finished": true,
            "transferSize": 9064,
            "resourceSize": 8810,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/2019/05/23/NPPP/ghows_image-LK-9971f5eb-a2e7-4fcd-be11-a0c0ddd58df4.jpeg?crop=2499,1412,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 612.798999786377,
            "networkRequestTime": 613.57200050354,
            "networkEndTime": 726.7509994506836,
            "finished": true,
            "transferSize": 9921,
            "resourceSize": 9809,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/NPPP/89624261007-gelato-cia-100.jpg?crop=7716,4341,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 613.0260000228882,
            "networkRequestTime": 614.1330003738403,
            "networkEndTime": 713.55299949646,
            "finished": true,
            "transferSize": 12986,
            "resourceSize": 12759,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/21/NPPP/89710720007-20260420-wlk-softball-002.jpg?crop=4143,2332,x0,y215&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 613.2209997177124,
            "networkRequestTime": 614.4869995117188,
            "networkEndTime": 736.378999710083,
            "finished": true,
            "transferSize": 7867,
            "resourceSize": 7327,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2023/10/17/NPPP/71219328007-palm-beach-countys-ag-reserve-over-the-years-17.JPG?crop=2099,1181,x0,y209&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 613.4219989776611,
            "networkRequestTime": 614.7690000534058,
            "networkEndTime": 729.6909990310669,
            "finished": true,
            "transferSize": 12570,
            "resourceSize": 12078,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff-9f66cbeea2d1-Wpb_102820_Daily_CLO_13.JPG?crop=5999,3375,x0,y0&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 619.2309999465942,
            "networkRequestTime": 619.7799997329712,
            "networkEndTime": 717.4239988327026,
            "finished": true,
            "transferSize": 19523,
            "resourceSize": 19004,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89737521007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 619.6870002746582,
            "networkRequestTime": 621.5729999542236,
            "networkEndTime": 731.9179992675781,
            "finished": true,
            "transferSize": 7129,
            "resourceSize": 6988,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/89733599007-041426-data-center-103.jpg?crop=5957,3351,x0,y339&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 619.8669996261597,
            "networkRequestTime": 621.7959995269775,
            "networkEndTime": 737.7419996261597,
            "finished": true,
            "transferSize": 15061,
            "resourceSize": 14806,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89733589007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 620.0339994430542,
            "networkRequestTime": 622.4670000076294,
            "networkEndTime": 735.3709993362427,
            "finished": true,
            "transferSize": 18173,
            "resourceSize": 18042,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89730253007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 620.2170000076294,
            "networkRequestTime": 622.9359998703003,
            "networkEndTime": 745.3909997940063,
            "finished": true,
            "transferSize": 10092,
            "resourceSize": 9980,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89730417007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 620.378999710083,
            "networkRequestTime": 623.4680004119873,
            "networkEndTime": 744.2379999160767,
            "finished": true,
            "transferSize": 7097,
            "resourceSize": 6671,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/03/06/NGAG/89020997007-outreach-2.jpg?crop=3934,2213,x0,y148&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 620.5269994735718,
            "networkRequestTime": 623.9949998855591,
            "networkEndTime": 742.0549993515015,
            "finished": true,
            "transferSize": 10657,
            "resourceSize": 10435,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89718913007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 620.710000038147,
            "networkRequestTime": 624.4029998779297,
            "networkEndTime": 742.9790000915527,
            "finished": true,
            "transferSize": 11777,
            "resourceSize": 11657,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89719477007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 620.8549995422363,
            "networkRequestTime": 624.6079998016357,
            "networkEndTime": 747.96399974823,
            "finished": true,
            "transferSize": 13414,
            "resourceSize": 13280,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/wochit/thumbnails/89714825007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 621.0190000534058,
            "networkRequestTime": 624.8219995498657,
            "networkEndTime": 738.9659996032715,
            "finished": true,
            "transferSize": 6624,
            "resourceSize": 6488,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700|Roboto:400,300,300italic,400italic,500,500italic,700,700italic",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 626.0550003051758,
            "networkRequestTime": 628.8479995727539,
            "networkEndTime": 715.7289991378784,
            "finished": true,
            "transferSize": 2803,
            "resourceSize": 47834,
            "statusCode": 200,
            "mimeType": "text/css",
            "resourceType": "Stylesheet",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "Google Fonts"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 627.7139987945557,
            "networkRequestTime": 629.6089992523193,
            "networkEndTime": 635.4359998703003,
            "finished": true,
            "transferSize": 1558,
            "resourceSize": 3075,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 631.9829998016357,
            "networkRequestTime": 635.8009996414185,
            "networkEndTime": 640.547999382019,
            "finished": true,
            "transferSize": 115,
            "resourceSize": 17984,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 632.2239999771118,
            "networkRequestTime": 636.0859994888306,
            "networkEndTime": 643.5010004043579,
            "finished": true,
            "transferSize": 72,
            "resourceSize": 17876,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 632.3159990310669,
            "networkRequestTime": 636.4709997177124,
            "networkEndTime": 645.2480001449585,
            "finished": true,
            "transferSize": 45,
            "resourceSize": 20664,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 632.5469999313354,
            "networkRequestTime": 636.7220001220703,
            "networkEndTime": 642.0819997787476,
            "finished": true,
            "transferSize": 77,
            "resourceSize": 16620,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://atoms.palmbeachpost.com/atoms-configs/prod/dist/uw/NPPP/(null)/journey.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 679.0879993438721,
            "networkRequestTime": 680.1679992675781,
            "networkEndTime": 695.5190000534058,
            "finished": true,
            "transferSize": 423,
            "resourceSize": 0,
            "statusCode": 302,
            "mimeType": "application/xml",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "https://cdn.cookielaw.org/consent/86365fa6-32e8-4b61-a335-fa2c38958d67/019c9ea5-4e14-78f7-b0c9-51d04d1fbc99/en.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 693.543999671936,
            "networkRequestTime": 694.3759994506836,
            "networkEndTime": 755.4440002441406,
            "finished": true,
            "transferSize": 41109,
            "resourceSize": 228428,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cdn.cookielaw.org/vendorlist/iab2V2Data.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 694.1490001678467,
            "networkRequestTime": 694.793999671936,
            "networkEndTime": 756.6389999389648,
            "finished": true,
            "transferSize": 88924,
            "resourceSize": 693738,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 694.8610000610352,
            "networkRequestTime": 695.4739990234375,
            "networkEndTime": 721.4809999465942,
            "finished": true,
            "transferSize": 18164,
            "resourceSize": 64968,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://atoms.palmbeachpost.com/atoms-configs/prod/dist/uw/nppp/control/journey.json?originalSegment=(null)",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 695.5190000534058,
            "networkRequestTime": 696.0349998474121,
            "networkEndTime": 791.4949998855591,
            "finished": true,
            "transferSize": 396,
            "resourceSize": 130,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20userPolymer%3Dwindow.Polyme…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 696.4869995117188,
            "networkRequestTime": 696.4869995117188,
            "networkEndTime": 696.6590003967285,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2183,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20CSS_URL_RX%3D%2F(url%5C()(%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 697.4289999008179,
            "networkRequestTime": 697.4289999008179,
            "networkEndTime": 697.5880002975464,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2672,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,function%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfo…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 698.5309991836548,
            "networkRequestTime": 698.5309991836548,
            "networkEndTime": 698.7679996490479,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 9256,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 699.9169998168945,
            "networkRequestTime": 699.9169998168945,
            "networkEndTime": 700.1229991912842,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 5009,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20siteColor%3Dwindow.ga_data.site.colors.si…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 701.3090000152588,
            "networkRequestTime": 701.3090000152588,
            "networkEndTime": 701.460000038147,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 361,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/apply-shim.min.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 702.21399974823,
            "networkRequestTime": 703.0649995803833,
            "networkEndTime": 705.7069997787476,
            "finished": true,
            "transferSize": 4820,
            "resourceSize": 10617,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,%2F**%20%40suppress%20%7Bdeprecated%7D%20*%2F(function()%7B'use%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 707.8459997177124,
            "networkRequestTime": 707.8459997177124,
            "networkEndTime": 708.0030002593994,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3665,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20unique%20global%20id%20f…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 708.8579998016357,
            "networkRequestTime": 708.8579998016357,
            "networkEndTime": 709.2019996643066,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1863,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 709.8590002059937,
            "networkRequestTime": 709.8590002059937,
            "networkEndTime": 710.0469999313354,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 6199,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Module%20wit…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 711.8839998245239,
            "networkRequestTime": 711.8839998245239,
            "networkEndTime": 712.08899974823,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 7136,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20caseMap%3D%7B%7D%3Bvar%20DA…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 713.0069999694824,
            "networkRequestTime": 713.0069999694824,
            "networkEndTime": 713.1209993362427,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1394,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20Microtask%20implemented%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 714.081000328064,
            "networkRequestTime": 714.081000328064,
            "networkEndTime": 714.2339992523193,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 5682,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26type…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 715.9019994735718,
            "networkRequestTime": 715.9019994735718,
            "networkEndTime": 716.5389995574951,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 20501,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26type…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 721.3929996490479,
            "networkRequestTime": 721.3929996490479,
            "networkEndTime": 721.7869997024536,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 12872,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 723.795000076294,
            "networkRequestTime": 723.795000076294,
            "networkEndTime": 724.1789989471436,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 19930,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 727.8569993972778,
            "networkRequestTime": 739.9759998321533,
            "networkEndTime": 751.9829998016357,
            "finished": true,
            "transferSize": 59,
            "resourceSize": 17876,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 728.007999420166,
            "networkRequestTime": 740.1809997558594,
            "networkEndTime": 754.8079996109009,
            "finished": true,
            "transferSize": 45,
            "resourceSize": 17984,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 728.0629997253418,
            "networkRequestTime": 740.3380002975464,
            "networkEndTime": 753.9999990463257,
            "finished": true,
            "transferSize": 45,
            "resourceSize": 16620,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2",
            "sessionTargetType": "page",
            "protocol": "h3",
            "rendererStartTime": 738.7909994125366,
            "networkRequestTime": 755.1859998703003,
            "networkEndTime": 813.9899988174438,
            "finished": true,
            "transferSize": 37552,
            "resourceSize": 37520,
            "statusCode": 200,
            "mimeType": "font/woff2",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "Google Fonts"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 739.2039995193481,
            "networkRequestTime": 740.5819997787476,
            "networkEndTime": 753.0699996948242,
            "finished": true,
            "transferSize": 318,
            "resourceSize": 20664,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 792.9370002746582,
            "networkRequestTime": 792.9370002746582,
            "networkEndTime": 794.3999996185303,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 100964,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/assets/otCenterRounded.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 883.6879997253418,
            "networkRequestTime": 884.4479999542236,
            "networkEndTime": 912.5880002975464,
            "finished": true,
            "transferSize": 2994,
            "resourceSize": 10557,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/assets/otCommonStyles.css",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 884.3379993438721,
            "networkRequestTime": 885.0959997177124,
            "networkEndTime": 913.3559999465942,
            "finished": true,
            "transferSize": 4830,
            "resourceSize": 27608,
            "statusCode": 200,
            "mimeType": "text/css",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Provides%20b…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 898.4289989471436,
            "networkRequestTime": 898.4289989471436,
            "networkEndTime": 898.6029996871948,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1356,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 899.9389991760254,
            "networkRequestTime": 899.9389991760254,
            "networkEndTime": 900.3009996414185,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 9658,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 901.8979997634888,
            "networkRequestTime": 901.8979997634888,
            "networkEndTime": 902.4359998703003,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 30666,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 905.295000076294,
            "networkRequestTime": 905.295000076294,
            "networkEndTime": 905.4709997177124,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3961,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20detect%20native%20touch%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 907.1019992828369,
            "networkRequestTime": 907.1019992828369,
            "networkEndTime": 907.7239999771118,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 26851,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 910.6829996109009,
            "networkRequestTime": 910.6829996109009,
            "networkEndTime": 910.829999923706,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 4429,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 911.8129997253418,
            "networkRequestTime": 911.8129997253418,
            "networkEndTime": 912.0099992752075,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 6777,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20run%20a%20callback%20whe…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 914.7119989395142,
            "networkRequestTime": 914.7119989395142,
            "networkEndTime": 914.8669996261597,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2990,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20scheduled%3Dfalse%3Bvar%20b…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 944.5639991760254,
            "networkRequestTime": 944.5639991760254,
            "networkEndTime": 944.7279996871948,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3121,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20unresolved%0Afunction%20…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 945.4029998779297,
            "networkRequestTime": 945.4029998779297,
            "networkEndTime": 945.5860004425049,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 480,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bfunction%20newSplice(index%2Cremo…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 946.168999671936,
            "networkRequestTime": 946.168999671936,
            "networkEndTime": 946.3589992523193,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 7970,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 947.4349994659424,
            "networkRequestTime": 947.4349994659424,
            "networkEndTime": 947.6490001678467,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 9727,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20debouncerQueue%3D%5B%5D%3B%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 949.1359996795654,
            "networkRequestTime": 949.1359996795654,
            "networkEndTime": 949.261999130249,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1114,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 949.971999168396,
            "networkRequestTime": 949.971999168396,
            "networkEndTime": 950.2259998321533,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 11133,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 952.0419998168945,
            "networkRequestTime": 952.0419998168945,
            "networkEndTime": 952.721999168396,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 37092,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 955.5699996948242,
            "networkRequestTime": 955.5699996948242,
            "networkEndTime": 955.9890003204346,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 19044,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Legacy…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 957.9399995803833,
            "networkRequestTime": 957.9399995803833,
            "networkEndTime": 958.085000038147,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1111,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 958.8159999847412,
            "networkRequestTime": 958.8159999847412,
            "networkEndTime": 959.0469999313354,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 10198,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 960.8049993515015,
            "networkRequestTime": 960.8049993515015,
            "networkEndTime": 961.1789999008179,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 24612,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20TemplateInstanceBase%3DPoly…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 965.1279993057251,
            "networkRequestTime": 965.1279993057251,
            "networkEndTime": 965.3079996109009,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 5584,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 966.1949996948242,
            "networkRequestTime": 966.1949996948242,
            "networkEndTime": 966.4439992904663,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 5022,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 968.0719995498657,
            "networkRequestTime": 968.0719995498657,
            "networkEndTime": 968.3079996109009,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 5107,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Base%20class…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 969.5129995346069,
            "networkRequestTime": 969.5129995346069,
            "networkEndTime": 969.6709995269775,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 939,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(o…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 971.1659994125366,
            "networkRequestTime": 971.1659994125366,
            "networkEndTime": 971.625,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 25690,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(o…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 974.5879993438721,
            "networkRequestTime": 974.5879993438721,
            "networkEndTime": 974.8189992904663,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 10133,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(ta…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 976.3959999084473,
            "networkRequestTime": 976.3959999084473,
            "networkEndTime": 976.6479997634888,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 13519,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20mutablePropertyChange%3Dvoi…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 978.4659996032715,
            "networkRequestTime": 978.4659996032715,
            "networkEndTime": 978.6680002212524,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 6798,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%2F%2F%20bc%0APolymer.Base%3DPolymer.LegacyElementMixin(HTMLElem…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 979.628999710083,
            "networkRequestTime": 979.628999710083,
            "networkEndTime": 979.842999458313,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 314,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-sticky-module'%2Cproperti…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 980.9980001449585,
            "networkRequestTime": 980.9980001449585,
            "networkEndTime": 981.136999130249,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2295,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20'use%20strict'%3B%0A%0A%20%20Polymer(%7B%0A%20%20%20%20…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 983.3000001907349,
            "networkRequestTime": 983.3000001907349,
            "networkEndTime": 983.6129999160767,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 14135,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20'use%20strict'%3B%0A%0A%20%20Polymer(%7B%0A%0A%20%20%20…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 985.673999786377,
            "networkRequestTime": 985.673999786377,
            "networkEndTime": 986.0150003433228,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 14924,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22func…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 988.4079999923706,
            "networkRequestTime": 988.4079999923706,
            "networkEndTime": 988.6469993591309,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 9348,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22func…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 990.4249992370605,
            "networkRequestTime": 990.4249992370605,
            "networkEndTime": 990.7499990463257,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 11284,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'alerts-manager'%2CdesignId%3A'…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 993.1429996490479,
            "networkRequestTime": 993.1429996490479,
            "networkEndTime": 993.4670000076294,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 7418,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/intl-messageformat/dist/intl-messageformat.min.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 995.9609994888306,
            "networkRequestTime": 996.8509998321533,
            "networkEndTime": 999.6889991760254,
            "finished": true,
            "transferSize": 5183,
            "resourceSize": 16323,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F*global%20IntlMessageFormat%20*%2Fwindow.ga_…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1002.2180004119873,
            "networkRequestTime": 1002.2180004119873,
            "networkEndTime": 1002.3959999084473,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 6179,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-icon'%2CdesignId%3A'UI9'%2C…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1003.4149990081787,
            "networkRequestTime": 1003.4149990081787,
            "networkEndTime": 1003.5570001602173,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1553,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20%2F**%0A%20%20Polymer.IronFormElementBehavior%20enables…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1023.8569993972778,
            "networkRequestTime": 1023.8569993972778,
            "networkEndTime": 1024.0819997787476,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2043,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1026.9939994812012,
            "networkRequestTime": 1027.5609998703003,
            "networkEndTime": 1029.8899993896484,
            "finished": true,
            "transferSize": 49,
            "resourceSize": 16620,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1028.218999862671,
            "networkRequestTime": 1028.798999786377,
            "networkEndTime": 1032.1350002288818,
            "finished": true,
            "transferSize": 45,
            "resourceSize": 17984,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1028.5179996490479,
            "networkRequestTime": 1028.9499998092651,
            "networkEndTime": 1033.0319995880127,
            "finished": true,
            "transferSize": 45,
            "resourceSize": 17876,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1028.6549997329712,
            "networkRequestTime": 1030.0699996948242,
            "networkEndTime": 1034.0629997253418,
            "finished": true,
            "transferSize": 72,
            "resourceSize": 20664,
            "statusCode": 304,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20%20%20(function()%20%7B%0A%20%20%20%20%20%20'use%20s…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1059.2729997634888,
            "networkRequestTime": 1059.2729997634888,
            "networkEndTime": 1059.423999786377,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1812,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20(function()%20%7B%0A%0A%20%20%20%20%2F**%0A%20%20%20…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1060.3940000534058,
            "networkRequestTime": 1060.3940000534058,
            "networkEndTime": 1060.5509996414185,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3838,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20%2F**%0A%20%20%20*%20Singleton%20IronMeta%20instance.%0…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1061.8240003585815,
            "networkRequestTime": 1061.8240003585815,
            "networkEndTime": 1062.0269994735718,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 4116,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20%20%20Polymer(%7B%0A%20%20%20%20%20%20is%3A%20'iron-inp…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1062.9700002670288,
            "networkRequestTime": 1062.9700002670288,
            "networkEndTime": 1063.350998878479,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 8981,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20(function()%20%7B%0A%20%20'use%20strict'%3B%0A%0A%20%20…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1065.0109996795654,
            "networkRequestTime": 1065.0109996795654,
            "networkEndTime": 1065.3229990005493,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 14596,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F**%0A%20%20%20*%20%40demo%20demo%2Findex.html%0A%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1066.902000427246,
            "networkRequestTime": 1066.902000427246,
            "networkEndTime": 1067.0880002975464,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3038,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F%2F%20Generate%20unique%2C%20monotonically%20incr…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1068.181999206543,
            "networkRequestTime": 1068.181999206543,
            "networkEndTime": 1068.6099996566772,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 18183,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F**%0A%20%20%20*%20Use%20%60Polymer.PaperInputAddo…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1070.7670001983643,
            "networkRequestTime": 1070.7670001983643,
            "networkEndTime": 1070.9159994125366,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1089,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-char-cou…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1071.6269998550415,
            "networkRequestTime": 1071.6269998550415,
            "networkEndTime": 1071.8599996566772,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1105,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-containe…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1072.6949996948242,
            "networkRequestTime": 1072.6949996948242,
            "networkEndTime": 1072.9349994659424,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 8425,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-error'%2…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1074.0830001831055,
            "networkRequestTime": 1074.0830001831055,
            "networkEndTime": 1074.2359991073608,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 883,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input'%2C%0A%0…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1074.9619998931885,
            "networkRequestTime": 1074.9619998931885,
            "networkEndTime": 1075.1619997024536,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2416,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-search-bar'%2CdesignId%3A'…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1076.0080003738403,
            "networkRequestTime": 1076.0080003738403,
            "networkEndTime": 1076.10599899292,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1434,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%2F**%0A%20*%20%60iron-range-behavior%60%20provides%20t…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1077.1189994812012,
            "networkRequestTime": 1077.1189994812012,
            "networkEndTime": 1077.2329988479614,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2429,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-progress'%2C%0…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1077.8599996566772,
            "networkRequestTime": 1077.8599996566772,
            "networkEndTime": 1077.9829998016357,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2770,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behav…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1078.7289991378784,
            "networkRequestTime": 1078.7289991378784,
            "networkEndTime": 1078.8509998321533,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3386,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-search-bucket'%2CdesignId%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1079.6389989852905,
            "networkRequestTime": 1079.6389989852905,
            "networkEndTime": 1079.7749996185303,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 5431,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behav…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1080.958999633789,
            "networkRequestTime": 1080.958999633789,
            "networkEndTime": 1081.0780000686646,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3627,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-promo-item'%2CdesignId%3A'…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1081.6870002746582,
            "networkRequestTime": 1081.6870002746582,
            "networkEndTime": 1081.8399991989136,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 988,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Base%20Gallium%20fra…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1082.664999961853,
            "networkRequestTime": 1082.664999961853,
            "networkEndTime": 1082.7649993896484,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1408,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-tree'%2CdesignId%3A'N16'%2…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1083.284999847412,
            "networkRequestTime": 1083.284999847412,
            "networkEndTime": 1083.4259996414185,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3297,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-hub'%2CdesignId%3A'N4'%2Cb…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1084.5880002975464,
            "networkRequestTime": 1084.5880002975464,
            "networkEndTime": 1084.7549991607666,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2519,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%20%40polymerBehavior%20window.ga_data.beh…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1085.7639999389648,
            "networkRequestTime": 1085.7639999389648,
            "networkEndTime": 1086.008999824524,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 8565,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,%2F*global%20window%3Atrue*%2F%2F*global%20document%3Atrue*%2F%2…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1087.462999343872,
            "networkRequestTime": 1087.462999343872,
            "networkEndTime": 1087.8659992218018,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 28581,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20beha…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1090.402000427246,
            "networkRequestTime": 1090.402000427246,
            "networkEndTime": 1090.7639999389648,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 28154,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpa…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1092.936999320984,
            "networkRequestTime": 1092.936999320984,
            "networkEndTime": 1093.2879991531372,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2494,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'story-timestamp'%2CdesignId%3A…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1094.8899993896484,
            "networkRequestTime": 1094.8899993896484,
            "networkEndTime": 1095.007999420166,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3757,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behav…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1096.0290002822876,
            "networkRequestTime": 1096.0290002822876,
            "networkEndTime": 1096.1549997329712,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2111,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-button'%2CdesignId%3A'UI2'%…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1096.6809997558594,
            "networkRequestTime": 1096.6809997558594,
            "networkEndTime": 1096.7760000228882,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1722,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'media-badge'%2Cproperties%3A%7…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1097.4089994430542,
            "networkRequestTime": 1097.4089994430542,
            "networkEndTime": 1097.5120000839233,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1336,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'promo-premium-indicator'%2Cbeh…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1098.4849996566772,
            "networkRequestTime": 1098.4849996566772,
            "networkEndTime": 1098.633999824524,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1334,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_slicedToArray%3Dfunction()%7Bfunction%20…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1099.5339994430542,
            "networkRequestTime": 1099.5339994430542,
            "networkEndTime": 1099.7250003814697,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 8131,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20%60%3Cpartner-brande…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1100.78600025177,
            "networkRequestTime": 1100.78600025177,
            "networkEndTime": 1100.8859996795654,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1281,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpa…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1101.8329992294312,
            "networkRequestTime": 1101.8329992294312,
            "networkEndTime": 1101.9329996109009,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1916,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpa…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1103.6829996109009,
            "networkRequestTime": 1103.6829996109009,
            "networkEndTime": 1103.7869997024536,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1634,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'cta-atoms-container-aux'%7D)%3…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1105.0989999771118,
            "networkRequestTime": 1105.0989999771118,
            "networkEndTime": 1105.2430000305176,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 328,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpa…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1106.4649991989136,
            "networkRequestTime": 1106.4649991989136,
            "networkEndTime": 1106.6169996261597,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 8719,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpa…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1108.1169996261597,
            "networkRequestTime": 1108.1169996261597,
            "networkEndTime": 1108.2159996032715,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 1537,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_createClass%3Dfunction()%7Bfunction%20de…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1109.1189994812012,
            "networkRequestTime": 1109.1189994812012,
            "networkEndTime": 1109.2319993972778,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 3711,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-page-reload'%2Cproperties…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1110.5399990081787,
            "networkRequestTime": 1110.5399990081787,
            "networkEndTime": 1110.6319999694824,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 992,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-user-subscription-manager…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1111.7399997711182,
            "networkRequestTime": 1111.7399997711182,
            "networkEndTime": 1111.8489990234375,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2951,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behav…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1112.8549995422363,
            "networkRequestTime": 1112.8549995422363,
            "networkEndTime": 1112.9930000305176,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 4961,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.gciAnalyticsUAID%3Dwindow.ga_data.site.u…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1113.8269996643066,
            "networkRequestTime": 1113.8269996643066,
            "networkEndTime": 1114.0199995040894,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 12383,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://eu.palmbeachpost.com/gcdn/dcjs/prod/main.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1115.3349990844727,
            "networkRequestTime": 1115.9409999847412,
            "networkEndTime": 1143.5329990386963,
            "finished": true,
            "transferSize": 18101,
            "resourceSize": 54103,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-section-color'%2Cproperti…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1116.0909996032715,
            "networkRequestTime": 1116.0909996032715,
            "networkEndTime": 1116.2039995193481,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 2774,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          },
          {
            "url": "https://eu.palmbeachpost.com/gcdn/dcc/prod/NPPP-TEALIUM-UW.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1151.5199995040894,
            "networkRequestTime": 1152.3259992599487,
            "networkEndTime": 1283.2299995422363,
            "finished": true,
            "transferSize": 6143,
            "resourceSize": 28602,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "palmbeachpost.com"
          }
        ],
        "debugData": {
          "type": "debugdata",
          "networkStartTimeTs": 5991780800864,
          "initiators": [
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 220,
              "columnNumber": 214
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 220,
              "columnNumber": 356
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 220,
              "columnNumber": 771
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 220,
              "columnNumber": 1220
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 523,
              "columnNumber": 1277
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 525,
              "columnNumber": 1318
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 527,
              "columnNumber": 1358
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 529,
              "columnNumber": 1260
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 531,
              "columnNumber": 1217
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 533,
              "columnNumber": 1345
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 535,
              "columnNumber": 1297
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 537,
              "columnNumber": 1355
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 539,
              "columnNumber": 1826
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 542,
              "columnNumber": 1360
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 544,
              "columnNumber": 1727
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 582,
              "columnNumber": 655
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 582,
              "columnNumber": 655
            },
            {
              "type": "parser",
              "url": "https://eu.palmbeachpost.com/",
              "lineNumber": 582,
              "columnNumber": 655
            },
            {
              "type": "script",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
              "lineNumber": 0,
              "columnNumber": 22
            },
            {
              "type": "script",
              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
              "lineNumber": 1,
              "columnNumber": 20
            },
            {
              "type": "parser",
              "url": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700|Roboto:400,300,300italic,400italic,500,500italic,700,700italic"
            }
          ]
        }
      }
    },
    "network-rtt": {
      "id": "network-rtt",
      "title": "Network Round Trip Times",
      "description": "Network round trip times (RTT) have a large impact on performance. If the RTT to an origin is high, it's an indication that servers closer to the user could improve performance. [Learn more about the Round Trip Time](https://hpbn.co/primer-on-latency-and-bandwidth/).",
      "score": 1,
      "scoreDisplayMode": "informative",
      "numericValue": 26.034000000000002,
      "numericUnit": "millisecond",
      "displayValue": "30 ms",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "origin",
            "valueType": "text",
            "label": "URL"
          },
          {
            "key": "rtt",
            "valueType": "ms",
            "granularity": 1,
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "origin": "https://fonts.googleapis.com",
            "rtt": 26.034000000000002
          },
          {
            "origin": "https://palmbeachpost.com",
            "rtt": 25.203
          },
          {
            "origin": "https://cdn.cookielaw.org",
            "rtt": 16.833
          },
          {
            "origin": "https://fonts.gstatic.com",
            "rtt": 11.245
          },
          {
            "origin": "https://api.gannett-cdn.com",
            "rtt": 1.6072500000000005
          },
          {
            "origin": "https://eu.palmbeachpost.com",
            "rtt": 1.0635299999999994
          },
          {
            "origin": "https://cpt-static.gannettdigital.com",
            "rtt": 0.9239999999999995
          },
          {
            "origin": "https://atoms.palmbeachpost.com",
            "rtt": 0.397
          },
          {
            "origin": "https://www.palmbeachpost.com",
            "rtt": 0.375
          },
          {
            "origin": "https://polyfill-fastly.io",
            "rtt": 0.3739999999999988
          },
          {
            "origin": "https://www.gannett-cdn.com",
            "rtt": 0.357999999999997
          }
        ],
        "sortedBy": [
          "rtt"
        ]
      }
    },
    "network-server-latency": {
      "id": "network-server-latency",
      "title": "Server Backend Latencies",
      "description": "Server latencies can impact web performance. If the server latency of an origin is high, it's an indication the server is overloaded or has poor backend performance. [Learn more about server response time](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall).",
      "score": 1,
      "scoreDisplayMode": "informative",
      "numericValue": 103.4325,
      "numericUnit": "millisecond",
      "displayValue": "100 ms",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "origin",
            "valueType": "text",
            "label": "URL"
          },
          {
            "key": "serverResponseTime",
            "valueType": "ms",
            "granularity": 1,
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "origin": "https://www.gannett-cdn.com",
            "serverResponseTime": 103.4325
          },
          {
            "origin": "https://api.gannett-cdn.com",
            "serverResponseTime": 101.39075
          },
          {
            "origin": "https://atoms.palmbeachpost.com",
            "serverResponseTime": 92.26599999999999
          },
          {
            "origin": "https://eu.palmbeachpost.com",
            "serverResponseTime": 78.09747000000002
          },
          {
            "origin": "https://fonts.gstatic.com",
            "serverResponseTime": 15.711
          },
          {
            "origin": "https://cdn.cookielaw.org",
            "serverResponseTime": 7.7130000000000045
          },
          {
            "origin": "https://fonts.googleapis.com",
            "serverResponseTime": 4.147000000000002
          },
          {
            "origin": "https://cpt-static.gannettdigital.com",
            "serverResponseTime": 3.982999999999997
          },
          {
            "origin": "https://palmbeachpost.com",
            "serverResponseTime": 3.492000000000001
          },
          {
            "origin": "https://www.palmbeachpost.com",
            "serverResponseTime": 3.0980000000000008
          },
          {
            "origin": "https://polyfill-fastly.io",
            "serverResponseTime": 1.5420000000000016
          }
        ],
        "sortedBy": [
          "serverResponseTime"
        ]
      }
    },
    "main-thread-tasks": {
      "id": "main-thread-tasks",
      "title": "Tasks",
      "description": "Lists the toplevel main thread tasks that executed during page load.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "startTime",
            "valueType": "ms",
            "granularity": 1,
            "label": "Start Time"
          },
          {
            "key": "duration",
            "valueType": "ms",
            "granularity": 1,
            "label": "End Time"
          }
        ],
        "items": [
          {
            "duration": 9.245,
            "startTime": 145.98
          },
          {
            "duration": 5.371,
            "startTime": 155.549
          },
          {
            "duration": 8.2,
            "startTime": 196.523
          },
          {
            "duration": 26.264,
            "startTime": 205.475
          },
          {
            "duration": 6.662,
            "startTime": 241.219
          },
          {
            "duration": 7.278,
            "startTime": 262.725
          },
          {
            "duration": 5.083,
            "startTime": 287.867
          },
          {
            "duration": 12.34,
            "startTime": 293.713
          },
          {
            "duration": 6.544,
            "startTime": 306.153
          },
          {
            "duration": 7.183,
            "startTime": 370.565
          },
          {
            "duration": 54.747,
            "startTime": 377.764
          },
          {
            "duration": 5.605,
            "startTime": 451.045
          },
          {
            "duration": 5.414,
            "startTime": 479.679
          },
          {
            "duration": 5.147,
            "startTime": 485.119
          },
          {
            "duration": 5.822,
            "startTime": 557.693
          },
          {
            "duration": 7.792,
            "startTime": 588.641
          },
          {
            "duration": 18.112,
            "startTime": 596.582
          },
          {
            "duration": 7.532,
            "startTime": 615.242
          },
          {
            "duration": 5.415,
            "startTime": 623.816
          },
          {
            "duration": 31.708,
            "startTime": 629.989
          },
          {
            "duration": 8.391,
            "startTime": 664.697
          },
          {
            "duration": 6.186,
            "startTime": 674.235
          },
          {
            "duration": 15.889,
            "startTime": 680.461
          },
          {
            "duration": 17.911,
            "startTime": 725.918
          },
          {
            "duration": 8.037,
            "startTime": 757.787
          },
          {
            "duration": 7.713,
            "startTime": 778.627
          },
          {
            "duration": 6.365,
            "startTime": 790.691
          },
          {
            "duration": 87.16,
            "startTime": 798.623
          },
          {
            "duration": 5.036,
            "startTime": 886.893
          },
          {
            "duration": 7.446,
            "startTime": 892.805
          },
          {
            "duration": 24.662,
            "startTime": 916.525
          },
          {
            "duration": 20.576,
            "startTime": 1004.687
          },
          {
            "duration": 23.039,
            "startTime": 1025.282
          },
          {
            "duration": 7.973,
            "startTime": 1051.404
          },
          {
            "duration": 7.438,
            "startTime": 1117.333
          },
          {
            "duration": 5.149,
            "startTime": 1679.001
          }
        ]
      }
    },
    "metrics": {
      "id": "metrics",
      "title": "Metrics",
      "description": "Collects all available metrics.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "numericValue": 10918,
      "numericUnit": "millisecond",
      "details": {
        "type": "debugdata",
        "items": [
          {
            "firstContentfulPaint": 3694,
            "largestContentfulPaint": 10531,
            "interactive": 10918,
            "speedIndex": 3823,
            "totalBlockingTime": 277,
            "maxPotentialFID": 349,
            "cumulativeLayoutShift": 0.645698,
            "cumulativeLayoutShiftMainFrame": 0.645698,
            "timeToFirstByte": 678,
            "observedTimeOrigin": 0,
            "observedTimeOriginTs": 5991780799973,
            "observedNavigationStart": 0,
            "observedNavigationStartTs": 5991780799973,
            "observedFirstPaint": 255,
            "observedFirstPaintTs": 5991781055057,
            "observedFirstContentfulPaint": 255,
            "observedFirstContentfulPaintTs": 5991781055057,
            "observedFirstContentfulPaintAllFrames": 255,
            "observedFirstContentfulPaintAllFramesTs": 5991781055057,
            "observedLargestContentfulPaint": 954,
            "observedLargestContentfulPaintTs": 5991781753685,
            "observedLargestContentfulPaintAllFrames": 954,
            "observedLargestContentfulPaintAllFramesTs": 5991781753685,
            "observedTraceEnd": 3605,
            "observedTraceEndTs": 5991784405129,
            "observedLoad": 432,
            "observedLoadTs": 5991781231877,
            "observedDomContentLoaded": 431,
            "observedDomContentLoadedTs": 5991781230557,
            "observedCumulativeLayoutShift": 0.645698,
            "observedCumulativeLayoutShiftMainFrame": 0.645698,
            "observedFirstVisualChange": 255,
            "observedFirstVisualChangeTs": 5991781054973,
            "observedLastVisualChange": 1946,
            "observedLastVisualChangeTs": 5991782745973,
            "observedSpeedIndex": 838,
            "observedSpeedIndexTs": 5991781637648
          },
          {
            "lcpInvalidated": false
          }
        ]
      }
    },
    "resource-summary": {
      "id": "resource-summary",
      "title": "Resources Summary",
      "description": "Aggregates all network requests and groups them by type",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "label",
            "valueType": "text",
            "label": "Resource Type"
          },
          {
            "key": "requestCount",
            "valueType": "numeric",
            "label": "Requests"
          },
          {
            "key": "transferSize",
            "valueType": "bytes",
            "label": "Transfer Size"
          }
        ],
        "items": [
          {
            "resourceType": "total",
            "label": "Total",
            "requestCount": 187,
            "transferSize": 1468095
          },
          {
            "resourceType": "image",
            "label": "Image",
            "requestCount": 32,
            "transferSize": 502777
          },
          {
            "resourceType": "other",
            "label": "Other",
            "requestCount": 120,
            "transferSize": 492817
          },
          {
            "resourceType": "script",
            "label": "Script",
            "requestCount": 16,
            "transferSize": 323963
          },
          {
            "resourceType": "font",
            "label": "Font",
            "requestCount": 17,
            "transferSize": 112493
          },
          {
            "resourceType": "document",
            "label": "Document",
            "requestCount": 1,
            "transferSize": 33242
          },
          {
            "resourceType": "stylesheet",
            "label": "Stylesheet",
            "requestCount": 1,
            "transferSize": 2803
          },
          {
            "resourceType": "media",
            "label": "Media",
            "requestCount": 0,
            "transferSize": 0
          },
          {
            "resourceType": "third-party",
            "label": "Third-party",
            "requestCount": 177,
            "transferSize": 1226410
          }
        ]
      }
    },
    "layout-shifts": {
      "id": "layout-shifts",
      "title": "Avoid large layout shifts",
      "description": "These are the largest layout shifts observed on the page. Each table item represents a single layout shift, and shows the element that shifted the most. Below each item are possible root causes that led to the layout shift. Some of these layout shifts may not be included in the CLS metric value due to [windowing](https://web.dev/articles/cls#what_is_cls). [Learn how to improve CLS](https://web.dev/articles/optimize-cls)",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "9 layout shifts found",
      "metricSavings": {
        "CLS": 0.646
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "extra"
            },
            "label": "Element"
          },
          {
            "key": "score",
            "valueType": "numeric",
            "subItemsHeading": {
              "key": "cause",
              "valueType": "text"
            },
            "granularity": 0.001,
            "label": "Layout shift score"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "page-6-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A",
              "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
              "boundingRect": {
                "top": 305,
                "bottom": 409,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 104
              },
              "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/powerball-numbers-wednesday-april-winner-florida/89…\" data-module-name=\"promo-story-thumb-small\" data-index=\"3\" onclick=\"firePromoAnalytics(event)\">",
              "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets\nNews "
            },
            "score": 0.484941,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-12-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                    "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                    "boundingRect": {
                      "top": 1449,
                      "bottom": 1680,
                      "left": 0,
                      "right": 412,
                      "width": 412,
                      "height": 232
                    },
                    "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                    "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                  },
                  "cause": "Media element lacking an explicit size"
                },
                {
                  "extra": {
                    "type": "url",
                    "value": "https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2"
                  },
                  "cause": "Web font loaded"
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-6-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A",
              "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
              "boundingRect": {
                "top": 305,
                "bottom": 409,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 104
              },
              "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/powerball-numbers-wednesday-april-winner-florida/89…\" data-module-name=\"promo-story-thumb-small\" data-index=\"3\" onclick=\"firePromoAnalytics(event)\">",
              "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets\nNews "
            },
            "score": 0.093424,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-10-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                    "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                    "boundingRect": {
                      "top": 305,
                      "bottom": 409,
                      "left": 273,
                      "right": 378,
                      "width": 104,
                      "height": 104
                    },
                    "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/896…\" class=\"p1-image\" alt=\"Powerball hits triple digits, $100 million. Check April 22 tickets\">",
                    "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-2-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,5,A",
              "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
              "boundingRect": {
                "top": 425,
                "bottom": 530,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 104
              },
              "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/florida-lotto-numbers-wednesday-april-winner-florid…\" data-module-name=\"promo-story-thumb-small\" data-index=\"4\" onclick=\"firePromoAnalytics(event)\">",
              "nodeLabel": "Florida Lotto numbers for Wednesday, April 22, a $17 million prize\nNews "
            },
            "score": 0.033837,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-10-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                    "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                    "boundingRect": {
                      "top": 305,
                      "bottom": 409,
                      "left": 273,
                      "right": 378,
                      "width": 104,
                      "height": 104
                    },
                    "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/896…\" class=\"p1-image\" alt=\"Powerball hits triple digits, $100 million. Check April 22 tickets\">",
                    "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-6-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A",
              "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
              "boundingRect": {
                "top": 305,
                "bottom": 409,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 104
              },
              "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/powerball-numbers-wednesday-april-winner-florida/89…\" data-module-name=\"promo-story-thumb-small\" data-index=\"3\" onclick=\"firePromoAnalytics(event)\">",
              "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets\nNews "
            },
            "score": 0.025254,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-11-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,1,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                    "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                    "boundingRect": {
                      "top": 64,
                      "bottom": 168,
                      "left": 273,
                      "right": 378,
                      "width": 104,
                      "height": 104
                    },
                    "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/NPPP/894…\" class=\"p1-image\" alt=\"5 best things to do in Palm Beach County this weekend (April 24-26)\">",
                    "nodeLabel": "5 best things to do in Palm Beach County this weekend (April 24-26)"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-8-DIV",
              "path": "1,HTML,1,BODY,12,DIV,1,DIV,0,DIV,0,DIV,1,DIV",
              "selector": "div#onetrust-banner-sdk > div.ot-sdk-container > div.ot-sdk-row > div#onetrust-button-group-parent",
              "boundingRect": {
                "top": 566,
                "bottom": 752,
                "left": 10,
                "right": 402,
                "width": 391,
                "height": 186
              },
              "snippet": "<div id=\"onetrust-button-group-parent\" class=\"ot-sdk-twelve ot-sdk-columns has-reject-all-button\">",
              "nodeLabel": "Manage Cookies\nReject All Accept All"
            },
            "score": 0.004138,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-12-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                    "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                    "boundingRect": {
                      "top": 1449,
                      "bottom": 1680,
                      "left": 0,
                      "right": 412,
                      "width": 412,
                      "height": 232
                    },
                    "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                    "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-8-DIV",
              "path": "1,HTML,1,BODY,12,DIV,1,DIV,0,DIV,0,DIV,1,DIV",
              "selector": "div#onetrust-banner-sdk > div.ot-sdk-container > div.ot-sdk-row > div#onetrust-button-group-parent",
              "boundingRect": {
                "top": 566,
                "bottom": 752,
                "left": 10,
                "right": 402,
                "width": 391,
                "height": 186
              },
              "snippet": "<div id=\"onetrust-button-group-parent\" class=\"ot-sdk-twelve ot-sdk-columns has-reject-all-button\">",
              "nodeLabel": "Manage Cookies\nReject All Accept All"
            },
            "score": 0.004035,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-12-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                    "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                    "boundingRect": {
                      "top": 1449,
                      "bottom": 1680,
                      "left": 0,
                      "right": 412,
                      "width": 412,
                      "height": 232
                    },
                    "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                    "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "score": 0.000023,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-11-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,1,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                    "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                    "boundingRect": {
                      "top": 64,
                      "bottom": 168,
                      "left": 273,
                      "right": 378,
                      "width": 104,
                      "height": 104
                    },
                    "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/NPPP/894…\" class=\"p1-image\" alt=\"5 best things to do in Palm Beach County this weekend (April 24-26)\">",
                    "nodeLabel": "5 best things to do in Palm Beach County this weekend (April 24-26)"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "score": 0.000023,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-12-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                    "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                    "boundingRect": {
                      "top": 1449,
                      "bottom": 1680,
                      "left": 0,
                      "right": 412,
                      "width": 412,
                      "height": 232
                    },
                    "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                    "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          },
          {
            "score": 0.000023,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "extra": {
                    "type": "node",
                    "lhId": "page-12-IMG",
                    "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                    "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                    "boundingRect": {
                      "top": 1449,
                      "bottom": 1680,
                      "left": 0,
                      "right": 412,
                      "width": 412,
                      "height": 232
                    },
                    "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                    "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                  },
                  "cause": "Media element lacking an explicit size"
                }
              ]
            }
          }
        ]
      },
      "guidanceLevel": 2
    },
    "long-tasks": {
      "id": "long-tasks",
      "title": "Avoid long main-thread tasks",
      "description": "Lists the longest tasks on the main thread, useful for identifying worst contributors to input delay. [Learn how to avoid long main-thread tasks](https://web.dev/articles/optimize-long-tasks)",
      "score": 1,
      "scoreDisplayMode": "informative",
      "displayValue": "7 long tasks found",
      "metricSavings": {
        "TBT": 300
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "startTime",
            "valueType": "ms",
            "granularity": 1,
            "label": "Start Time"
          },
          {
            "key": "duration",
            "valueType": "ms",
            "granularity": 1,
            "label": "Duration"
          }
        ],
        "items": [
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "duration": 349,
            "startTime": 11238.837010000005
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "duration": 109,
            "startTime": 6478.4460100000015
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-icon'%2CdesignId%3A'UI9'%2Cproperties%3A%7BiconName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CimgSource%3A%7Btype%3AString%2Cvalue%3A''%7D%2CiconFull%3A%7Btype%3AString%2Ccomputed%3A'_makeIcon(iconName%2C%20imgSource%2C%20svgResize)'%7D%2CsvgResize%3A%7Btype%3ANumber%7D%7D%2C_makeIcon%3Afunction%20_makeIcon(iconName%2CimgSource%2CsvgResize)%7Bif(iconName)%7Bvar%20iconData%3Dthis.%24.iconMap.querySelector('%23'%2BiconName)%3B%2F%2F%20if%20we%20have%20an%20icon%20name%20and%20it%20matches%20one%20of%20the%20ids%20above%0Aif(iconData)%7Bvar%20container%3Dthis.%24.iconCont%2C%2F%2F%20iconVBs%20are%20on%20end%20of%20every%20iconName%0AiconVB%3DiconName.slice(-2)%2Csvg%3Dthis.%24.iconSVG%3Bwhile(svg.firstChild)%7Bsvg.removeChild(svg.firstChild)%3B%7D%2F%2F%20If%20the%20icon%20is%20already%20filled%20(ie%20its%20changing)%2C%20deletes%20current%20data%0Asvg.setAttribute('viewBox'%2C'0%200%20'%2BiconVB%2B'%20'%2BiconVB)%3Bcontainer.removeAttribute('class')%3B%2F%2F%20backwards%20compatibility%20-%20only%20add%20class%20if%20we%20don't%20have%20a%20width%20and%20height%20ruleset%20on%20%60this%60%20instance%0Aif(!svgResize)%7Bvar%20style%3Dwindow.getComputedStyle(this)%3Bif((style.width%3D%3D%3D'auto'%7C%7Cstyle.width%3D%3D%3D'')%26%26(style.height%3D%3D%3D'auto'%7C%7Cstyle.height%3D%3D%3D''))%7Bcontainer.classList.add('ic-'%2BiconVB)%3B%7D%7Delse%7Bcontainer.style.width%3Dthis.svgResize%2B'px'%3Bcontainer.style.height%3Dthis.svgResize%2B'px'%3B%7D%2F%2F%20cloning%20the%20first%20child%20so%20it%20can%20be%20deleted%20without%20affecting%20iconMap%0Asvg.appendChild(iconData.cloneNode(true))%3Bcontainer.hidden%3Dfalse%3B%7D%7Delse%7Bthis.%24.externalImage.hidden%3D!imgSource%3B%7Dreturn''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-icon%2Fui-icon.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-icon%2Fui-icon.html.js%0A",
            "duration": 82,
            "startTime": 11713.956380773321
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "duration": 72,
            "startTime": 6177.314010000001
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "duration": 64,
            "startTime": 9343.61201
          },
          {
            "url": "https://eu.palmbeachpost.com/",
            "duration": 63,
            "startTime": 3992.8240100000003
          },
          {
            "url": "https://eu.palmbeachpost.com/",
            "duration": 53,
            "startTime": 3939.8240100000003
          }
        ],
        "sortedBy": [
          "duration"
        ],
        "skipSumming": [
          "startTime"
        ],
        "debugData": {
          "type": "debugdata",
          "urls": [
            "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-icon'%2CdesignId%3A'UI9'%2Cproperties%3A%7BiconName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CimgSource%3A%7Btype%3AString%2Cvalue%3A''%7D%2CiconFull%3A%7Btype%3AString%2Ccomputed%3A'_makeIcon(iconName%2C%20imgSource%2C%20svgResize)'%7D%2CsvgResize%3A%7Btype%3ANumber%7D%7D%2C_makeIcon%3Afunction%20_makeIcon(iconName%2CimgSource%2CsvgResize)%7Bif(iconName)%7Bvar%20iconData%3Dthis.%24.iconMap.querySelector('%23'%2BiconName)%3B%2F%2F%20if%20we%20have%20an%20icon%20name%20and%20it%20matches%20one%20of%20the%20ids%20above%0Aif(iconData)%7Bvar%20container%3Dthis.%24.iconCont%2C%2F%2F%20iconVBs%20are%20on%20end%20of%20every%20iconName%0AiconVB%3DiconName.slice(-2)%2Csvg%3Dthis.%24.iconSVG%3Bwhile(svg.firstChild)%7Bsvg.removeChild(svg.firstChild)%3B%7D%2F%2F%20If%20the%20icon%20is%20already%20filled%20(ie%20its%20changing)%2C%20deletes%20current%20data%0Asvg.setAttribute('viewBox'%2C'0%200%20'%2BiconVB%2B'%20'%2BiconVB)%3Bcontainer.removeAttribute('class')%3B%2F%2F%20backwards%20compatibility%20-%20only%20add%20class%20if%20we%20don't%20have%20a%20width%20and%20height%20ruleset%20on%20%60this%60%20instance%0Aif(!svgResize)%7Bvar%20style%3Dwindow.getComputedStyle(this)%3Bif((style.width%3D%3D%3D'auto'%7C%7Cstyle.width%3D%3D%3D'')%26%26(style.height%3D%3D%3D'auto'%7C%7Cstyle.height%3D%3D%3D''))%7Bcontainer.classList.add('ic-'%2BiconVB)%3B%7D%7Delse%7Bcontainer.style.width%3Dthis.svgResize%2B'px'%3Bcontainer.style.height%3Dthis.svgResize%2B'px'%3B%7D%2F%2F%20cloning%20the%20first%20child%20so%20it%20can%20be%20deleted%20without%20affecting%20iconMap%0Asvg.appendChild(iconData.cloneNode(true))%3Bcontainer.hidden%3Dfalse%3B%7D%7Delse%7Bthis.%24.externalImage.hidden%3D!imgSource%3B%7Dreturn''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-icon%2Fui-icon.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-icon%2Fui-icon.html.js%0A",
            "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "https://eu.palmbeachpost.com/"
          ],
          "tasks": [
            {
              "urlIndex": 0,
              "startTime": 11238.8,
              "duration": 349,
              "other": 349,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 1,
              "startTime": 6478.4,
              "duration": 109,
              "other": 109,
              "scriptEvaluation": 0,
              "styleLayout": 0
            },
            {
              "urlIndex": 2,
              "startTime": 11714,
              "duration": 82,
              "other": 82,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 1,
              "startTime": 6177.3,
              "duration": 72,
              "other": 72,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 3,
              "startTime": 9343.6,
              "duration": 64,
              "other": 64,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 4,
              "startTime": 3992.8,
              "duration": 63,
              "other": 63,
              "paintCompositeRender": 0,
              "styleLayout": 0
            },
            {
              "urlIndex": 4,
              "startTime": 3939.8,
              "duration": 53,
              "other": 53,
              "paintCompositeRender": 0,
              "scriptEvaluation": 0,
              "styleLayout": 0
            }
          ]
        }
      },
      "guidanceLevel": 1
    },
    "non-composited-animations": {
      "id": "non-composited-animations",
      "title": "Avoid non-composited animations",
      "description": "Animations which are not composited can be janky and increase CLS. [Learn how to avoid non-composited animations](https://developer.chrome.com/docs/lighthouse/performance/non-composited-animations/)",
      "score": null,
      "scoreDisplayMode": "notApplicable",
      "metricSavings": {
        "CLS": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "failureReason",
              "valueType": "text"
            },
            "label": "Element"
          }
        ],
        "items": []
      },
      "guidanceLevel": 2
    },
    "unsized-images": {
      "id": "unsized-images",
      "title": "Image elements do not have explicit `width` and `height`",
      "description": "Set an explicit width and height on image elements to reduce layout shifts and improve CLS. [Learn how to set image dimensions](https://web.dev/articles/optimize-cls#images_without_dimensions)",
      "score": 0.5,
      "scoreDisplayMode": "metricSavings",
      "metricSavings": {
        "CLS": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": ""
          },
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          }
        ],
        "items": [
          {
            "url": "https://www.gannett-cdn.com/gannett-web/properties/palmbeachpost/logos-and-branding/logo-default.svg",
            "node": {
              "type": "node",
              "lhId": "1-91-IMG",
              "path": "1,HTML,1,BODY,2,UTIL-STICKY-MODULE,2,DIV,1,DIV,0,DIV,0,DIV,2,A,0,IMG",
              "selector": "div#navRibbon > div#toggleSticky > a#logoContainer > img#logo",
              "boundingRect": {
                "top": 12,
                "bottom": 44,
                "left": 60,
                "right": 200,
                "width": 140,
                "height": 32
              },
              "snippet": "<img alt=\"The Palm Beach Post\" class=\"expand-icon\" id=\"logo\" src=\"https://www.gannett-cdn.com/gannett-web/properties/palmbeachpost/logos-and…\">",
              "nodeLabel": "The Palm Beach Post"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/gannett-web/properties/palmbeachpost/logos-and-branding/logo-default.svg",
            "node": {
              "type": "node",
              "lhId": "1-92-IMG",
              "path": "1,HTML,1,BODY,2,UTIL-STICKY-MODULE,2,DIV,1,DIV,1,DIV,0,DIV,0,DIV,1,A,0,IMG",
              "selector": "div.expand-wrap-top > div#logoWrap > a#hubLogo > img#sidebarLogo",
              "boundingRect": {
                "top": 32,
                "bottom": 77,
                "left": -378,
                "right": -181,
                "width": 197,
                "height": 45
              },
              "snippet": "<img id=\"sidebarLogo\" class=\"full-height-logo\" alt=\"The Palm Beach Post\" src=\"https://www.gannett-cdn.com/gannett-web/properties/palmbeachpost/logos-and…\">",
              "nodeLabel": "The Palm Beach Post"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/NPPP/89488459007-66-z-62-1098.jpg?crop=4024,4023,x1512,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-93-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,1,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 64,
                "bottom": 168,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/NPPP/894…\" class=\"p1-image\" alt=\"5 best things to do in Palm Beach County this weekend (April 24-26)\">",
              "nodeLabel": "5 best things to do in Palm Beach County this weekend (April 24-26)"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/10/17/PNAS/86737703007-hermes-store-010.JPG?crop=4000,3999,x1190,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-94-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,2,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 184,
                "bottom": 289,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/10/17/PNAS/867…\" class=\"p1-image\" alt=\"Guests foil theft of $32,500 Hermès bag from Breakers room. What we know\">",
              "nodeLabel": "Guests foil theft of $32,500 Hermès bag from Breakers room. What we know"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/89668763007-getty-images-2231384154-3.jpg?crop=683,682,x307,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-95-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 305,
                "bottom": 409,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/896…\" class=\"p1-image\" alt=\"Powerball hits triple digits, $100 million. Check April 22 tickets\">",
              "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/12/16/PBRE/87786842007-img-2684.jpeg?crop=3019,3019,x263,y5&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-96-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,5,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 425,
                "bottom": 530,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/12/16/PBRE/877…\" class=\"p1-image\" alt=\"Florida Lotto numbers for Wednesday, April 22, a $17 million prize\">",
              "nodeLabel": "Florida Lotto numbers for Wednesday, April 22, a $17 million prize"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/10/PBRE/89548378007-koch.jpg?crop=1440,1439,x96,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-97-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,8,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 546,
                "bottom": 650,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/10/PBRE/895…\" class=\"p1-image\" alt=\"Earth Day in Florida. Here's a list of events, clean-ups this weekend\">",
              "nodeLabel": "Earth Day in Florida. Here's a list of events, clean-ups this weekend"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/PTAL/89737077007-alex-vindman-standing.jpeg?crop=4283,4284,x0,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-98-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,9,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 666,
                "bottom": 771,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/PTAL/897…\" class=\"p1-image\" alt=\"It's official: Vindman enters Florida US Senate race against Moody\">",
              "nodeLabel": "It's official: Vindman enters Florida US Senate race against Moody"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/03/05/PNJM/88998213007-3051569-19563-b.JPG?crop=2000,1999,x999,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-99-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,11,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 787,
                "bottom": 891,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/05/PNJM/889…\" class=\"p1-image\" alt=\"'Survivor 50' only has 1 Floridian left. Who was voted off last week?\">",
              "nodeLabel": "'Survivor 50' only has 1 Floridian left. Who was voted off last week?"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/07/21/PTAL/85310284007-cfo-blaise-ingoglia-162.JPG?crop=2369,2368,x0,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-100-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,12,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 907,
                "bottom": 1012,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/07/21/PTAL/853…\" class=\"p1-image\" alt=\"Where do things stand on plans to eliminate Florida's property taxes?\">",
              "nodeLabel": "Where do things stand on plans to eliminate Florida's property taxes?"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/02/19/PBRE/88767218007-a-tagged-burmese-python-released-for-the-telemetry-scout-project-a-photo-credit-sam-smith-2.jpg?crop=1080,1079,x486,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-101-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,13,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 1028,
                "bottom": 1132,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/02/19/PBRE/887…\" class=\"p1-image\" alt=\"Are Burmese pythons more active in warmer months? What know for summer\">",
              "nodeLabel": "Are Burmese pythons more active in warmer months? What know for summer"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/02/25/USAT/88865189007-getty-images-544738956.jpg?crop=3644,3644,x1620,y5&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-103-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,15,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 1148,
                "bottom": 1252,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/02/25/USAT/888…\" class=\"p1-image\" alt=\"Food stamps in Florida don't work on candy, soda. What you can still buy\">",
              "nodeLabel": "Food stamps in Florida don't work on candy, soda. What you can still buy"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89648585007-20260416-t-200623-z-818692593-rc-2-jqka-9-c-5-sf-rtrmadp-3-spacemoonartemis.JPG?crop=3769,3768,x942,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-104-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,16,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
              "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
              "boundingRect": {
                "top": 1268,
                "bottom": 1373,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\" class=\"p1-image\" alt=\"Here's the latest on NASA Artemis moon missions since astronauts landed\">",
              "nodeLabel": "Here's the latest on NASA Artemis moon missions since astronauts landed"
            }
          }
        ]
      },
      "guidanceLevel": 4
    },
    "valid-source-maps": {
      "id": "valid-source-maps",
      "title": "Page has valid source maps",
      "description": "Source maps translate minified code to the original source code. This helps developers debug in production. In addition, Lighthouse is able to provide further insights. Consider deploying source maps to take advantage of these benefits. [Learn more about source maps](https://developer.chrome.com/docs/devtools/javascript/source-maps/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "scriptUrl",
            "valueType": "url",
            "subItemsHeading": {
              "key": "error"
            },
            "label": "URL"
          },
          {
            "key": "sourceMapUrl",
            "valueType": "url",
            "label": "Map URL"
          }
        ],
        "items": [
          {
            "scriptUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js.map",
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "error": "Error: Failed fetching source map (403)"
                }
              ]
            }
          },
          {
            "scriptUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js.map",
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "error": "Error: Failed fetching source map (403)"
                }
              ]
            }
          },
          {
            "scriptUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/apply-shim.min.js",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/apply-shim.min.js.map",
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "error": "Error: Failed fetching source map (403)"
                }
              ]
            }
          },
          {
            "scriptUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/intl-messageformat/dist/intl-messageformat.min.js",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/intl-messageformat/dist/intl-messageformat.min.js.map",
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "error": "Error: Failed fetching source map (403)"
                }
              ]
            }
          },
          {
            "scriptUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "https://atoms.palmbeachpost.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "sourceMapUrl": "https://atoms.palmbeachpost.com/atoms-library/prod/dist/gannett-atoms-library.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,%2F*global%20window%3Atrue*%2F%2F*global%20document%3Atrue*%2F%2F*global%20performance%3Atrue*%2F'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Slot%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerSlot%0A%20%20%20%20%20*%2Fvar%20PartnerSlot%3D%7Bproperties%3A%7B%2F**%20Exclusion%20Label%20*%2Fexclusion%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20High%20Impact%20Unit%20*%2FhighImpact%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20DFP%20Ad%20Unit%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20Mobile%20*%2Fmobile%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sizes%20to%20be%20included%20in%20the%20ad%20call.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20If%20set%20on%20the%20element%2C%20must%20be%20valid%20JSON.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20To%20set%20defaults%20for%20an%20element%2C%20override%20%60getDefaultSizes%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20(do%20not%20override%20property%20default).%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fsizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%20this.getDefaultSizes()%3B%7D%7D%2C%2F**%20Targeting%20Label%20*%2Ftargeting%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20preset%20targeting%20*%2FslotTargeting%3A%7Btype%3AObject%2Cvalue%3A%7B%7D%7D%2C%2F**%20NSF%20Targeting%20*%2FnsfTargeting%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%20this.getNsfTargeting()%3B%7D%7D%2C%2F**%20Try%20Count%20*%2FtryCount%3A%7Btype%3ANumber%2Cvalue%3A0%7D%2C%2F**%20Sticky%20ad%20slot%20!!Future%20Feature!!%20*%2Fsticky%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Render%20Behavior%20*%2FrenderBehavior%3A%7Btype%3AString%2Cvalue%3A'lazy'%7D%2C%2F**%20Fetch%20Behavior%20*%2FfetchBehavior%3A%7Btype%3AString%2Cvalue%3A'lazy'%7D%2C%2F**%20Below%20the%20fold%20declaration%20*%2Fbtf%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Set%20if%20unit%20is%20not%20currently%20active%20*%2Finactive%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20the%20'fluid'%20size%20should%20be%20included%20with%20the%20ad%20call%20*%2Ffluid%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20border%20(automatic%20on%20high%20impact%20units)%20*%2FnoBorder%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20label%20*%2FnoLabel%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Defer%20control%20of%20refreshing%20this%20slot%20to%20parent%20element%20*%2Fdeferred%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Enables%20Auto-refresh%20for%20this%20ad%20unit%20*%2FautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Last%20time%20a%20user%20engaged%20with%20the%20page%20*%2FlastEngagement%3A%7Btype%3ANumber%2Cvalue%3ADate.now%7D%2C%2F**%20Is%20window%20visible%20*%2FwindowIsVisible%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Conditional%20sizes%20to%20add%20when%20there%20is%20enough%20available%20width%20*%2FconditionalSizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%5B%5D%3B%7D%7D%2C%2F**%20Margins%20to%20add%20to%20conditional%20size%20widths%20before%20checking%20availability%20*%2FconditionalSizesMargin%3A%7Btype%3ANumber%2Cvalue%3A1%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A0%2Cobserver%3A'_minHeightChanged'%7D%2C%2F**%20Approximate%20height%20of%20%22Advertisement%22%20label.%20Added%20to%20minHeight%20value%20to%20determine%20static%20height.%20*%2FlabelHeight%3A%7Btype%3ANumber%2Cvalue%3A20%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Ad%20Slot%20kick%20off.%20Determines%20if%20we%20are%20in%20mobile%20or%20desktop%20screen%20sizes.%0A%20%20%20%20%20%20%20%20%20*%20Establishes%20statistics%20on%20ad%20placements%2C%20adds%20appropriate%20classes%20and%20unique%20id.%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20listeners%20to%20build%20the%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3B%2F%2F%20Call%20slot%20ready%20here%2C%20since%20a%20regular%20ready%20get's%20called%20after%20this%20behavior%20finishes%0Athis.slotReady()%3B%2F%2F%20Check%20whether%20we%20should%20be%20active%0Aif(!this.shouldBeActive())%7Bthis.classList.add('partner-placement-inactive')%3Bthis.inactive%3Dtrue%3Breturn%3B%7Dthis.register()%3Bthis.defineDefer%3Dnew%20this._deferred()%3Bthis.lazyFetchDefer%3Dnew%20this._deferred()%3B%2F%2F%20Fallback%20to%20default%20sizes%20when%20sizes%20attribute%20is%20not%20parsed%20properly%20or%20no%20sizes%20are%20present%0Aif(!this.sizes%7C%7Cthis.sizes.length%3D%3D%3D0)%7Bthis.sizes%3Dthis.getDefaultSizes()%3B%7D%2F%2F%20Add%20fluid%20size%20when%20fluid%20attribute%20is%20set%2C%20if%20it%20isn't%20already%20included%20in%20the%20size%20list%0Aif(this.fluid%26%26this.sizes.indexOf('fluid')%3C0)%7Bthis.sizes.push('fluid')%3B%7D%2F%2F%20Set%20initial%20classes%0Athis.classList.add('partner-placement'%2C'partner-'%2Bthis.placement%2C'partner-loading')%3Bif(!this.noLabel)%7Bthis.classList.add('partner-label')%3B%7Dif(this.mobile)%7Bthis.classList.add('partner-placement-mobile')%3B%7D%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.ads.count%3Dwindow.ga_data.ads.count%7C%7C0%3Bthis.id%3D'partner-'%2Bthis.placement.toLowerCase().replace(%2F%5B%5Cs_%5D%2Fg%2C'-')%2B'-'%2Bwindow.ga_data.ads.count%2B%2B%3B%7Dthis.slotId%3Dthis.id%2B'-container'%3Bthis._log('Slot%20Ready')%3Bthis._broadcastEvent('slotReady')%3B%2F%2F%20Check%20if%20we%20are%20autorefresh%20enabled%20via%20config%2C%20if%20not%20set%20directly%20already%20on%20the%20slot%0Athis.autoRefresh%3D!!(this.autoRefresh%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'enabled'))%3Bif(this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'ias'%2C'enabled'))%7B%2F%2F%20Register%20as%20an%20IAS%20unit%0Athis.iasUnit%3D%7BadSlotId%3Athis.slotId%2Csize%3Athis._filterFluidSize(this.sizes)%2CadUnitPath%3Athis._generatePath()%7D%3Bwindow.ga_data.ads.iasAdUnits%3Dwindow.ga_data.ads.iasAdUnits%7C%7C%5B%5D%3Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.iasAdUnits.push(_this)%3B%7D)%3B%7D%2F%2F%20Setup%20Lazy%20fetching%20and%20rendering%0Athis.classList.add('partner-loading-shown')%3Bthis.viewportHeight%3DMath.max(document.documentElement.clientHeight%2Cwindow.innerHeight)%3Bvar%20platform%3Dthis.mobile%3F'mobile'%3A'desktop'%3Bvar%20lazySettings%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'lazy'%2Cplatform)%7C%7C%7B%7D%3Bthis.renderMultiplier%3DlazySettings.render%7C%7C0%3Bthis.fetchMultiplier%3DlazySettings.fetch%7C%7C1%3Bthis.lazy%3Dthis.renderBehavior%3D%3D%3D'lazy'%26%26!this.isVisible(this.renderMultiplier)%3Bthis.lazyFetch%3Dthis.fetchBehavior%3D%3D%3D'lazy'%26%26!this.isVisible(this.fetchMultiplier)%3Bif(this.lazyFetch)%7Bthis.lazyFetchCheckFn%3Dfunction()%7Breturn%20_this.lazyFetchCheck()%3B%7D%3Bwindow.addEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn%2Cfalse)%3Bthis.lazyFetchCheckFn()%3B%7Delse%7Bthis.lazyFetchDefer.resolve()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20slot%20ready%2C%20to%20beat%20out%20behavior%20lifecycle%20call.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FslotReady%3Afunction%20slotReady()%7B%2F%2F%20slot%20ready%20placeholder%0A%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this2%3Dthis%3B%2F%2F%20When%20inactive%2C%20kill%20things%20here%0Aif(this.inactive%7C%7Cthis.adIsSetup)return%20false%3Bthis.slotAttached()%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7B_this2.lazyFetchDefer.promise.then(function()%7B_this2._log('Lazy%20Fetch%20Defer%20Resolved')%3B_this2.addListeners()%3B_this2.addConditionalSizes()%3B_this2._setupAd()%3B%7D)%3B%7D)%3B%7D%2Cdetached%3Afunction%20detached()%7Bthis.removeListeners()%3Bthis.destroy(false)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20slot%20attached%2C%20to%20beat%20out%20behavior%20lifecycle%20call.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FslotAttached%3Afunction%20slotAttached()%7B%2F%2F%20slot%20attached%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Triggers%20a%20refresh%20on%20the%20ad%20slot.%20Extended%20by%20PartnerBid%20behavior%20to%20refresh%20bids.%0A%20%20%20%20%20%20%20%20%20*%20partner-bid%20does%20a%20global%20check%20for%20this%20function%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.displayQueue%3Dwindow.ga_data.ads.displayQueue%7C%7C%5B%5D%3Bwindow.ga_data.ads.refreshQueue%3Dwindow.ga_data.ads.refreshQueue%7C%7C%5B%5D%3Bvar%20q%3Dthis.displayed%3Fwindow.ga_data.ads.refreshQueue%3Awindow.ga_data.ads.displayQueue%3Bq.push(this)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20fallback%20sizes%20for%20an%20element.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Default%20sizes%20to%20use%20for%20the%20element%0A%20%20%20%20%20%20%20%20%20*%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Default%20for%20NSF%20targeting%0A%20%20%20%20%20%20%20%20%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Register%20our%20ad%20slot%20at%20the%20page%20level%20and%20set%20ad%20count%0A%20%20%20%20%20%20%20%20%20*%2Fregister%3Afunction%20register()%7Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.stats%3Dwindow.ga_data.ads.stats%7C%7C%7Brequests%3A0%2Ctotal%3A0%7D%3Bwindow.ga_data.ads.stats.total%2B%2B%3B%2F%2F%20Register%20on%20the%20page%20as%20a%20DFP%20ad%20unit%0Awindow.ga_data.ads.units%3Dwindow.ga_data.ads.units%7C%7C%5B%5D%3Bwindow.ga_data.ads.units.push(this)%3B%2F%2F%20Ad%20Count%0Athis.adCount%3Dthis.adCount%7C%7Cthis.getAdCount()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20the%20ad%20framework%20should%20be%20active%0A%20%20%20%20%20%20%20%20%20*%2FshouldBeActive%3Afunction%20shouldBeActive()%7Bvar%20inMobileEnv%3Dthis._inMobileEnvironment()%3Breturn!(this.inactive%7C%7C%2F%2F%20Check%20if%20ads%20are%20disabled%20globally%0Athis._getNested(ga_data%2C'route'%2C'noAdvertising')%7C%7Cthis.getUrlParamValue('no_ads')%7C%7C%2F%2F%20Check%20whether%20element%20mobile%2Fdesktop%20matches%20viewport%20mobile%2Fdesktop%0AinMobileEnv!%3D%3Dthis.mobile%7C%7Cthis.isAdFreeExperience())%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Add%20document%20listeners%0A%20%20%20%20%20%20%20%20%20*%2FaddListeners%3Afunction%20addListeners()%7Bvar%20_this3%3Dthis%3Bif(this.listenersSetup)return%3B%2F%2F%20refresh%20slots%20on%20location%20change%0Athis._locationChangedFn%3Dfunction()%7Breturn%20_this3.refresh()%3B%7D%3Bwindow.addEventListener('location-changed'%2Cthis._locationChangedFn)%3B%2F%2F%20Add%20message%20listener%20for%20slots%20that%20require%20messaging%0Athis._onSafeFrameMsgFn%3Dfunction(e)%7Breturn%20_this3._onSafeFrameMsg(e)%3B%7D%3Bwindow.addEventListener('message'%2Cthis._onSafeFrameMsgFn)%3B%2F%2F%20Add%20visibility%20listener%20and%20scroll%20listener%20to%20determine%20if%20user%20is%20active%20and%20engaged%0Athis._visibilityFn%3Dfunction(e)%7Breturn%20_this3._onVisibilityChange(e)%3B%7D%3Bthis._engagementUpdateFn%3Dfunction()%7Breturn%20_this3.engagementUpdate()%3B%7D%3Bif(typeof%20document.hidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'hidden'%3Bthis.visibilityEvent%3D'visibilitychange'%3B%7Delse%20if(typeof%20document.msHidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'msHidden'%3Bthis.visibilityEvent%3D'msvisibilitychange'%3B%7Delse%20if(typeof%20document.webkitHidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'webkitHidden'%3Bthis.visibilityEvent%3D'webkitvisibilitychange'%3B%7Ddocument.addEventListener(this.visibilityEvent%2Cthis._visibilityFn%2Cfalse)%3Bif(this.autoRefresh)%7Bwindow.addEventListener('ga-scroll'%2Cthis._engagementUpdateFn)%3B%7Dif(this.lazy)%7Bthis.lazyTriggered%3Dfalse%3Bthis.lazyRenderCheckFn%3Dfunction()%7Breturn%20_this3.lazyRenderCheck()%3B%7D%3Bwindow.addEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn%2Cfalse)%3Bthis.lazyRenderCheckFn()%3B%7Dthis.listenersSetup%3Dtrue%3B%7D%2CremoveListeners%3Afunction%20removeListeners()%7Bwindow.removeEventListener('location-changed'%2Cthis._locationChangedFn)%3Bwindow.removeEventListener('message'%2Cthis._onSafeFrameMsgFn)%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn)%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn)%3Bwindow.removeEventListener(this.visibilityEvent%2Cthis._visibilityFn)%3Bif(this.autoRefresh)%7Bwindow.removeEventListener('ga-scroll'%2Cthis._engagementUpdateFn)%3B%7Dthis.listenersSetup%3Dfalse%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20conditional%20sizes%20to%20DFP%20size%20sizes%20when%20we%20have%20enough%20available%20width%20(size%20width%20%2B%20margins)%0A%20%20%20%20%20%20%20%20%20*%2FaddConditionalSizes%3Afunction%20addConditionalSizes()%7Bvar%20_this4%3Dthis%3Bvar%20containerWidth%3Dvoid%200%3Bif(this.conditionalSizes.length)containerWidth%3Dthis._getNonZeroAttr(this.parentNode%2C'clientWidth')%3Bthis.conditionalSizes.forEach(function(s)%7Bif(Array.isArray(s)%26%26s.length%3D%3D%3D2)%7Bvar%20w%3DparseInt(s%5B0%5D%2C10)%7C%7C0%3Bvar%20minWidth%3Dw%2B_this4.conditionalSizesMargin*2%3Bif(w%26%26containerWidth%26%26containerWidth%3E%3DminWidth)%7B_this4.sizes.push(s)%3B%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Destroys%20the%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%20%7BBoolean%7D%20setupAgain%20%20whether%20to%20set%20the%20ad%20back%20up%20again%20after%20destroying.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BBoolean%7D%20success%20%20%20whether%20the%20destruction%20was%20successful%0A%20%20%20%20%20%20%20%20%20*%2Fdestroy%3Afunction%20destroy(setupAgain)%7B%2F%2F%20If%20no%20googletag%20just%20stop%20(if%20no%20googletag%20we%20haven't%20been%20setup%20anyways)%0Aif(!this._getNested(window%2C'googletag'%2C'apiReady'))%7Breturn%20false%3B%7Dvar%20success%3Dwindow.googletag.destroySlots(%5Bthis.gptSlot%5D)%3Bif(success%26%26setupAgain)%7Bthis._setupAd()%3B%7Dreturn%20success%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Scroll%20listener%20for%20lazy%20loading%0A%20%20%20%20%20%20%20%20%20*%2FlazyRenderCheck%3Afunction%20lazyRenderCheck()%7Bif(!this.lazyTriggered%26%26this.isVisible(this.renderMultiplier))%7Bthis.refresh()%3Bthis.lazyTriggered%3Dtrue%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Scroll%20listener%20for%20lazy%20fetching%0A%20%20%20%20%20%20%20%20%20*%2FlazyFetchCheck%3Afunction%20lazyFetchCheck()%7Bif(this.isVisible(this.fetchMultiplier))%7Bthis.lazyFetchDefer.resolve()%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20the%20ad%20should%20be%20considered%20%22visible%22.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BBoolean%7D%20Visible%0A%20%20%20%20%20%20%20%20%20*%20*%2FisVisible%3Afunction%20isVisible(multiplier)%7Bmultiplier%3Dmultiplier%7C%7C0%3Bvar%20tolerance%3Dthis.viewportHeight*-multiplier%3Breturn%20this._checkVisible(this%2Ctolerance%2Cnull)%3D%3D%3D'visible'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20last%20engagement%20metric%2C%20triggered%20by%20scroll%2Ffocus%2Fblur%0A%20%20%20%20%20%20%20%20%20*%2FengagementUpdate%3Afunction%20engagementUpdate()%7Bthis.lastEngagement%3DDate.now()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20a%20paramount%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupParamount%3Afunction%20setupParamount(data)%7Bthis._log('Paramount%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-paramount')%3Bthis.container.classList.remove('partner-bordered')%3Bthis.isParamount%3Dtrue%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20an%20inline%20spike%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupSpike%3Afunction%20setupSpike(data)%7Bthis._log('Branded%20Content%20Spike%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-spike')%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20a%20branded%20content%20tile%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupTile%3Afunction%20setupTile(data)%7Bthis._log('Branded%20Content%20Tile%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-tile')%3Bif(data.html)%7Bvar%20div%3Ddocument.createElement('div')%3Bdiv.classList.add('branded-content-tile-container')%3Bthis.parentNode.insertBefore(div%2Cthis.nextSibling)%3Bdiv.innerHTML%3Ddata.html%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Public%20method%20to%20add%20DFP%20targeting%20manually%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20key%20value%20targeting%20to%20set%20on%20the%20slot%0A%20%20%20%20%20%20%20%20%20*%20*%2FaddTargeting%3Afunction%20addTargeting(targeting)%7Bvar%20_this5%3Dthis%3Bthis.defineDefer.promise.then(function()%7B_this5._setTargeting(_this5.gptSlot%2Ctargeting)%3B%7D)%3B%7D%2CsetContainer%3Afunction%20setContainer()%7B%2F%2F%20Set%20container%20to%20load%20ad%20into%20(create%20if%20not%20in%20template)%0Athis.container%3Dthis.%24%24('.ad-container')%3Bif(!this.container)%7Bvar%20el%3Ddocument.createElement('div')%3Bel.classList.add('ad-container')%3BPolymer.dom(this.root).appendChild(el)%3Bthis.container%3Del%3B%7D%2F%2F%20Dynamic%20container%20styles%0Aif(!this.highImpact%26%26!this.noBorder)%7Bthis.container.classList.add('partner-bordered')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Displays%20an%20ad.%20Triggers%20an%20ad%20call%20that%20will%20include%20any%20defined%20slots%20that%20haven't%20been%20fetched%20yet.%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20the%20page%20level%20via%20%60window.ga_data.ads.displayQueue%60%0A%20%20%20%20%20%20%20%20%20*%2Fdisplay%3Afunction%20display()%7Bvar%20_this6%3Dthis%3Bif(!this.displayed)%7Bthis.displayed%3Dtrue%3Bthis.setContainer()%3Bwindow.googletag.cmd.push(function()%7B_this6._startDisplayedAndRenderedFallback()%3B_this6.container.id%3D_this6.slotId%3Bif(!(window.ga_privacy%26%26window.ga_privacy.gdprApplies)%26%26window.ga_data%26%26window.ga_data.utils%26%26typeof%20window.ga_data.utils.flushTcfStub%3D%3D%3D'function')%7Bwindow.ga_data.utils.flushTcfStub()%3B%7Dwindow.googletag.display(_this6.slotId)%3B%7D)%3B%2F%2F%20tracking%2Flogging%20first%20call%0Athis.request%3Dwindow.ga_data.ads.stats.requests%2B%2B%3B%2F%2F%20previously%20newrelic%0Athis._log('Displaying%20Slot')%3B%7D%7D%2C_minHeightChanged%3Afunction%20_minHeightChanged(newValue)%7Bif(newValue)this.style.minHeight%3DnewValue%2B20%2B'px'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Tells%20GPT%20to%20fetch%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20the%20page%20level%20via%20%60window.ga_data.ads.refreshQueue%60%0A%20%20%20%20%20%20%20%20%20*%20*%2FpubadsRefresh%3Afunction%20pubadsRefresh()%7Bvar%20_this7%3Dthis%3Bwindow.googletag.cmd.push(function()%7Bwindow.googletag.pubads().refresh(%5B_this7.gptSlot%5D%2C%7BchangeCorrelator%3Afalse%7D)%3B_this7._startDisplayedAndRenderedFallback()%3B%7D)%3B%2F%2F%20tracking%2Flogging%0Athis.request%3Dwindow.ga_data.ads.stats.requests%2B%2B%3B%2F%2F%20previously%20newrelic%0Athis._log('Refreshing%20Slot')%3B%7D%2C%2F%2F%20previously%20newrelic%20_mark%20function%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gathers%20necessary%20information%20to%20set%20up%20a%20new%20ad%20slot%20for%20rendering.%0A%20%20%20%20%20%20%20%20%20*%2F_setupAd%3Afunction%20_setupAd()%7Bvar%20_this8%3Dthis%3Bthis._beforeSetupAd()%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3Bwindow.googletag.cmd.push(function()%7Breturn%20_this8._defineSlot()%3B%7D)%3Bthis.adIsSetup%3Dtrue%3Bthis._afterSetupAd()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Before%20Setup%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_beforeSetupAd%3Afunction%20_beforeSetupAd()%7B%2F%2F%20before%20setup%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20After%20Setup%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_afterSetupAd%3Afunction%20_afterSetupAd()%7B%2F%2F%20after%20setup%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Render%20ended%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FrenderEnded%3Afunction%20renderEnded(event)%7B%2F%2F%20rendered%20ended%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Render%20ended%20event%20triggered%20by%20Google%20for%20all%20slots%20when%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%201.%20Ad%20call%20is%20returned%20(after%20first%20ad%20on%20page%20is%20displayed)%2C%20and%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%202.%20Slot%20is%20displayed%20%26%20ad%20is%20rendered%20(INCONSISTENT%20as%20of%205-31-2018)%0A%20%20%20%20%20%20%20%20%20*%20Triggers%20the%20public%20rendered%20ended%20function%20if%20the%20ad%20is%20not%20empty.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20event%20DFP%20rendered%20event%20object%0A%20%20%20%20%20%20%20%20%20*%2F_renderEndedCheck%3Afunction%20_renderEndedCheck(event)%7Bif(event.slot.__gannettSlotId%3D%3D%3Dthis.slotId)%7Bif(event.isEmpty)%7Bthis._log('No%20Ad%20Delivered.%20Collapsing%20Ad')%3Bthis.style.display%3D'none'%3B%7Delse%20if(event.size%26%26event.size%5B1%5D%26%26this._checkVisible(this)%3D%3D%3D'below')%7B%2F%2F%20Resize%20if%20returned%20ad%20is%20smaller%20than%20static%20height%20and%20we're%20below%20the%20current%20viewport%0Athis.minHeight%3Devent.size%5B1%5D%3B%7Dthis.classList.remove('partner-loading')%3Bif(this.displayed)%7Bif(this.awaitingDisplayedAndRendered)%7Bif(this.displayedAndRenderedTO)clearTimeout(this.displayedAndRenderedTO)%3Bthis.awaitingDisplayedAndRendered%3Dfalse%3Bthis.onDisplayedAndRendered(event)%3B%7Delse%7B%2F%2F%20previously%20newrelic%0A%7D%7D%7D%7D%2ConDisplayedAndRendered%3Afunction%20onDisplayedAndRendered(event)%7Bthis._log('DisplayedAndRendered')%3Bif(this.autoRefresh)this._startAutoRefresh()%3B%2F%2F%20previously%20newrelic%0Athis.renderEnded(event)%3B%7D%2C_startDisplayedAndRenderedFallback%3Afunction%20_startDisplayedAndRenderedFallback()%7Bvar%20_this9%3Dthis%3Bvar%20renderFallbackTimeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'renderFallbackTimeout')%7C%7C2000%3Bthis.awaitingDisplayedAndRendered%3Dtrue%3Bthis.displayedAndRenderedTO%3DsetTimeout(function()%7B_this9.awaitingDisplayedAndRendered%3Dfalse%3B_this9.onDisplayedAndRendered(%7Bslot%3A%7B__gannettSlotId%3A_this9.slotId%7D%7D)%3B%2F%2F%20previously%20newrelic%0A%7D%2CrenderFallbackTimeout)%3B%7D%2C_startAutoRefresh%3Afunction%20_startAutoRefresh()%7Bvar%20_this10%3Dthis%3Bvar%20refreshTimeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'refreshRate')%7C%7C60000%3Bthis.canRefresh%3Dfalse%3Bif(this.autoRefreshTO)clearTimeout(this.autoRefreshTO)%3B%2F%2F%20Timeout%20before%20we%20allow%20the%20ad%20unit%20to%20refresh%0Athis.autoRefreshTO%3DsetTimeout(function()%7B_this10.canRefresh%3Dtrue%3B_this10._autoRefreshCheck()%3B%7D%2CrefreshTimeout)%3Bif(!this.viewableImpObserver)this._setupViewableImpObserver()%3B%7D%2C_activeViewCheck%3Afunction%20_activeViewCheck(event)%7Bif(event.slot.__gannettSlotId%3D%3D%3Dthis.slotId)%7Bthis._log('Activeview%20Fired')%3B%2F%2F%20previously%20newrelic%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sends%20a%20message%20to%20the%20slot's%20iframe.%0A%20%20%20%20%20%20%20%20%20*%2F_msgSlot%3Afunction%20_msgSlot(message)%7Bvar%20slot%3Dthis.slotOverride%7C%7Cthis.container.querySelector('div%20%3E%20iframe')%3Bvar%20slotWin%3Dslot%3Fslot.contentWindow%3A%7B%7D%3Bif(typeof%20slotWin.postMessage%3D%3D%3D'function')%7BslotWin.postMessage(message%2C'*')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20a%20Google%20ad%20slot%2C%20to%20be%20filled%20by%20Google%20when%20an%20ad%20request%20is%20made.%0A%20%20%20%20%20%20%20%20%20*%2F_defineSlot%3Afunction%20_defineSlot()%7Bvar%20_this11%3Dthis%3Bif(this.gptSlot)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7Bvar%20gptSlot%3Dvoid%200%2Cpubads%3Dvoid%200%3Bvar%20adUnitPath%3D_this11._generatePath()%2Ctargeting%3D_this11._parseJsonObject(_this11.targeting.replace(%2F'%2Fg%2C'%22')%2C%7B%7D)%2Cexclusion%3D_this11.exclusion.split('%2C')%3Bpubads%3Dwindow.googletag.pubads()%3B_this11.gptSlot%3DgptSlot%3Dwindow.googletag.defineSlot(adUnitPath%2C_this11.sizes%2C_this11.slotId).addService(pubads)%3BgptSlot.__gannettSlotId%3D_this11.slotId%3B_this11._log('Slot%20Defined'%2CadUnitPath%2C_this11.sizes)%3B_this11.defineDefer.resolve()%3B%2F%2F%20Add%20event%20listener%20for%20slot%20render%20ended%0A%2F%2F%20Only%20add%20once%20to%20avoid%20adding%20multiples%20when%20destroying%2Frecreating%20slots%0Aif(!_this11.gptEventsAdded)%7Bpubads.addEventListener('slotRenderEnded'%2Cfunction(e)%7Breturn%20_this11._renderEndedCheck(e)%3B%7D)%3Bpubads.addEventListener('impressionViewable'%2Cfunction(e)%7Breturn%20_this11._activeViewCheck(e)%3B%7D)%3B_this11.gptEventsAdded%3Dtrue%3B%7D%2F%2F%20setup%20slot%20targeting%0A_this11._setupTargeting(gptSlot%2Ctargeting)%3B_this11._setExclusionTargeting(gptSlot%2Cexclusion)%3B%2F%2F%20Wrap%20in%20the%20resolved%20promise%2C%20to%20fix%20queuing%20issue%0A_this11.defineDefer.promise.then(function()%7Bif(!(_this11.lazy%7C%7C_this11.deferred))%7B_this11.refresh()%3B%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Generates%20ad%20unit%20path%20for%20DFP.%20Used%20when%20defining%20a%20new%20slot%2C%20as%20well%20as%20for%20bids%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ad%20Unit%20Path%20string%0A%20%20%20%20%20%20%20%20%20*%2F_generatePath%3Afunction%20_generatePath()%7Bvar%20overrides%3Dthis._getOverrides()%3Bvar%20dfpConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'dfp')%7C%7C%7B%7D%3Bvar%20accountId%3Doverrides.usatai%7C%7CdfpConfig.accountId%3Bvar%20accountName%3Doverrides.usatan%7C%7C(this.mobile%3FdfpConfig.mobileAccountName%3AdfpConfig.accountName)%3Bvar%20cst%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'cst')%3Bvar%20vendor%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'vendor')%3Bvar%20path%3D'%2F'%2BaccountId%2B'%2F'%2BaccountName%2B'%2F'%2Bthis.placement%3Bif(vendor)%7Bpath%2B%3D'-'%2Bvendor%3B%7Dif(cst)%7Bpath%2B%3D'%2F'%2Bcst%3B%7Dreturn%20this._sanitizeAdUnitPath(path)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sanitizes%20a%20string%20for%20use%20as%20a%20DFP%20Ad%20Unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%22Only%20letters%2C%20numbers%2C%20underscores%2C%20hyphens%2C%20periods%2C%20asterisks%2C%20forward%20slashes%2C%20backslashes%2C%0A%20%20%20%20%20%20%20%20%20*%20exclamations%2C%20left%20angle%20brackets%2C%20right%20angle%20brackets%2C%20colons%20and%20parentheses%20are%20allowed.%22%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fsupport.google.com%2Fdfp_premium%2Fanswer%2F177203%3Fhl%3Den%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnit%20%20string%20to%20be%20cleaned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20%20%20%20%20%20%20%20%20DFP%20compliant%20ad%20unit%20path%20string%0A%20%20%20%20%20%20%20%20%20*%2F_sanitizeAdUnitPath%3Afunction%20_sanitizeAdUnitPath(adUnit)%7Bif(typeof%20adUnit%3D%3D%3D'string')%7Breturn%20adUnit.replace(%2F%5B%5E%5Cw-*!%3C%3E%3A().%5C%5C%5C%2F%5D%2Fg%2C'')%3B%7Dreturn''%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20initial%20slot%20targeting%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20Targeting%20key%2Fvalue%20pairs%0A%20%20%20%20%20%20%20%20%20*%2F_setupTargeting%3Afunction%20_setupTargeting(gptSlot%2Ctargeting)%7B%2F%2F%20Add%20in%20some%20set%20keys%0Atargeting.position%3Dthis.placement%3Btargeting.adCount%3Dthis.adCount%3Btargeting.features%3Dthis.getFeatures()%3B%2F%2F%20Merge%20targeting%20set%20by%20the%20slot%20and%20targeting%20set%20on%20the%20element%0Atargeting%3DObject.assign(%7B%7D%2Cthis.slotTargeting%2C%7Bnsf%3Athis.nsfTargeting%7D%2Ctargeting)%3Bthis._setTargeting(gptSlot%2Ctargeting)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20targeting%20specified%20in%20the%20targeting%20object%20to%20the%20specified%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20Targeting%20key%2Fvalue%20pairs%0A%20%20%20%20%20%20%20%20%20*%2F_setTargeting%3Afunction%20_setTargeting(gptSlot%2Ctargeting)%7Bvar%20key%3Dvoid%200%2Cvalue%3Dvoid%200%3Bfor(key%20in%20targeting)%7Bif(targeting.hasOwnProperty(key))%7Bvalue%3Dtargeting%5Bkey%5D%3Bif(!(typeof%20value%3D%3D%3D'undefined'%7C%7Cvalue%3D%3D%3Dnull%7C%7Cvalue%3D%3D%3D''%7C%7CArray.isArray(value)%26%26!value.length))%7BgptSlot.setTargeting(key%2CString(value))%3B%7D%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20targeting%20specified%20in%20the%20targeting%20object%20to%20the%20specified%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20%20exclusion%20%20%20%20Array%20of%20exclusion%20labels%20to%20be%20applied%0A%20%20%20%20%20%20%20%20%20*%2F_setExclusionTargeting%3Afunction%20_setExclusionTargeting(gptSlot%2Cexclusion)%7Bexclusion.forEach(function(value)%7Bif(value%26%26typeof%20value%3D%3D%3D'string')%7Bvalue.trim()%3BgptSlot.setCategoryExclusion(value)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20the%20index%20count%20of%20this%20type%20of%20ad%20placement.%20Used%20for%20ad%20targeting.%0A%20%20%20%20%20%20%20%20%20*%20Count%20is%20determined%20by%20the%20sequence%20in%20which%20ads%20are%20registered%20on%20the%20page.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7CNumber%7D%20Adcount%2C%20if%20last%20ad%20unit%2C%20will%20return%20an%20array%20with%20'last'%20and%20index%20value%0A%20%20%20%20%20%20%20%20%20*%2FgetAdCount%3Afunction%20getAdCount()%7B%2F%2F%20Add%20element%20to%20global%20placement%20list%20if%20not%20already%20present%0Aga_data.ads.placements%3Dga_data.ads.placements%7C%7C%7B%7D%3Bga_data.ads.placements%5Bthis.placement%5D%3Dga_data.ads.placements%5Bthis.placement%5D%7C%7C%5B%5D%3Bvar%20idx%3Dga_data.ads.placements%5Bthis.placement%5D.indexOf(this)%3Bif(idx%3C0)%7Bga_data.ads.placements%5Bthis.placement%5D.push(this)%3Breturn%20ga_data.ads.placements%5Bthis.placement%5D.length%3B%7Dreturn%20idx%2B1%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Compiles%20of%20list%20of%20target-able%20features%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20List%20of%20features%20for%20this%20slot%20that%20are%20enabled%0A%20%20%20%20%20%20%20%20%20*%2FgetFeatures%3Afunction%20getFeatures()%7Bvar%20features%3D%5B%5D%3Bvar%20overrides%3Dthis.getUrlParamValue('features')%3Bif(overrides)%7Breturn%20overrides.split('%2C')%3B%7Dif(this.lazy)features.push('lazy')%3Bif(this.autoRefresh)features.push('autorefresh')%3Bif(this.sticky)features.push('sticky')%3Bif(this.outstream)features.push('outstream')%3Bif(window.chrome)features.push('noautoplay')%3Breturn%20features%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Window%20listener%20for%20messages%20coming%20from%20SafeFrames%0A%20%20%20%20%20%20%20%20%20*%2F_onSafeFrameMsg%3Afunction%20_onSafeFrameMsg(e)%7B%2F%2F%20Check%20if%20the%20message%20is%20coming%20from%20a%20google%20iframe%2C%20and%20if%20we%20have%20the%20start%20of%20a%20JSON%20object%0Aif(e%26%26typeof%20e.data%3D%3D%3D'string'%26%26e.data.charAt(0)%3D%3D%3D'%7B')%7Btry%7Bvar%20data%3DJSON.parse(e.data)%3Bif(data.position%3D%3D%3Dthis.placement%26%26data.adCount%3D%3Dthis.adCount)%7Bthis._onDataReceived()%3Bswitch(data.adType)%7Bcase'spike'%3Athis.setupSpike(data)%3Bbreak%3Bcase'paramount'%3Athis.setupParamount(data)%3Bbreak%3Bcase'bcSpike'%3Athis.classList.add('partner-spike')%3Bbreak%3Bcase'tile'%3Athis.setupTile(data)%3B%7Dif(!this.viewabilityObserver)%7Bthis._setupViewabilityObserver()%3B%7Dwindow.removeEventListener('message'%2Cthis._onSafeFrameMsgFn)%3B%7D%7Dcatch(err)%7Bthis._log(this.tagName%2B'%20failed%20to%20parse%20JSON%20data'%2Cerr)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20postmessage%20data%20recieved%20to%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_onDataReceived%3Afunction%20_onDataReceived()%7B%2F%2F%20data%20received%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Will%20only%20allow%20autorefresh%20if%20the%20window%20is%20visible%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_onVisibilityChange%3Afunction%20_onVisibilityChange()%7Bvar%20visible%3D!document%5Bthis.hiddenAttr%5D%3Bthis.windowIsVisible%3Dvisible%3Bthis.engagementUpdate()%3Bif(visible)%7Bthis._autoRefreshCheck()%3B%7Dvar%20message%3DJSON.stringify(%7BgaMsg%3Atrue%2Cvisible%3Avisible%7D)%3Bthis._msgSlot(message)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Runs%20checks%20to%20see%20if%20the%20unit%20is%20visible%2C%20if%20the%20window%20is%20in%20focus%20and%20if%20the%20user%20has%20engaged%20with%20the%20page%20in%20the%20past%205%20minutes%20(configurable)%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_autoRefreshCheck%3Afunction%20_autoRefreshCheck()%7Bvar%20inactive_timeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2C'inactiveTimeout')%7C%7C300000%2Ctype%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'type')%7C%7C'smart'%3Bif(this.canRefresh%26%26!this.isParamount%26%26(this.isViewable%26%26this.windowIsVisible%7C%7Ctype%3D%3D%3D'simple')%26%26this.lastEngagement%3E%3DDate.now()-inactive_timeout)%7Bvar%20navigationType%3D''%3Bif(this.windowIsVisible)%7BnavigationType%3D'adrefresh-on'%3B%7Delse%7BnavigationType%3D'adrefresh-off'%3B%7D%2F%2F%20update%20targeting%20so%20incremental%20revenue%20can%20be%20tracked%0Athis._setTargeting(this.gptSlot%2C%7BnavigationType%3AnavigationType%7D)%3Bthis.refresh()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20observer%20to%20check%20if%20the%20ad%20is%2050%25%20viewable%20for%20the%20smallest%20IAB%20standard%20size%20of%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_setupViewableImpObserver%3Afunction%20_setupViewableImpObserver()%7Bvar%20_this12%3Dthis%3Bvar%20topMargin%3Dthis._getSmallestHeight()%2F2%2Coptions%3D%7Broot%3Anull%2CrootMargin%3A'-'%2BtopMargin%2B'px%200px%200px%200px'%2Cthreshold%3A%5B0.5%5D%7D%3Bthis.viewableImpObserver%3Dnew%20IntersectionObserver(function(entries)%7Breturn%20_this12._viewableImpCheck(entries)%3B%7D%2Coptions)%3Bthis.viewableImpObserver.observe(this)%3B%7D%2C_viewableImpCheck%3Afunction%20_viewableImpCheck(entries)%7Bvar%20_this13%3Dthis%3Bentries.forEach(function(entry)%7Bvar%20ratio%3Dentry.intersectionRatio%2Cviewable%3Dratio%3E%3D0.5%3B_this13.isViewable%3Dviewable%3Bif(viewable)%7B_this13._autoRefreshCheck()%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20observer%20to%20broadcast%20viewability%20info%20to%20Paramount%20ads.%0A%20%20%20%20%20%20%20%20%20*%20Threshold%20value%20gets%20set%20in%20the%20config.%20Default%20threshold%20%3D%200.1%20(10%25%20in%20view).%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_setupViewabilityObserver%3Afunction%20_setupViewabilityObserver()%7Bvar%20_this14%3Dthis%3Bvar%20viewabilityThreshold%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'viewability'%2C'threshold')%7C%7C0.1%3Bvar%20options%3D%7Broot%3Anull%2Cthreshold%3A%5BviewabilityThreshold%5D%7D%3Bthis.viewabilityObserver%3Dnew%20IntersectionObserver(function(entries)%7Breturn%20_this14._viewabilityCheck(entries)%3B%7D%2Coptions)%3Bthis.viewabilityObserver.observe(this)%3B%7D%2C_viewabilityCheck%3Afunction%20_viewabilityCheck(entries)%7Bvar%20_this15%3Dthis%3Bvar%20viewabilityThreshold%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'viewability'%2C'threshold')%7C%7C0.1%3Bentries.forEach(function(entry)%7Bvar%20ratio%3Dentry.intersectionRatio%2CisVisible%3Dratio%3E%3DviewabilityThreshold%2Cmessage%3DJSON.stringify(%7BgaMsg%3Atrue%2Cvisible%3AisVisible%7D)%3B_this15._msgSlot(message)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20the%20smallest%20standard%20IAB%20ad%20height%20of%20the%20ad%20slots%20defined%20sizes%2C%20defaults%20to%2050%20since%20that's%20the%20smallest%20IAB%20height%20we'd%20encounter%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BNumber%7D%20Height%20in%20px%20of%20the%20smallest%20standard%20IAB%20size%20that%20matches%20a%20size%20of%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_getSmallestHeight%3Afunction%20_getSmallestHeight()%7Bvar%20iabHeights%3D%5B50%2C90%2C250%2C600%2C1050%5D%2CslotHeights%3D(this.sizes%7C%7C%5B%5D).map(function(size)%7Breturn%20size%5B1%5D%3B%7D)%3Breturn%20iabHeights.find(function(height)%7Bif(slotHeights.indexOf(height)!%3D%3D-1)return%20height%3B%7D)%7C%7C50%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Slot%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerSlot%3DPartnerSlot%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-slot.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-slot.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/partner-slot.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.gciAnalyticsUAID%3Dwindow.ga_data.site.uaid%2B'-TEALIUM-UW'%3Bvar%20tealiumScriptEl%3Ddocument.createElement('script')%3Bvar%20tealiumScriptSource%3Dga_data.site.gciAnalytics.scriptUrl%3Bif(tealiumScriptSource.indexOf('gcdn%2F')%3E-1)%7Bif(location.hostname.substr(0%2C3)%3D%3D%3D'eu.')%7BtealiumScriptSource%3DtealiumScriptSource.replace('www'%2C'eu')%3B%7Delse%20if(location.hostname.substr(0%2C9)%3D%3D%3D'uw-media.')%7BtealiumScriptSource%3DtealiumScriptSource.replace('www'%2C'uw-media')%3B%7D%7DtealiumScriptEl.src%3DtealiumScriptSource%3Bdocument.body.appendChild(tealiumScriptEl)%3BPolymer(%7Bis%3A'partner-gci-analytics'%2Cproperties%3A%7BcurrentUser%3A%7Btype%3AObject%2CreadOnly%3Atrue%7D%2CtrackPageView%3ABoolean%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%2Cwindow.ga_data.behaviors.AnalyticsElementBehavior%5D%2CORIGINATING_MARKET_TABLE%3A%7B'independentmail'%3A'Anderson%20SC'%2C%2F%2FPAIM%0A'thetowntalk'%3A'Alexandria%20LA'%2C%2F%2FPALE%0A'postcrescent'%3A'Appleton%20WI'%2C%2F%2FPAPN%0A'reporternews'%3A'Abilene%20TX'%2C%2F%2FPARN%0A'citizen-times'%3A'Asheville%20NC'%2C%2F%2FPASH%0A'battlecreekenquirer'%3A'Battle%20Creek%20MI'%2C%2F%2FPBAC%0A'pressconnects'%3A'Binghamton%20MY'%2C%2F%2FPBIN%0A'kitsapsun'%3A'Bremerton%20WA'%2C%2F%2FPBKS%0A'blackmountainnews'%3A'Black%20Mountain%20NC'%2C%2F%2FPBMN%0A'floridatoday'%3A'Melbourne%20FL'%2C%2F%2FPBRE%0A'ucyrustelegraphforum'%3A'Bucyrus%20OH'%2C%2F%2FPBUC%0A'burlingtonfreepress'%3A'Burlington%20VT'%2C%2F%2FPBUR%0A'caller'%3A'Corpus%20Christi%20TX'%2C%2F%2FPCCT%0A'centralfloridafuture'%3A'Orlando%20FL'%2C%2F%2FPCFF%0A'courierpostonline'%3A'Cherry%20Hill%20NJ'%2C%2F%2FPCHH%0A'chillicothegazette'%3A'Chillicothe%20OH'%2C%2F%2FPCHI%0A'cincinnati'%3A'Cincinnati%20OH'%2C%2F%2FPCIN%0A'theleafchronicle'%3A'Clarksville%20TN'%2C%2F%2FPCLA%0A'mycentraljersey'%3A'Somerville%20NJ'%2C%2F%2FPCNJ%0A'coshoctontribune'%3A'Coshocton%20OH'%2C%2F%2FPCOS%0A'desmoinesregister'%3A'Des%20Moines%20IA'%2C%2F%2FPDEM%0A'dmjuice'%3A'Des%20Moines%20IA'%2C%2F%2FPDMJ%0A'freep'%3A'Detroit%20MI%20(Free%20Press)'%2C%2F%2FPDTF%0A'detroitnews'%3A'Detroit%20MI%20(Detroit%20News)'%2C%2F%2FPDTN%0A'stargazette'%3A'Elmira%20NY'%2C%2F%2FPELM%0A'courierpress'%3A'Camden%20MI'%2C%2F%2FPEVC%0A'fdlreporter'%3A'Fond%20du%20Lac%20WI'%2C%2F%2FPFDL%0A'thenews-messenger'%3A'Fremont%20OH'%2C%2F%2FPFRE%0A'fsunews'%3A'Tallahassee%20FL'%2C%2F%2FPFSU%0A'coloradoan'%3A'Fort%20Collins%20CO'%2C%2F%2FPFTC%0A'news-press'%3A'Fort%20Myers%20FL'%2C%2F%2FPFTM%0A'greenbaypressgazette'%3A'Green%20Bay%20WI'%2C%2F%2FPGRB%0A'greenvilleonline'%3A'Greenville%20SC'%2C%2F%2FPGRE%0A'greatfallstribune'%3A'Great%20Falls%20MT'%2C%2F%2FPGRF%0A'guampdn'%3A'Guam%20GU'%2C%2F%2FPGUA%0A'thehammontonnews'%3A'Hammonton%20NJ'%2C%2F%2FPHAM%0A'hattiesburgamerican'%3A'Hattiesburg%20MS'%2C%2F%2FPHAT%0A'thegleaner'%3A'Henderson%20KY'%2C%2F%2FPHGL%0A'hawkcentral'%3A'Iowa%20City%20IA'%2C%2F%2FPIHC%0A'indystar'%3A'Indianapolis%20IN'%2C%2F%2FPIND%0A'press-citizen'%3A'Iowa%20City%20IA'%2C%2F%2FPIOC%0A'ithacajournal'%3A'Ithaca%20NY'%2C%2F%2FPITH%0A'clarionledger'%3A'Jackson%20MS'%2C%2F%2FPJAM%0A'jacksonsun'%3A'Jackson%20TN'%2C%2F%2FPJAT%0A'knoxnews'%3A'Knoxville%20TN'%2C%2F%2FPKNS%0A'jconline'%3A'Lafayette%20IN'%2C%2F%2FPLAI%0A'theadvertiser'%3A'Lafayette%20LA'%2C%2F%2FPLAL%0A'lancastereaglegazette'%3A'Lancaster%20OH'%2C%2F%2FPLAN%0A'livingstondaily'%3A'Howell%20MI'%2C%2F%2FPLID%0A'courier-journal'%3A'Louisville%20KY'%2C%2F%2FPLOU%0A'lansingstatejournal'%3A'Lansing%20MI'%2C%2F%2FPLSJ%0A'htrnews'%3A'Manitowoc%20WI'%2C%2F%2FPMAC%0A'marshfieldnewsherald'%3A'Marshfield%20WI'%2C%2F%2FPMAD%0A'mansfieldnewsjournal'%3A'Mansfield%20OH'%2C%2F%2FPMAN%0A'marionstar'%3A'Marion%20OH'%2C%2F%2FPMAR%0A'commercialappeal'%3A'Memphis%20TN'%2C%2F%2FPMCA%0A'marconews'%3A'Marco%20Island%20FL'%2C%2F%2FPMIF%0A'jsonline'%3A'Milwaukee%20WI'%2C%2F%2FPMJS%0A'baxterbulletin'%3A'Mountain%20Home%20AR'%2C%2F%2FPMOH%0A'thenewsstar'%3A'Monroe%20LA'%2C%2F%2FPMON%0A'dailyrecord'%3A'Parsippany%20NJ'%2C%2F%2FPMOR%0A'montgomeryadvertiser'%3A'Montgomery%20AL'%2C%2F%2FPMOY%0A'thestarpress'%3A'Muncie%20IN'%2C%2F%2FPMUN%0A'dnj'%3A'Murfreesboro%20TN'%2C%2F%2FPMUR%0A'tennessean'%3A'Nashville%20TN'%2C%2F%2FPNAS%0A'naplesnews'%3A'Naples%20FL'%2C%2F%2FPNDN%0A'newarkadvocate'%3A'Newark%20OH'%2C%2F%2FPNEW%0A'northjersey'%3A'Woodland%20Park%20NM'%2C%2F%2FPNJM%0A'demingheadlight'%3A'Deming%20NM'%2C%2F%2FPNM1%0A'lcsun-news'%3A'Las%20Cruces%20NM'%2C%2F%2FPNM2%0A'scsun-news'%3A'Silver%20City%20NM'%2C%2F%2FPNM3%0A'currentargus'%3A'Carlsbad%20NM'%2C%2F%2FPNM5%0A'alamogordonews'%3A'Alamogordo%20NM'%2C%2F%2FPNM6%0A'daily-times'%3A'Farmington%20NM'%2C%2F%2FPNM7%0A'ruidosonews'%3A'Ruidoso%20NM'%2C%2F%2FPNM8%0A'hometownlife'%3A'Detroit%20MI%20(Detroit%20News)'%2C%2F%2FPOEN%0A'dailyworld'%3A'Opelousas%20LA'%2C%2F%2FPOPE%0A'thenorthwestern'%3A'Oshkosh%20WI'%2C%2F%2FPOSH%0A'packersnews'%3A'Green%20Bay%20WI'%2C%2F%2FPPAN%0A'desertsun'%3A'Palm%20Springs%20CA'%2C%2F%2FPPAS%0A'pnj'%3A'Pensacola%20FL'%2C%2F%2FPPEN%0A'eveningsun'%3A'Hanover%20PA'%2C%2F%2FPPES%0A'flipsidepa'%3A'York%20PA'%2C%2F%2FPPFS%0A'gametimepa'%3A'York%20PA'%2C%2F%2FPPGT%0A'azcentral'%3A'Phoenix%20AZ'%2C%2F%2FPPHX%0A'lavozarizona'%3A'Phoenix%20AZ'%2C%2F%2FPPHXS%0A'inyork'%3A'York%20PA'%2C%2F%2FPPIY%0A'ldnews'%3A'Lebanon%20PA'%2C%2F%2FPPLD%0A'portclintonnewsherald'%3A'Fremont%20OH'%2C%2F%2FPPOC%0A'thetimesherald'%3A'Port%20Huron%20MI'%2C%2F%2FPPOH%0A'poughkeepsiejournal'%3A'Poughkeepsie%20NY'%2C%2F%2FPPOU%0A'publicopiniononline'%3A'Chambersburg%20PA'%2C%2F%2FPPPO%0A'yorkdispatch'%3A'York%20PA%20(dispatch)'%2C%2F%2FPPYD%0A'ydr'%3A'York%20PA%20(daily%20record)'%2C%2F%2FPPYR%0A'rgj'%3A'Reno%20NV'%2C%2F%2FPREN%0A'pal-item'%3A'Richmond%20IN'%2C%2F%2FPRIC%0A'democratandchronicle'%3A'Rochester%20NY'%2C%2F%2FPROC%0A'redding'%3A'Redding%20CA'%2C%2F%2FPRRS%0A'reno'%3A'Reno%20NV'%2C%2F%2FPRTH%0A'statesmanjournal'%3A'Salem%20OR'%2C%2F%2FPSAL%0A'thecalifornian'%3A'Salinas%20CA'%2C%2F%2FPSAS%0A'gosanangelo'%3A'San%20Angelo%20TX'%2C%2F%2FPSAT%0A'delmarvanow'%3A'Salisbury%20MD'%2C%2F%2FPSAY%0A'sheboyganpress'%3A'Sheboygan%20WI'%2C%2F%2FPSHE%0A'shreveporttimes'%3A'Shreveport%20LA'%2C%2F%2FPSHR%0A'argusleader'%3A'Sioux%20Falls%20SD'%2C%2F%2FPSIF%0A'elsoldesalinas'%3A'Salinas%20CA'%2C%2F%2FPSOL%0A'news-leader'%3A'Springfield%20MO'%2C%2F%2FPSPR%0A'newsleader'%3A'Staunton%20VA'%2C%2F%2FPSTA%0A'sctimes'%3A'St.%20Cloud%20MN'%2C%2F%2FPSTC%0A'thespectrum'%3A'St.%20George%20UT'%2C%2F%2FPSTG%0A'stevenspointjournal'%3A'Stevens%20Point%20WI'%2C%2F%2FPSTP%0A'tallahassee'%3A'Tallahassee%20FL'%2C%2F%2FPTAL%0A'tcpalm'%3A'Stuart%20FL'%2C%2F%2FPTCN%0A'elpasotimes'%3A'El%20Paso%20TX'%2C%2F%2FPTX1%0A'elpasoymas'%3A'El%20Paso%20TX'%2C%2F%2FPTX2%0A'upstateparent'%3A'Greenville%20SC'%2C%2F%2FPUPP%0A'vcstar'%3A'Camarillo%20CA'%2C%2F%2FPVCS%0A'thedailyjournal'%3A'Vineland%20NJ'%2C%2F%2FPVIN%0A'visaliatimesdelta'%3A'Vistalia%20CA'%2C%2F%2FPVIT%0A'wausaudailyherald'%3A'Wausau%20WI'%2C%2F%2FPWAU%0A'delawarebeaches'%3A'Rehoboth%20Beach%20DE'%2C%2F%2FPWBC%0A'lohud'%3A'White%20Plains%20NY'%2C%2F%2FPWES%0A'delawareonline'%3A'Wilmington%20DE'%2C%2F%2FPWIL%0A'wisconsinrapidstribune'%3A'Wisconsin%20Rapids%20WI'%2C%2F%2FPWIR%0A'timesrecordnews'%3A'Wichita%20Falls%20TX'%2C%2F%2FPWTR%0A'wisfarmer'%3A'Stevens%20Point%20WI'%2C%2F%2FPWWF%0A'zanesvilletimesrecorder'%3A'Zanesville%20OH'%2C%2F%2FPZAN%0A'usatoday'%3A'USA%20TODAY'%2C%2F%2FUSAT%0A'usatnetwork'%3A'USA%20TODAY'%2F%2FUSNK%0A%7D%2Cready%3Afunction%20ready()%7Bdocument.addEventListener('gciAnalyticsReady'%2Cfunction(event)%7Bvar%20_this%3Dthis%3Bvar%20util%3Ddocument.createElement('util-analytics')%3Bif(this.trackPageView)%7Bthis.firePageView(util.getBaseRoute())%3B%7Dutil.getPageViewHistory().forEach(function(event)%7B_this.firePageView(event.route)%3B%7D)%3Butil.getEventHistory().forEach(function(event)%7B_this.fireCustomEvent(event.route%2Cevent.action)%3B%7D)%3Bwindow.addEventListener('ga-page-view'%2Cfunction(event)%7B_this.firePageView(event.detail.route)%3B%7D)%3Bwindow.addEventListener('ga-event'%2Cfunction(event)%7B_this.fireCustomEvent(event.detail.route%2Cevent.detail.action)%3B%7D)%3B%7D.bind(this))%3B%7D%2CfirePageView%3Afunction%20firePageView(route%2Caction)%7Bthis._fireEvent('pageview'%2Croute%2Caction)%3B%7D%2CfireCustomEvent%3Afunction%20fireCustomEvent(route%2Caction)%7Bthis._fireEvent('custom'%2Croute%2Caction)%3B%7D%2C_fireEvent%3Afunction%20_fireEvent(eventAlias%2Croute%2Caction)%7Bvar%20_this2%3Dthis%3Bvar%20trackMethod%3DeventAlias%3D%3D%3D'custom'%3F'link'%3A'view'%2CgciData%3Dthis._buildDataLayer(eventAlias%2Croute%2Caction)%3Bvar%20success%3Dfunction%20success(user)%7B_this2._setCurrentUser(user)%3Bwindow.gciAnalytics.user%3D_this2.currentUser%3Bwindow.gciAnalytics%5BtrackMethod%5D(gciData)%3B%7D%3Bvar%20failure%3Dfunction%20failure(error)%7Bwindow.gciAnalytics%5BtrackMethod%5D(gciData)%3B%2F%2F%20previously%20newrelic%0A%7D%3Bif(window.Gallium)%7BGallium.user.then(success%2Cfailure)%3B%7Delse%7Bwindow.addEventListener('ga-init'%2Cfunction()%7BGallium.user.then(success%2Cfailure)%3B%7D)%3B%7D%7D%2C_buildDataLayer%3Afunction%20_buildDataLayer(eventType%2Croute%2Caction)%7Bvar%20_action%3Daction%7C%7Croute.action%2Cssts%3Droute.ssts.split('%2F')%2Ccst%3Droute.cst.split('%2F')%2CvirtualPath%3Dvoid%200%2Creferrer%3D%7B%7D%2CinNetworkSites%3Dwindow.ga_data.site.contentSharingPattern%3Fwindow.ga_data.site.contentSharingPattern.slice(1%2C-1).split('%7C')%3A%5B%5D%2CcameFromInNetworkSite%3D!!inNetworkSites.find(function(s)%7Breturn%20s.indexOf(referrer.host)%3B%7D)%2CsessionStartUrl%3DsessionStorage.getItem('landingUrl')%2CdatePublished%3Dnew%20Date(route.datePublished)%3Bif(route.basePageType.indexOf('asset%20gallery')%3E-1%26%26route.galleryIndex%3E0)%7BeventType%3D'slideview'%3B%7Delse%20if(route.basePageType.indexOf('video-asset')%3E-1)%7BeventType%3D'videoview'%3B%7Dtry%7Bvar%20url%3Dnew%20URL(route.url)%3BvirtualPath%3Durl.pathname%3B%7Dcatch(e)%7BvirtualPath%3Dwindow.location.pathname%3B%7Dtry%7Breferrer%3Dnew%20URL(sessionStorage.getItem('prevUrl')%7C%7Cdocument.referrer)%3B%7Dcatch(e)%7Breferrer.pathname%3D'%2F'%2Bdocument.referrer.split('%2F').slice(3).join('%2F')%3Breferrer.host%3Ddocument.referrer.split('%2F')%5B2%5D%7C%7C''%3B%7Dvar%20dataLayer%3D%7B'client-action'%3A_action%2C'client-user-intents'%3Aga_data.intents%3Fga_data.intents.join('%2C')%3A''%2C'content-byline'%3Aroute.author%26%26route.author.length%3E0%3Froute.author.map(function(x)%7Breturn%20x.name.toLowerCase()%3B%7D).join('%2C')%3A''%2C'content-contributor-names'%3Aroute.author%26%26route.author.length%3E0%3Froute.author.map(function(x)%7Breturn%20x.name.toLowerCase()%3B%7D).join('%2C')%3A''%2C'content-cst-category'%3Acst%5B0%5D%2C%2F%2F%20CST%20Category%0A'content-cst-subcategory'%3Acst%5B1%5D%2C%2F%2F%20CST%20Subcategory%0A'content-cst-topic'%3Acst%5B2%5D%2C%2F%2F%20CST%20Topic%0A'content-headline'%3Aroute.headline%2C'content-id'%3Aroute.contentId%2C'content-keywords'%3Aroute.keywords%3Froute.keywords.join()%3Aroute.seoKeywords%2C'content-name'%3AvirtualPath%2C'content-photo-gallery-name'%3Aroute.galleryName%2C'content-photo-gallery-index'%3Aroute.galleryIndex%2C'content-ssts-section'%3Assts%5B0%5D%2C%2F%2F%20SSTS%20section%0A'content-ssts-subsection'%3Assts.slice(0%2C2).reduce(this._flattenSsts)%7C%7C''%2C%2F%2F%20SSTS%20sub-section%0A'content-ssts-topic'%3Assts.slice(0%2C3).reduce(this._flattenSsts)%7C%7C''%2C%2F%2F%20SSTS%20topic%0A'content-ssts-subtopic'%3Assts.reduce(this._flattenSsts)%7C%7C''%2C%2F%2F%20SSTS%20sub-topic%0A'content-story-highlights'%3Adocument.querySelector('story-highlights')%3F'story%20highlights%7Cnumheadlines%3D'%2Bdocument.querySelector('story-highlights%20%3E%20ul').children.length%3A'no%20story%20highlights'%2C'content-title'%3Aroute.name%2C'content-type'%3Aroute.basePageType%2C'event-type'%3AeventType%2C'event-universal-application-instance-identifier'%3A''%2Bwindow.ga_data.site.uaid%2C'event-paywall-state'%3Afunction()%7Bvar%20contentName%3Dwindow.location.pathname%2CeventPaywallState%3D''%3Bif(contentName.indexOf('restricted')%3E-1)%7BeventPaywallState%3D'premium'%3B%7Delse%20if(contentName.indexOf('get-access')%3E-1)%7BeventPaywallState%3D'metered'%3B%7Dif(eventPaywallState.length%3E0)%7BeventPaywallState%3D'iframe_'%2BeventPaywallState%2B'_roadblock'%3B%7Dreturn%20eventPaywallState%3B%7D()%2C'page-domain'%3Awindow.location.host%2C'page-experience-type'%3Awindow.Gallium.isMobile%3F'mobileweb'%3A'desktop'%2C'page-experience-version'%3Aga_data.utils.getUrlParamValue('sitelabel')%7C%7Cga_data.intents.indexOf('variant-group%3Astreamlined')%3E-1%3F'universal-streamlined'%3A'universal'%2C'page-full-url'%3Adocument.location.href%2C'page-has-video'%3Aroute.includesVideo%3F'yes'%3A'no'%2C'page-previous-content-name'%3AsessionStartUrl%7C%7CcameFromInNetworkSite%3Freferrer.pathname%3A''%2C'page-previous-full-url'%3Aroute.actionUrl%7C%7C''%7D%3Bif(!isNaN(datePublished.getMonth()))%7BdataLayer%5B'content-date-published'%5D%3DdatePublished.getFullYear()%2B'-'%2B('0'%2B(datePublished.getMonth()%2B1)).slice(-2)%2B'-'%2B('0'%2BdatePublished.getDate()).slice(-2)%2B'%20'%2B('0'%2BdatePublished.getHours()).slice(-2)%2B'%3A'%2B('0'%2BdatePublished.getMinutes()).slice(-2)%3B%7Dif(ga_data.route.cam)%7BdataLayer%5B'content-protection-state'%5D%3Dga_data.route.cam.contentProtectionState%3B%7Dif(ga_data.route.sourceOrganization%26%26ga_data.route.sourceOrganization.name)%7BdataLayer%5B'content-source'%5D%3Dga_data.route.sourceOrganization.name%3B%7Delse%7BdataLayer%5B'content-source'%5D%3Droute.url%26%26route.url.length%3Fthis._getOriginatingMarket(route.url)%3A''%3B%2F%2FOriginating%20Market%20from%20table%20lookup%20by%20canonical%20url%20domain%0A%7DdataLayer%5B'page-oembed'%5D%3Dthis._getOembedAnalyticsValue(ga_data)%3Bif(_action)%7BdataLayer%5B'page-refreshed'%5D%3D_action.indexOf('refresh%3A')%3D%3D0%3F_action%3A''%3B%7Dreturn%20dataLayer%3B%7D%2C_getOembedAnalyticsValue%3Afunction%20_getOembedAnalyticsValue(ga_data)%7Bvar%20oembedCount%3D0%3Bvar%20oembedValue%3D''%3Bif(ga_data.oembed%26%26ga_data.oembed.length)%7BoembedCount%3Dga_data.oembed.length%3BoembedValue%3D''%2Bga_data.oembed.map(function(o%2Ck)%7Breturn%20k%2B1%2B'%2C'%2Bo%3B%7D).join('%7C')%3B%7Dif(ga_data.route.thingsToDoPresent)%7BoembedCount%2B%2B%3B%2F%2F%20this%20assumes%20ThingsToDoModule%20will%20be%20at%20the%20end%20of%20the%20evar%20string.%20If%20that%20is%20no%20longer%20the%20case%20then%20it'll%20need%20to%20be%20adjusted%0AoembedValue%3D''%2BoembedValue%2B(oembedValue.length%3E0%3F'%7C'%3A'')%2BoembedCount%2B'%2CThingsToDoModule'%3B%7Dif(oembedCount%3E0)return%20oembedCount%2B'%7C'%2BoembedValue%3B%7D%2C_getOriginatingMarket%3Afunction%20_getOriginatingMarket(url)%7Bvar%20domain%3Durl.match(%2F%5E((http%5Bs%5D%3F%7Cftp)%3A%5C%2F)%3F%5C%2F%3F(%5B%5E%3A%5C%2F%5Cs%5D%2B)((%5C%2F%5Cw%2B)*%5C%2F)(%5B%5Cw%5C-%5C.%5D%2B%5B%5E%23%3F%5Cs%5D%2B)(.*)%3F(%23%5B%5Cw%5C-%5D%2B)%3F%24%2Fi)%5B3%5D.split('.')%5B1%5D%3Breturn%20domain.length%26%26this.ORIGINATING_MARKET_TABLE%5Bdomain%5D%26%26this.ORIGINATING_MARKET_TABLE%5Bdomain%5D.length%3Fthis.ORIGINATING_MARKET_TABLE%5Bdomain%5D%3A''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-gci-analytics%2Fpartner-gci-analytics.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-gci-analytics%2Fpartner-gci-analytics.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-gci-analytics/partner-gci-analytics.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PromoItem%20*%2Fwindow.ga_data.behaviors.PromoItem%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Utility%20to%20pass%20urls%20%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20promoUrl%20full%20uri%20of%20the%20promo%20item%2C%20not%20necessarily%20in%20same%20domain%20as%20current%20host%2Fenv%0A%20%20%20%20%20%20%20%20%20*%20%0A%20%20%20%20%20%20%20%20%20*%2FGANNETT_SITES_REGEX%3A'(alamogordonews%7Capp%7Cargusleader%7Cazcentral%7Cbattlecreekenquirer%7Cbaxterbulletin%7Cblackmountainnews%7Cbrookfield-elmgrovenow%7Cbucyrustelegraphforum%7Cburlingtonfreepress%7Ccaller%7Ccentralfloridafuture%7Cchillicothegazette%7Ccincinnati%7Ccitizen-times%7Cclarionledger%7Ccoloradoan%7Ccommercialappeal%7Ccoshoctontribune%7Ccourier-journal%7Ccourierpostonline%7Ccourierpress%7Ccurrentargus%7Cdaily-times%7Cdailyrecord%7Cdailyworld%7Cdelawarebeaches%7Cdelawareonline%7Cdelmarvanow%7Cdemingheadlight%7Cdemocratandchronicle%7Cdesertsun%7Cdesmoinesregister%7Cdmjuice%7Cdnj%7Celpasotimes%7Ceveningsun%7Cfdlreporter%7Cfloridatoday%7Cfreep%7Cfsunews%7Cgosanangelo%7Cgreatfallstribune%7Cgreenbaypressgazette%7Cgreenfield-westallisnow%7Cgreenvilleonline%7Cguampdn%7Chattiesburgamerican%7Chawkcentral%7Chometownlife%7Chtrnews%7Cindependentmail%7Cindystar%7Cithacajournal%7Cjacksonsun%7Cjconline%7Cjsonline%7Ckitsapsun%7Cknoxnews%7Clancastereaglegazette%7Clakecountrynow%7Clansingstatejournal%7Clavozarizona%7Clcsun-news%7Cldnews%7Clivingstondaily%7Clohud%7Cmansfieldnewsjournal%7Cmarconews%7Cmarionstar%7Cmarshfieldnewsherald%7Cmetroparentmagazine%7Cmontgomeryadvertiser%7Cmuskego-newberlinnow%7Cmycentraljersey%7Cmydesert%7Cmynorthshorenow%7Cmynorthwestnow%7Cmyozaukeenow%7Cmysouthnow%7Cmysouthshorenow%7Cnaplesnews%7Cnewarkadvocate%7Cnews-leader%7Cnews-press%7Cnewsleader%7Cnorthjersey%7Cpackersnews%7Cpal-item%7Cpnj%7Cportclintonnewsherald%7Cpostcrescent%7Cpoughkeepsiejournal%7Cpress-citizen%7Cpressconnects%7Cpublicopiniononline%7Credding%7Creno%7Creporternews%7Crgj%7Cruidosonews%7Cscsun-news%7Csctimes%7Csheboyganpress%7Cshreveporttimes%7Csomosfrontera%7Cstargazette%7Cstatesmanjournal%7Cstevenspointjournal%7Ctallahassee%7Ctcpalm%7Ctennessean%7Ctheadvertiser%7Cthecalifornian%7Cthedailyjournal%7Ctheleafchronicle%7Cthegleaner%7Cthenews-messenger%7Cthenewsstar%7Cthenorthwestern%7Cthespectrum%7Cthestarpress%7Cthetimesherald%7Cthetowntalk%7Ctimesrecordnews%7Cupstateparent%7Cvcstar%7Cvisaliatimesdelta%7Cwausaudailyherald%7Cwaukeshanow%7Cwauwatosanow%7Cwisconsinrapidstribune%7Cwisfarmer%7Cydr%7Czanesvilletimesrecorder%7Cusatoday)'%2CDETROITNEWS_SITES_REGEX%3A'(detroitnews)'%2C_checkIsUrlExternal%3Afunction%20_checkIsUrlExternal(url)%7Breturn!(url.indexOf('%2F')%3D%3D%3D0)%3B%7D%2C_preserveLocalURL%3Afunction%20_preserveLocalURL(promoUrl)%7Bif(!promoUrl)return%20promoUrl%3Bif(promoUrl.indexOf('%2F%2Fftw.usatoday.com')%3E0)%7B%2F%2F%20NOTE%3A%20we%20do%20not%20want%20to%20localize%20ftw%20urls%2C%20they%20come%20back%20correctly%20from%20packaged%20content%20service%20and%20should%20go%20to%20the%20FTW%20platforms%0Areturn%20promoUrl%3B%7Dvar%20siteRegex%3Dwindow.ga_data.site.contentSharingPattern%3Fwindow.ga_data.site.contentSharingPattern%3Awindow.ga_data.site.baseName%3D%3D%3D'detroitnews'%3Fthis.DETROITNEWS_SITES_REGEX%3Athis.GANNETT_SITES_REGEX%3Breturn%20promoUrl.replace(new%20RegExp('%5Ehttps%3F%3A%2F%2Fwww.(%3F%3A'%2BsiteRegex%2B'.com)(%2F.*)')%2C'%242')%3B%7D%2C_getClassNameForElement%3Afunction%20_getClassNameForElement(el)%7Breturn%20this._getClassNameForWidth(this._getContainerWidth(el))%3B%7D%2C_getClassNameForWidth%3Afunction%20_getClassNameForWidth(width)%7Bif(width%3C480)%7Breturn'colwidth-narrow'%3B%7Delse%20if(width%3E%3D480%26%26width%3C850)%7Breturn'colwidth-medium'%3B%7Delse%7Breturn'colwidth-wide'%3B%7D%7D%2C_getContainerWidth%3Afunction%20_getContainerWidth(el)%7Bif(el%26%26el.nodeType)%7Bvar%20w%3Del.offsetWidth%3Bif(w%3E0)%7Breturn%20w%3B%7Dif(el.parentElement)%7Breturn%20this._getContainerWidth(el.parentElement)%3B%7D%7Dreturn%200%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpromo-item.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpromo-item.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/promo-item.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PackagedContentBehavior%20*%2Fwindow.ga_data.behaviors.PackagedContentBehavior%3D%7B_valueChange%3Afunction%20_valueChange(service%2CsiteCode%2Cfront%2Cquery%2Cssts%2Ccount%2CassetType%2CincludeBody%2CprestoModuleName)%7B%2F%2F%20get%20a%20default%20value%20here%20and%20increment%20it%0Acount%3Dcount%7C%7C5%3Bcount%2B%2B%3Bif(ssts%26%26ssts.indexOf('sstspath%3A')%3E-1)%7Bssts%3Dssts.split('%3A')%5B1%5D%3B%7Dif(ssts%26%26ssts%3D%3D'*')%7Bssts%3D''%3B%7Dvar%20err%3Dfalse%3Bvar%20url%3Dga_data.site.hosts.pcsAPI%3Bvar%20baseKey%3Dga_data.site.keys.pcsKey%3Bvar%20siteUAID%3Dthis.getAttribute('site-code')%7C%7Cwindow.ga_data.site.uaid%3Bif(service%3D%3D%3D'section')%7Bif(front)%7Burl%2B%3D'section%2Fpromo%2F'%2BsiteUAID%2B'%2F'%2Bfront%3Burl%3Dthis._appendUrlParam(url%2C'site-code'%2Cwindow.ga_data.site.uaid)%3Burl%3Dthis._appendUrlParam(url%2C'count'%2Ccount)%3Burl%3Dthis._appendUrlParam(url%2C'includeBody'%2CincludeBody)%3Burl%3Dthis._appendUrlParam(url%2C'prestomodulename'%2CprestoModuleName)%3B%7Delse%7Berr%3Dtrue%3B%7D%7Delse%20if(service%3D%3D%3D'sectionlite')%7Bif(front)%7Burl%2B%3D'section%2Fpromo%2Fbymodule%2F'%2BsiteUAID%2B'%2F'%2Bfront%3Burl%3Dthis._appendUrlParam(url%2C'site-code'%2Cwindow.ga_data.site.uaid)%3Burl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'count'%2Ccount)%3B%7Delse%7Berr%3Dtrue%3B%7D%7Delse%20if(service%3D%3D%3D'popular')%7Burl%2B%3D'popular%2F'%2Bwindow.ga_data.site.uaid%2B(count%3F'%2F'%2Bcount%3A'')%3Bif(ssts)%7Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cssts)%3B%7Durl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'searchtype'%2C'pageViews')%3B%7Delse%20if(service%3D%3D%3D'social')%7Burl%2B%3D'popular%2F'%2Bwindow.ga_data.site.uaid%2B(count%3F'%2F'%2Bcount%3A'')%3Bif(ssts)%7Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cssts)%3B%7Durl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'searchtype'%2C'socialReferrals')%3B%7Delse%20if(service%3D%3D%3D'trending')%7Burl%2B%3D'popular%2F'%2Bwindow.ga_data.site.uaid%2B(count%3F'%2F'%2Bcount%3A'')%3Bif(ssts)%7Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cssts)%3B%7Durl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'searchtype'%2C'pageViews')%3B%7Delse%7Berr%3Dtrue%3B%7Dif(err)%7Bthis._handleError()%3B%7Delse%7Breturn%20this._appendUrlParam(url%2C'apiKey'%2CbaseKey)%3B%7Dreturn''%3B%7D%2C_appendUrlParam%3Afunction%20_appendUrlParam(url%2CparamName%2CparamValue)%7Bif(paramValue)%7Breturn''%2Burl%2B(url.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BparamName%2B'%3D'%2BencodeURIComponent(paramValue)%3B%7Dreturn%20url%3B%7D%2C_getLabel%3Afunction%20_getLabel(ssts)%7Breturn%20ssts.taxonomyEntityDisplayName%3Fssts.taxonomyEntityDisplayName%3Assts.leafName%3B%7D%2C_parseDate%3Afunction%20_parseDate(parseDate)%7Bif(isNaN(parseDate))%7Bvar%20tempTime%3Dnew%20Date(parseDate).getTime()%3Breturn!isNaN(tempTime)%26%26tempTime%3FtempTime%3A''%3B%7Delse%7Breturn(parseInt(parseDate)*1000).toString()%3B%7D%7D%2C_getFormattedSsts%3Afunction%20_getFormattedSsts(ssts)%7Bif(!ssts)return''%3Bif(ssts.subtopic)return%20ssts.section%2B'%2F'%2Bssts.subsection%2B'%2F'%2Bssts.topic%2B'%2F'%2Bssts.subtopic%3Bif(ssts.topic)return%20ssts.section%2B'%2F'%2Bssts.subsection%2B'%2F'%2Bssts.topic%3Bif(ssts.subsection)return%20ssts.section%2B'%2F'%2Bssts.subsection%3Breturn''%2Bssts.section%3B%7D%2C_removeStoryAsset%3Afunction%20_removeStoryAsset(storyAsset%2Cassets%2Ccount)%7Bvar%20ret%3Dassets.filter(function(asset)%7Breturn%20asset.assetId!%3D%3DstoryAsset.toString()%3B%7D)%3B%2F%2F%20default%20value%0Acount%3Dcount%7C%7C5%3Bif(ret.length%3Ecount)%7Bret.splice(-1%2C1)%3B%7Dreturn%20ret%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpackaged-content-behavior.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpackaged-content-behavior.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/packaged-content-behavior.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.ImageResize%20*%2Fwindow.ga_data.behaviors.ImageResize%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Utility%20to%20pass%20thumbnail%20into%20image%20resizer%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20imageUrl%20full%20uri%20of%20image%20to%20resize%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20width%20target%20width%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20height%20target%20height%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20additionalParams%20query%20params%20passed%20to%20image%20resizer%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BBoolean%7D%20external%20ignore%20additionalParams%20to%20allow%20query%20params%20in%20imageUrl%0A%20%20%20%20%20%20%20%20%20*%2F_getThumbnail%3Afunction%20_getThumbnail(imageUrl%2Cwidth)%7Bvar%20height%3Darguments.length%3E2%26%26arguments%5B2%5D!%3D%3Dundefined%3Farguments%5B2%5D%3A''%3Bvar%20additionalParams%3Darguments.length%3E3%26%26arguments%5B3%5D!%3D%3Dundefined%3Farguments%5B3%5D%3A''%3Bif(!imageUrl)%7Breturn''%3B%7Dif(additionalParams%3D%3D%3D'external')return%20ga_data.site.hosts.gannettCDN%2B'%2F-ip-%2F'%2Bwidth%2B'x'%2Bheight%2B'%2F'%2BimageUrl%3Bvar%20resizeParams%3D''%3Bif(additionalParams%26%26additionalParams.indexOf('crop%3D')%3E-1%7C%7C!height)%7BresizeParams%3D'width%3D'%2Bwidth%3B%7Delse%7BresizeParams%3D'width%3D'%2Bwidth%2B'%26height%3D'%2Bheight%3B%7Dif(additionalParams%26%26additionalParams!%3D%3D'')resizeParams%3DresizeParams%2B('%26'%2BadditionalParams)%3Bif(imageUrl.indexOf('http%3A%2F%2Fvideos.usatoday.net')%3D%3D%3D0)return%20ga_data.site.hosts.gannettCDN%2B'%2F-ip-%2F'%2Bwidth%2B'x'%2Bheight%2B'%2F'%2BimageUrl%2B(imageUrl.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BresizeParams%3Bif(imageUrl.indexOf('http%3A%2F%2Fwww.gannett-cdn.com')%3D%3D%3D0)imageUrl%3DimageUrl.replace('http'%2C'https')%3Bif(imageUrl.indexOf('https%3A%2F%2Fwww.gannett-cdn.com')%3D%3D%3D0%7C%7CimageUrl.indexOf('https%3A%2F%2Fassets.gannettdigital.com')%3D%3D%3D0)%7Breturn''%2BimageUrl%2B(imageUrl.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BresizeParams%3B%7Delse%7Breturn%20ga_data.site.hosts.gannettCDN%2B'%2F-ip-%2F%2F'%2BimageUrl%2B(imageUrl.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BresizeParams%3B%7D%7D%2C_getCropFromArray%3Afunction%20_getCropFromArray(cropsArr%2CcropName)%7Bfor(var%20i%3D0%3Bi%3CcropsArr.length%3Bi%2B%2B)%7Bif(cropsArr%5Bi%5D.name%3D%3D%3DcropName)%7Breturn%20cropsArr%5Bi%5D.path%3B%7D%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fimage-resize.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fimage-resize.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/image-resize.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.AnalyticsElementBehavior%20*%2Fwindow.ga_data.behaviors.AnalyticsElementBehavior%3D%7B_flattenSsts%3Afunction%20_flattenSsts(acc%2Ccur)%7Breturn%20acc%2B(cur!%3D%3D''%3F'%3A'%2Bcur%3A'')%3B%7D%2C_getTypeValue%3Afunction%20_getTypeValue(route)%7Bvar%20contentType%3Droute.contentType%3Bswitch(route.contentType)%7Bcase'generic'%3AcontentType%3D'interactive'%3Bbreak%3Bcase'story'%3AcontentType%3D'article'%3Bbreak%3B%2F%2F%20TODO%3A%20Add%20support%20for%20standalone%20video%20%2F%20gallery%0A%7Dreturn%20contentType%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20current%20time%20rounded%20to%20nearest%20half%20hour....%0A%20%20%20%20%20%20%20%20%20*%2F_getRoundedTimestamp%3Afunction%20_getRoundedTimestamp(date)%7Bif(!this._toLocaleStringSupportsLocales())return''%3Bvar%20realMin%3Ddate.getMinutes()%3Bif(realMin%3E45)%7Bdate.setMinutes(0)%3Bdate.setHours(date.getHours()%2B1)%3B%2F%2F%20Increment%2C%20will%20roll%20over%20(at%20least%20in%20chrome)%0A%7Delse%20if(realMin%3C15)%7Bdate.setMinutes(0)%3B%7Delse%7Bdate.setMinutes(30)%3B%7Dreturn%20date.toLocaleTimeString('en-US'%2C%7Bhour%3A'numeric'%2Cminute%3A'numeric'%7D).toLowerCase()%3B%7D%2C_getRoundedTimestampAndDayOfWeek%3Afunction%20_getRoundedTimestampAndDayOfWeek(date)%7Breturn%20this._getRoundedTimestamp(date)%2B'%7C'%2Bdate.toLocaleString('en-US'%2C%7Bweekday%3A'long'%7D)%3B%7D%2C%2F%2F%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FDate%2FtoLocaleString%23Checking_for_support_for_locales_and_options_arguments%0A_toLocaleStringSupportsLocales%3Afunction%20_toLocaleStringSupportsLocales()%7Btry%7Bnew%20Date().toLocaleString('i')%3B%7Dcatch(e)%7Breturn%20e%20instanceof%20RangeError%3B%7Dreturn%20false%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20user's%20meter%20state%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FANALYTICS%2FUser%2BStatus%0A%20%20%20%20%20%20%20%20*%2F_getUserStatus%3Afunction%20_getUserStatus()%7Bvar%20user%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3Afalse%3Bvar%20isAuthenticated%3Dvoid%200%2CmarketAccess%3Dvoid%200%2ClicenseType%3Dvoid%200%2Cguid%3Dvoid%200%2CuserStatus%3D'none'%3Bif(user)%7Bif(typeof%20user.meta!%3D%3D'undefined')%7BisAuthenticated%3Duser.meta.isAuthenticatedInCurrentContext%3B%7Dif(typeof%20user.response!%3D%3D'undefined')%7BmarketAccess%3Duser.response.user.hasMarketAccess%3BlicenseType%3Duser.response.user.userLicenseType%3Bguid%3Duser.response.user.userGuid%3B%7Dif(isAuthenticated%26%26marketAccess)%7BuserStatus%3DlicenseType%3B%7Delse%20if(isAuthenticated)%7BuserStatus%3D'authenticated'%3B%7Delse%20if(guid!%3D%3Dundefined)%7BuserStatus%3D'newsletter_guid'%3B%7D%7Dreturn%20userStatus%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20user's%20meter%20state%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FDATACOLLECTION%2FUser%2BMeter%2BState%0A%20%20%20%20%20%20%20%20*%2F_getUserMeterState%3Afunction%20_getUserMeterState()%7Bvar%20userAuthenticated%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3Afalse%3Bvar%20state%3D'nothitpaywall'%3Bvar%20fireflyValue%3Dthis._getUserFireflyState()%3Bif(fireflyValue)%7Bvar%20remaining%3DfireflyValue.viewThreshold-fireflyValue.viewCount%3Bif(userAuthenticated)%7Bstate%3D'authorized'%3B%7Delse%20if(remaining%3E0)%7Bstate%3Dremaining%3B%7Delse%7Bstate%3D'nofreearticlesremaining'%3B%7D%7Dreturn%20state%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20user's%20type%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FDS%2FUser%2BType%0A%20%20%20%20%20%20%20%20*%2F_getUserType%3Afunction%20_getUserType()%7Bvar%20user%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3Afalse%3Bvar%20userType%3D'anonymous'%3Bif(user)%7Bif(ga_data.utils.getNested(user%2C'response'%2C'user'%2C'hasMarketAccess'))%7BuserType%3D'subscriber'%3B%7Delse%20if(!ga_data.utils.getNested(user%2C'meta'%2C'isAnonymous'))%7BuserType%3D'registered'%3B%7D%7Dreturn%20userType%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20the%20identifier%20for%20the%20tag%20manager%20being%20used%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FDS%2FPage%2BAnalytics%2BImplementation%0A%20%20%20%20%20%20%20%20*%2F_getPageAnalyticsImplementation%3Afunction%20_getPageAnalyticsImplementation()%7Breturn'UW%3A'%2Bga_data.server.clientVersion%2B'%3A'%2Bga_data.site.uaid%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20create%20a%20UUID%0A%20%20%20%20%20%20%20%20*%20Borrowed%20from%20https%3A%2F%2Fgithub.com%2FGannettDigital%2Fgupui%2Fblob%2Frelease%2Fgupui%2Fcore%2Fjs%2Fmath_uuid.js%0A%20%20%20%20%20%20%20%20*%2F_generateUuid%3Afunction%20_generateUuid(len%2Cradix)%7Bvar%20chars%3D'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')%2Cuuid%3D%5B%5D%2Ci%3Bradix%3Dradix%7C%7Cchars.length%3Bif(len)%7B%2F%2F%20Compact%20form%0Afor(i%3D0%3Bi%3Clen%3Bi%2B%2B)%7Buuid%5Bi%5D%3Dchars%5B0%7CMath.random()*radix%5D%3B%7D%7Delse%7B%2F%2F%20rfc4122%2C%20version%204%20form%0Avar%20r%3B%2F%2F%20rfc4122%20requires%20these%20characters%0Auuid%5B8%5D%3Duuid%5B13%5D%3Duuid%5B18%5D%3Duuid%5B23%5D%3D'-'%3Buuid%5B14%5D%3D'4'%3B%2F%2F%20Fill%20in%20random%20data.%20%20At%20i%3D%3D19%20set%20the%20high%20bits%20of%20clock%20sequence%20as%0A%2F%2F%20per%20rfc4122%2C%20sec.%204.1.5%0Afor(i%3D0%3Bi%3C36%3Bi%2B%2B)%7Bif(!uuid%5Bi%5D)%7Br%3D0%7CMath.random()*16%3Buuid%5Bi%5D%3Dchars%5Bi%3D%3D19%3Fr%260x3%7C0x8%3Ar%5D%3B%7D%7D%7Dreturn%20uuid.join('')%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20GUP%20Dynamic%20paywall%0A%20%20%20%20%20%20%20%20*%2F_getPaywallSegment%3Afunction%20_getPaywallSegment()%7Bvar%20gupInsights%3D%7B%7D%3Btry%7BgupInsights%3DJSON.parse(window.localStorage.getItem('user_insights'))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7Dif(gupInsights)%7Breturn%20ga_data.utils.getNested(gupInsights%2C'cam-experience'%2C'id')%7C%7C''%3B%7Delse%7Breturn''%3B%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fanalytics-element-behavior.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fanalytics-element-behavior.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/analytics-element-behavior.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20siteColor%3Dwindow.ga_data.site.colors.siteColor%3Bif(siteColor!%3D%3Dundefined)%7Bdocument.documentElement.style.setProperty('--color-theme'%2CsiteColor)%3B%7D%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fthemes%2Funiversal.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fthemes%2Funiversal.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/themes/universal.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D%2F%2F%20Static%20%22singleton%22%20data%20stores%2C%20exist%20in%20a%20closed%20scope%20for%20all%20instances%20of%20util-analytics%0Avar%20_currentRouteState%3D%7B%7D%3Bvar%20_routeDataBlock%3Ddocument.getElementById('ga-data-route')%3Bif(_routeDataBlock)%7Btry%7B_currentRouteState%3DJSON.parse(_routeDataBlock.textContent)%3B%7Dcatch(e)%7B_currentRouteState%3Dwindow.ga_data%26%26window.ga_data.route%3Fwindow.ga_data.route%3A%7B%7D%3B%7D%7Delse%20if(window.ga_data%26%26window.ga_data.route)%7B_currentRouteState%3Dwindow.ga_data.route%3B%7Dvar%20_eventHistory%3D%5B%5D%3B%2F%2F%20Log%20of%20all%20fired%20events%0A%2F%2F%20Log%20of%20fired%20page%20views%20and%20route%20changes%0Avar%20_viewHistory%3D%5B%5D%3BPolymer(%7Bis%3A'util-analytics'%2CdelayedEventStorageKey%3A'util-analytics%3Aaction'%2Cready%3Afunction%20ready()%7Bthis._restoreDelayedEvent(_currentRouteState)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-event%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20action%20The%20event%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20data%20The%20event%20details%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatch%20an%20analytics%20event%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20action%20The%20event%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20data%20The%20event%20details%0A%20%20%20%20%20%20%20%20%20**%2FfireEvent%3Afunction%20fireEvent(action%2Cdata)%7Bvar%20delayTrack%3Darguments.length%3E2%26%26arguments%5B2%5D!%3D%3Dundefined%3Farguments%5B2%5D%3Afalse%3Bvar%20detail%3D%7Baction%3Aaction%2Cdata%3Adata%2Croute%3A_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2C%7B%7D)%7D%3Bif(delayTrack)%7B%2F%2F%20Serialize%20data%20to%20localstorage%0Athis._persistDelayedEvent(detail)%3B%7Delse%7B_eventHistory.push(detail)%3B%2F%2F%20Fire%20analytics%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-event'%2C%7Bdetail%3Adetail%7D))%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-page-view%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatches%20a%20route%20change%20without%20changing%20base%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20tempRoute%20diffs%20from%20the%20base%20route%20object%0A%20%20%20%20%20%20%20%20%20**%2FfirePageView%3Afunction%20firePageView(tempRoute)%7Bvar%20mergedRoute%3D_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2CtempRoute)%3Bthis._restoreDelayedEvent(mergedRoute)%3Bwindow.ga_data.route%3DmergedRoute%3B_viewHistory.push(%7Broute%3AmergedRoute%7D)%3B%2F%2F%20Fire%20page-view%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-page-view'%2C%7Bdetail%3A%7Broute%3AmergedRoute%7D%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-page-view%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatches%20a%20route%20change.%0A%20%20%20%20%20%20%20%20%20*%20New%20route%20becomes%20the%20base%20for%20future%20RouteChanges%20and%20PageViews.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20newRoute%20the%20new%20route%20object%0A%20%20%20%20%20%20%20%20%20**%2FfireRouteChange%3Afunction%20fireRouteChange(newRoute)%7Bvar%20baseRoute%3D_currentRouteState%3BnewRoute%3D_UtilAnalyticsMappers.cloneRoute(baseRoute%2CnewRoute)%3Bvar%20detail%3D%7Broute%3AnewRoute%7D%3Bthis._restoreDelayedEvent(newRoute)%3B_currentRouteState%3DnewRoute%3Bwindow.ga_data.route%3DnewRoute%3B_viewHistory.push(%7Broute%3AnewRoute%7D)%3B%2F%2F%20Fire%20page-view%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-page-view'%2C%7Bdetail%3Adetail%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20current%20route%20data%0A%20%20%20%20%20%20%20%20%20*%2FgetBaseRoute%3Afunction%20getBaseRoute()%7Breturn%20_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2C%7B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20history%20of%20events%20fired%20on%20this%20page%0A%20%20%20%20%20%20%20%20%20*%2FgetEventHistory%3Afunction%20getEventHistory()%7Breturn%20Array.prototype.concat(_eventHistory)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20history%20of%20page%20views%20and%20route%20changes%20fired%20on%20this%20page%0A%20%20%20%20%20%20%20%20%20*%2FgetPageViewHistory%3Afunction%20getPageViewHistory()%7Breturn%20Array.prototype.concat(_viewHistory)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Store%20an%20event%20for%20later%20bundling%20with%20next%20page%20view%0A%20%20%20%20%20%20%20%20%20*%2F_persistDelayedEvent%3Afunction%20_persistDelayedEvent(eventDetail)%7Bif(!window.localStorage)return%3Btry%7Bwindow.localStorage.setItem(this.delayedEventStorageKey%2CJSON.stringify(%7Baction%3AeventDetail.action%2Curl%3Awindow.location.href%7D))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Restore%20persisted%20event%20if%20needed%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Will%20clear%20out%20the%20data%20on%20error%20or%20success%0A%20%20%20%20%20%20%20%20%20*%2F_restoreDelayedEvent%3Afunction%20_restoreDelayedEvent(route)%7Bvar%20localStorage%3Dvoid%200%2CdelayedData%3Dvoid%200%3Btry%7BlocalStorage%3Dwindow.localStorage%3B%7Dcatch(e)%7B%2F%2F%20Local%20storage%20is%20either%20disabled%20or%20full.%0A%7DdelayedData%3DlocalStorage%3Fwindow.localStorage.getItem(this.delayedEventStorageKey)%3Afalse%3Bif(delayedData)%7Btry%7Bvar%20detail%3DJSON.parse(delayedData)%3Broute.action%3Ddetail.action%3Broute.actionUrl%3Ddetail.url%3B%7Dfinally%7Bwindow.localStorage.removeItem(this.delayedEventStorageKey)%3B%7D%7D%7D%7D)%3B%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Internal%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0Avar%20_UtilAnalyticsMappers%3Dfunction()%7Bfunction%20_UtilAnalyticsMappers()%7B_classCallCheck(this%2C_UtilAnalyticsMappers)%3B%7D_createClass(_UtilAnalyticsMappers%2Cnull%2C%5B%7Bkey%3A'cloneRoute'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20copies%20the%20route%20object%20into%20a%20new%20object%2C%20merging%20in%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20route%20The%20route%20object%20to%20copy%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20object%20to%20merge%20into%20the%20route%20object%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%20A%20copy%20of%20the%20route%20with%20the%20overrides%20merged%20in%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20cloneRoute(route%2Coverrides)%7Breturn%20this._cloneObject(route%2Coverrides%2C%5B%2F%2F%20http%3A%2F%2Fschema.org%2FCreativeWork%20fields%0A'creativeWork'%2C'url'%2C'name'%2C'datePublished'%2C'headline'%2C'sourceOrganization'%2C'authors'%2C%7Bname%3A'author'%2Ccb%3A_UtilAnalyticsMappers._cloneAuthorArray%7D%2C%7Bname%3A'keywords'%2Ccb%3A_UtilAnalyticsMappers._cloneArray%7D%2C%2F%2F%20Custom%20fields%0A'action'%2C'actionUrl'%2C'contentId'%2C'basePageType'%2C'cst'%2C'displayType'%2C'keywords'%2C'noAdvertising'%2C'sectionName'%2C'seoKeywords'%2C'series'%2C'sponsoredName'%2C'sponsorStory'%2C'sponsoredSeries'%2C'subsection'%2C'ssts'%2C'taxonomyKeywords'%2C'topic'%2C'useCanonical'%2C%7Bname%3A'primaryTag'%2Ccb%3A_UtilAnalyticsMappers._clonePrimaryTag%7D%2C'short_url'%2C'mobile_url'%2C'contentType'%2C%2F%2F%20Video%20specific%20fields%0A'includesVideo'%2C%2F%2F%20Gallery%20specific%20fields%0A'galleryName'%2C'galleryIndex'%2C'galleryTotal'%2C%2F%2F%20Ads%20specific%20fields%0A'simpleTarget'%2C'simpleExclusion'%2C%2F%2F%20Pay-wall%20%2F%20metering%20fields%0A'cam'%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20new%20primary%20tag%20object%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%7Bid%3A%20string%2C%20name%3A%20string%7D%7D%20ptag0%20The%20original%20primary%20tag%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%7Bid%3A%20string%2C%20name%3A%20string%7D%7D%20ptag1%20The%20new%20primary%20tag%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_clonePrimaryTag'%2Cvalue%3Afunction%20_clonePrimaryTag(pt1%2Cpt2)%7Bvar%20pt%3D_UtilAnalyticsMappers._arrayFind(%5Bpt2%2Cpt1%5D%2Cfunction(x)%7Breturn!!x%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object'%3B%7D)%3Bif(pt)%7Breturn%20_UtilAnalyticsMappers._cloneObject(pt%2C%7B%7D%2C%5B'id'%2C'name'%5D)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneAuthorArray'%2Cvalue%3Afunction%20_cloneAuthorArray(a1%2Ca2)%7Bvar%20target%3D_UtilAnalyticsMappers._arrayFind(%5Ba2%2Ca1%5D%2CArray.isArray)%3Bif(target)%7Breturn%20target.map(_UtilAnalyticsMappers._cloneAuthor)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneAuthor'%2Cvalue%3Afunction%20_cloneAuthor(x)%7Bif(!!x%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object')%7Breturn%20_UtilAnalyticsMappers._cloneObject(x%2C%7B%7D%2C%5B'name'%5D)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneArray'%2Cvalue%3Afunction%20_cloneArray(array1%2Carray2)%7Bvar%20target%3D_UtilAnalyticsMappers._arrayFind(%5Barray1%2Carray2%5D%2CArray.isArray)%3Bif(target)%7Breturn%20target.slice(0)%3B%2F%2F%20clone%20the%20array%0A%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Clones%20an%20object%20given%20a%20list%20of%20fields%20and%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20Array%3C%7B%20string%20%7C%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%3E%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_cloneObject'%2Cvalue%3Afunction%20_cloneObject(obj%2Coverrides%2Cfields)%7Breturn%20fields.reduce(function(acc%2Cfield)%7Bvar%20_UtilAnalyticsMappers2%3D_UtilAnalyticsMappers._mapField(obj%2Coverrides%2Cfield)%2Cval%3D_UtilAnalyticsMappers2.val%2Cfield2%3D_UtilAnalyticsMappers2.field%3Breturn%20_UtilAnalyticsMappers._maybeUpdate(acc%2Cfield2%2Cval)%3B%7D%2C%7B%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Maps%20a%20complex%20field%20to%20its%20field%2C%20val%20pair%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%20field%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B%20%7B%20field%3A%20string%2C%20val%3A%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapComplexField'%2Cvalue%3Afunction%20_mapComplexField(obj%2Coverrides%2Cfield)%7Breturn%7Bfield%3Afield.name%2Cval%3Afield.cb(obj%5Bfield.name%5D%2Coverrides%5Bfield.name%5D)%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Maps%20a%20simple%20field%20to%20its%20field%2C%20val%20pair%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20field%20The%20field%20to%20copy%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B%20%7B%20field%3A%20string%2C%20val%3A%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapSimpleField'%2Cvalue%3Afunction%20_mapSimpleField(obj%2Coverrides%2Cfield)%7Breturn%7Bfield%3Afield%2Cval%3Aoverrides%5Bfield%5D!%3D%3Dundefined%3Foverrides%5Bfield%5D%3Aobj%5Bfield%5D%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20field%20is%20a%20complex%20field%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_isComplexField'%2Cvalue%3Afunction%20_isComplexField(field)%7Breturn%20field.name!%3D%3Dundefined%26%26field.cb!%3D%3Dundefined%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Clones%20an%20object%20given%20a%20list%20of%20fields%20and%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20string%20%7C%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapField'%2Cvalue%3Afunction%20_mapField(obj%2Coverrides%2Cfield)%7Breturn%20_UtilAnalyticsMappers._isComplexField(field)%3F_UtilAnalyticsMappers._mapComplexField(obj%2Coverrides%2Cfield)%3A_UtilAnalyticsMappers._mapSimpleField(obj%2Coverrides%2Cfield)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20an%20objects%20field%20if%20the%20value%20is%20defined%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20field%20The%20field%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20*%20%7C%20undefined%20%7D%20val%20The%20possibly%20undefined%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%20The%20possibly%20updated%20object%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_maybeUpdate'%2Cvalue%3Afunction%20_maybeUpdate(obj%2Cfield%2Cval)%7Bif(val!%3D%3Dundefined)%7Bobj%5Bfield%5D%3Dval%3B%7Dreturn%20obj%3B%7D%7D%2C%7Bkey%3A'_arrayFind'%2Cvalue%3Afunction%20_arrayFind(a%2Ccb)%7Bif(Array.prototype.find)%7Breturn%20a.find(cb)%3B%7Delse%7Bfor(var%20i%3D0%3Bi%3Ca.length%3Bi%2B%2B)%7Bvar%20x%3Da%5Bi%5D%3Bif(cb(x))%7Breturn%20x%3B%7D%7D%7D%7D%7D%5D)%3Breturn%20_UtilAnalyticsMappers%3B%7D()%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-analytics%2Futil-analytics.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-analytics%2Futil-analytics.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/util/util-analytics/util-analytics.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3BPolymer(%7Bis%3A'nav-manager-legacy'%2CdesignId%3A'N13'%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20route%20aka%20ssts%20object%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2Froute%3A%7Btype%3AObject%7D%2Csite%3A%7Btype%3AObject%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20navigation%20item%20key%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FnavKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20The%20sub%20nav%20key%20to%20get%20child%20assets%20for%20subnav%20module%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2FsubNavKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20The%20third%20level%20sub%20nav%20key%20to%20get%20child%20assets%20for%20subnav%20module%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2FtertiaryKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20tag%20list%20for%20the%20current%20route%0A%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FrouteTagList%3A%7Btype%3AArray%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20un-messed%20with%20tag%20list%20for%20the%20current%20nav-key%0A%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FkeyTagList%3A%7Btype%3AArray%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20raw%20schema%20data%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FschemaData%3A%7Btype%3AObject%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2CapiKey%3A%7Btype%3AString%2Cvalue%3A'f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh'%7D%7D%2Cobservers%3A%5B'_handleSchemaRequest(apiKey%2C%20site.navigation.id%2C%20navKey)'%2C'_updateKeyTagList(schemaData)'%2C'_updateRouteTagList(route%2C%20schemaData)'%5D%2Cready%3Afunction%20ready()%7Bif(this.route%3D%3D%3Dundefined)%7Bthis.set('route'%2C(window.ga_data%7C%7C%7B%7D).route)%3B%7Dif(this.site%3D%3D%3Dundefined)%7Bthis.set('site'%2C(window.ga_data%7C%7C%7B%7D).site)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20Gets%20top%20level%20navigation%20tag%20items%20for%20the%20current%20site%20if%20nav%20data%20has%20loaded%0A%20%20%20%20%20%20%20%20%20%20*%2FgetCurrentSiteTags%3Afunction%20getCurrentSiteTags()%7Bif(this.schemaData%26%26this.schemaData.children)%7Breturn%20navManagerMappers.currentSiteTags(this.schemaData)%3B%7Delse%7Breturn%5B%5D%3B%7D%7D%2C%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Private%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A_schemaUrl%3Afunction%20_schemaUrl(apiKey%2Cschema%2CnavKey)%7Breturn%20ga_data.site.hosts.gannettCDNAPI%2B'%2Fargon%2Fnavigation%2F'%2Bescape(schema)%2B'%2F'%2Bescape(navKey)%2B'%2F'%3B%7D%2C_schemaParams%3Afunction%20_schemaParams(apiKey%2Csite%2CnavKey)%7Breturn%7B'apiKey'%3AapiKey%7D%3B%7D%2C_handleSchemaRequest%3Afunction%20_handleSchemaRequest(apiKey%2Cschema%2CnavKey)%7Bif(!!apiKey%26%26!!schema%26%26!!navKey)%7Bthis.%24.schemaAjax.set('url'%2Cthis._schemaUrl(apiKey%2Cschema%2CnavKey))%3Bthis.%24.schemaAjax.set('params'%2Cthis._schemaParams(apiKey%2Cschema%2CnavKey))%3B%7D%7D%2C_handleSchemaResponse%3Afunction%20_handleSchemaResponse(evt)%7Bthis._setSchemaData(evt.detail.response)%3B%7D%2C_updateKeyTagList%3Afunction%20_updateKeyTagList(schema)%7Bif(schema)%7Bthis._setKeyTagList(navManagerMappers.schemaToKeyTagList(schema))%3B%7D%7D%2C_updateRouteTagList%3Afunction%20_updateRouteTagList(route%2Cschema)%7Bif(!!route%26%26!!schema)%7Bthis._setRouteTagList(navManagerMappers.schemaToRouteTagList(schema%2Croute))%3B%7D%7D%7D)%3Bvar%20navManagerMappers%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20schemaToRouteTagList(schema%2C%20route%2C%20isContent)%0A%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20*%20schema%20-%20The%20schema%20returned%20from%20argon%0A%20%20%20%20%20%20%20%20%20%20*%20route%20-%20The%20ga_data.route%20value%0A%20%20%20%20%20%20%20%20%20%20*%20isContent%20-%20a%20bool%20flag%20returned%20if%20the%20current%20page%20is%20content%20within%20the%20route%0A%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20**%2FnavItemToTag%3Afunction%20navItemToTag(x)%7Breturn%7Bkey%3Ax.key%2Curl%3Awindow.ga_data.route.cobrand%26%26!new%20RegExp('%5E(%3F%3A%5Ba-z%5D%2B%3A)%3F%2F%2F'%2C'i').test(x.url)%3F''%2Bwindow.ga_data.site.publicationURL%2Bx.url.substring(1)%3Ax.url%2Cname%3Ax.name%2Chidden%3Ax.visibility%3D%3D%3D'hidden'%3Ftrue%3Afalse%2Cchildren%3Ax.children%7D%3B%7D%2CcurrentSiteTags%3Afunction%20currentSiteTags(schema)%7Bvar%20children%3DnavManagerMappers._children(schema)%3Bvar%20injectedHome%3D%2F%2F%20If%20the%20schema%20does%20not%20have%20a%20home%20entry%0A!navManagerMappers._hasHome(schema)%3F%2F%2F%20Define%20the%20injected%20home%20entry%0A%7B'key'%3A'home'%2C'url'%3A'%2F'%2C'name'%3A'Home'%7D%3A%2F%2F%20Otherwise%20use%20null%0Anull%3Breturn%5B%5D.concat(navManagerMappers.maybeToArray(injectedHome)%2Cchildren).map(navManagerMappers.navItemToTag)%3B%7D%2C_ensureObj%3Afunction%20_ensureObj(x)%7Bif(!Array.isArray(x)%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object'%26%26x!%3D%3Dnull)%7Breturn%20x%3B%7Delse%7Breturn%7B%7D%3B%7D%7D%2CschemaToKeyTagList%3Afunction%20schemaToKeyTagList(schema)%7Breturn%20navManagerMappers._children(schema).map(navManagerMappers.navItemToTag)%3B%7D%2CschemaToRouteTagList%3Afunction%20schemaToRouteTagList(schema%2Croute)%7Bvar%20taglist%3D%5B%5D%3Broute%3DnavManagerMappers._ensureObj(route)%3Bif(route.sectionName%3D%3D%3D'home'%7C%7C!route.sectionName)%7Btaglist%3Dthis._getTopLevel(schema)%3B%7Delse%7Bvar%20isContent%3Droute.contentType!%3D'section'%3Bif(isContent)%7Btaglist%3Dthis._getContentTagList(schema%2Croute)%3B%7Delse%7Btaglist%3Dthis._getFrontTagList(schema)%3B%7D%7Dif(taglist.length%3C2)%7Btaglist%3Dthis._getTopLevel(schema)%3B%7Dreturn%20taglist%3B%7D%2C_checkForNavDupe%3Afunction%20_checkForNavDupe(baseTag%2CtagsToJoin)%7Bif(tagsToJoin%26%26tagsToJoin.length)%7Bvar%20key%3DbaseTag.key%2Cname%3DbaseTag.name%2Curl%3DbaseTag.url%3Bvar%20firstTag%3DtagsToJoin%5B0%5D%3Bif(!!key%26%26key%3D%3D%3DfirstTag.key%26%26!!name%26%26name%3D%3D%3DfirstTag.name%26%26!!url%26%26url.replace(%2F%5C%2F%2Fg%2C'')%3D%3D%3DfirstTag.url.replace(%2F%5C%2F%2Fg%2C''))%7BtagsToJoin.shift()%3B%7D%7Dreturn%20tagsToJoin%3B%7D%2C_getContentTagList%3Afunction%20_getContentTagList(schema%2Croute)%7Bvar%20home%3DnavManagerMappers._getHome(schema)%3Bvar%20level1%3DnavManagerMappers._level1(schema%2Croute.sectionName%2Croute.subsection)%3Bvar%20level2%3DnavManagerMappers._level2(level1%2Croute.subsection)%3Bvar%20level3Sisters%3DnavManagerMappers._sisters(level2%2Croute.topic)%3Bthis._checkForNavDupe(level2%2Clevel3Sisters)%3Bvar%20level2Sisters%3DnavManagerMappers._level2Sisters(level1%2Clevel2%2Croute.subsection)%3Blevel1%3DnavManagerMappers._filterLevel1(level1%2Croute.subsection)%3Blevel2%3DnavManagerMappers._filterLevel2(level2%2Croute.contentType!%3D'section')%3Breturn%5B%5D.concat(%5Bhome%5D%2CnavManagerMappers.maybeToArray(level2)%2Clevel3Sisters%2Clevel2Sisters%2CnavManagerMappers.maybeToArray(level1)).map(navManagerMappers.navItemToTag)%3B%7D%2C_getFrontTagList%3Afunction%20_getFrontTagList(schema)%7Bvar%20home%3DnavManagerMappers._getHome(schema)%3Bvar%20root%3DnavManagerMappers._findNodeByURL(schema)%3Bvar%20taglist%3D%5Bhome%5D%3Bif(root.node)%7Bif(root.node.children%26%26root.node.children.length)%7Btaglist%3D%5B%5D.concat(%5Bhome%5D%2CnavManagerMappers._sisters(root.node%2Croot.node.key))%3B%7Delse%20if(root.parent)%7Bvar%20siblings%3DnavManagerMappers._sisters(root.parent%2Croot.parent.key)%3Btaglist%3Dsiblings.filter(function(x)%7Breturn%20x.key!%3D%3Droot.node.key%3B%7D)%3Bif(!navManagerMappers._hasHome(schema))%7Btaglist%3D%5B%5D.concat(%5Bhome%5D%2Ctaglist)%3B%7D%7D%7Dreturn%20taglist%3B%7D%2C_getTopLevel%3Afunction%20_getTopLevel(schema)%7Breturn%20navManagerMappers._children(schema).map(navManagerMappers.navItemToTag)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20Returns%20an%20empty%20list%20is%20null%2C%20otherwise%20returns%20%5Bmaybe%5D%0A%20%20%20%20%20%20%20%20%20%20**%2FmaybeToArray%3Afunction%20maybeToArray(maybe)%7Bif(maybe%3D%3D%3Dnull%7C%7Cmaybe%3D%3D%3Dundefined)return%5B%5D%3Breturn%5Bmaybe%5D%3B%7D%2C_getHome%3Afunction%20_getHome(schema)%7Bvar%20home%3DnavManagerMappers._getSection(schema%2C'home')%3Bif(!home)%7Breturn%7B'key'%3A'home'%2C'url'%3A'%2F'%2C'name'%3A'Home'%7D%3B%7Delse%7Breturn%20home%3B%7D%7D%2C_hasHome%3Afunction%20_hasHome(schema)%7Breturn!!navManagerMappers._getSection(schema%2C'home')%3B%7D%2C_children%3Afunction%20_children(schema)%7Bif(navManagerMappers._hasChildren(schema))%7Breturn%20schema.children%3B%7Delse%7Breturn%5B%5D%3B%7D%7D%2C_level1%3Afunction%20_level1(schema%2CsectionName%2Csubsection)%7Breturn%20navManagerMappers._getSection(schema%2CsectionName)%3B%7D%2C_slugify%3Afunction%20_slugify(text)%7Breturn%20text.toString().toLowerCase().replace(%2F%5Cs%2B%2Fg%2C'-')%2F%2F%20Replace%20spaces%20with%20-%0A.replace(%2F%5B%5E%5Cw%5C-%5D%2B%2Fg%2C'')%2F%2F%20Remove%20all%20non-word%20chars%0A.replace(%2F%5C-%5C-%2B%2Fg%2C'-')%2F%2F%20Replace%20multiple%20-%20with%20single%20-%0A.replace(%2F%5E-%2B%2F%2C'')%2F%2F%20Trim%20-%20from%20start%20of%20text%0A.replace(%2F-%2B%24%2F%2C'')%3B%2F%2F%20Trim%20-%20from%20end%20of%20text%0A%7D%2C_filterLevel1%3Afunction%20_filterLevel1(level1%2Csubsection)%7Bif(!subsection)%7B%2F%2F%20If%20subsection%20is%20not%20given%2C%20don't%20display%20level1%0Areturn%20null%3B%7Delse%7B%2F%2F%20otherwise%20return%20level1%0Areturn%20level1%3B%7D%7D%2C_filterLevel2%3Afunction%20_filterLevel2(level2%2CisContent)%7Bif(!isContent)%7B%2F%2F%20If%20we're%20not%20on%20a%20content%20page%2C%20suppress%20the%20level2%0Areturn%20null%3B%7Delse%7B%2F%2F%20otherwise%20return%20level1%0Areturn%20level2%3B%7D%7D%2C_level2%3Afunction%20_level2(level1%2Csubsection)%7Breturn%20navManagerMappers._getSection(level1%2Csubsection)%3B%7D%2C_level2Sisters%3Afunction%20_level2Sisters(level1%2Clevel2%2Csubsection)%7B%2F%2F%20If%20there%20is%20a%20level3%2C%20supress%20the%20level2%20sisters%0Aif(navManagerMappers._hasChildren(level2))%7Breturn%5B%5D%3B%7Delse%7Breturn%20navManagerMappers._sisters(level1%2Csubsection)%3B%7D%7D%2C_sisters%3Afunction%20_sisters(parent%2Ckey)%7Bvar%20sisters%3D%5B%5D%3Bif(navManagerMappers._hasChildren(parent))%7Breturn%20parent.children.filter(function(x)%7Breturn%20x.key!%3Dkey%3B%7D)%3B%7Dreturn%20sisters%3B%7D%2C_hasChildren%3Afunction%20_hasChildren(item)%7Breturn%20item%26%26item.children%26%26item.children.length%3B%7D%2C_getSection%3Afunction%20_getSection(a%2Ckey)%7Bif(key%26%26navManagerMappers._hasChildren(a))%7Bfor(var%20i%3D0%3Bi%3Ca.children.length%3Bi%2B%2B)%7Bvar%20x%3Da.children%5Bi%5D%3Bif(x.key%3D%3Dkey)return%20x%3B%7D%7Dreturn%20null%3B%7D%2C%2F%2F%20used%20to%20hold%20the%20node%20and%20the%20level%20at%20which%20it%20was%20found.%0A%2F%2FfoundNodes%3A%20%5B%5D%2C%0A_findNodeByURL%3Afunction%20_findNodeByURL(schema)%7Bvar%20foundNodes%3Dthis._getNodesByURL(schema%2Cwindow.location.pathname%2C0%2C%7B%7D%2C%5B%5D)%3Bvar%20topNode%3D%7B'node'%3A%7B%7D%7D%3Bif(foundNodes.length)%7B%2F%2F%20arbitrary%20large%20number%0Avar%20lowest%3D1000%3BfoundNodes.forEach(function(node)%7Bif(node.level%3Clowest)%7Blowest%3Dnode.level%3BtopNode%3Dnode%3B%7D%7D)%3B%7Dreturn%20topNode%3B%7D%2C_getNodesByURL%3Afunction%20_getNodesByURL(root%2Cpath%2Clevel%2Cparent%2Carr)%7Bif(root.url%3D%3D%3Dpath)%7Barr.push(%7B'node'%3Aroot%2C'level'%3Alevel%2C'parent'%3Aparent%7D)%3B%7Dif(root.children)%7Bfor(var%20i%3D0%3Bi%3Croot.children.length%3Bi%2B%2B)%7Bthis._getNodesByURL(root.children%5Bi%5D%2Cpath%2Clevel%2B1%2Croot%2Carr)%3B%7D%7Dreturn%20arr%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-manager%2Fnav-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-manager%2Fnav-manager.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/nav/nav-manager/nav-manager.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_slicedToArray%3Dfunction()%7Bfunction%20sliceIterator(arr%2Ci)%7Bvar%20_arr%3D%5B%5D%3Bvar%20_n%3Dtrue%3Bvar%20_d%3Dfalse%3Bvar%20_e%3Dundefined%3Btry%7Bfor(var%20_i%3Darr%5BSymbol.iterator%5D()%2C_s%3B!(_n%3D(_s%3D_i.next()).done)%3B_n%3Dtrue)%7B_arr.push(_s.value)%3Bif(i%26%26_arr.length%3D%3D%3Di)break%3B%7D%7Dcatch(err)%7B_d%3Dtrue%3B_e%3Derr%3B%7Dfinally%7Btry%7Bif(!_n%26%26_i%5B%22return%22%5D)_i%5B%22return%22%5D()%3B%7Dfinally%7Bif(_d)throw%20_e%3B%7D%7Dreturn%20_arr%3B%7Dreturn%20function(arr%2Ci)%7Bif(Array.isArray(arr))%7Breturn%20arr%3B%7Delse%20if(Symbol.iterator%20in%20Object(arr))%7Breturn%20sliceIterator(arr%2Ci)%3B%7Delse%7Bthrow%20new%20TypeError(%22Invalid%20attempt%20to%20destructure%20non-iterable%20instance%22)%3B%7D%7D%3B%7D()%3BPolymer(%7Bis%3A'promo-story-thumb-small'%2CdesignId%3A'P1'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.PromoItem%2Cwindow.ga_data.behaviors.ImageResize%5D%2Cproperties%3A%7B%2F**%20Headline%20*%2Ftitle%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*Deprecated*%20Please%20use%20%60thumbnailSet%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Full%2C%20raw%20URI%20of%20thumbnail%20image%20(will%20be%20resized)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FthumbnailUrl%3A%7Btype%3AString%2Cobserver%3A'_thumbnailChange'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Works%20like%20%60srcset%60%20on%20an%20image%20tag%2C%20this%20is%20a%20comma%20separated%20list%20of%20image%20crops%20associated%20with%20this%20asset.%20Crops%20should%20follow%20the%20format%20of%20%60w%3Ah%20url%60%2C%20so%20%6016%3A9%20https%3A%2F%2F...%2Ffile.jpg%2C%204%3A3%20...%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Currently%20supports%20%601%3A1%60%20and%20%6016%3A9%60%20crops%2C%20others%20will%20be%20ignored.%20Insufficent%20crops%20will%20result%20in%20poorly%20cropped%20images%20at%20various%20screen%20sizes.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FthumbnailSet%3A%7Btype%3AString%2Cobserver%3A'_thumbnailSetChange'%7D%2C%2F**%20Where%20this%20unit%20should%20link%20to%20expected%20to%20be%20a%20URI%20*%2Furl%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20should%20be%20used%20to%20put%20in%20timestamp%20using%20story-timestamp%20*%2FdatePublished%3A%7Btype%3AString%2Cobserver%3A'_dateChanged'%2Cvalue%3A''%7D%2C%2F*%20will%20override%20datePublished%20if%20available%20*%2FdateUpdated%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20the%20most%20granular%20ssts%20or%20other%20*%2Flabel%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20type%20of%20asset%20text%2C%20gallery%20or%20video%20*%2Ftype%3A%7Btype%3AString%7D%2C%2F*%20will%20only%20be%20provided%20for%20type%20video%20*%2Flength%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20allows%20to%20choose%20what%20to%20show%20*%2Finfo%3A%7Btype%3AString%2Ccomputed%3A'_getInfo(type%2C%20label%2C%20length)'%7D%2CadServed%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Cbranded%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cobserver%3A'_brandedChanged'%7D%2CbrandLanguage%3A%7Btype%3AString%2Cvalue%3A'Story%20From'%7D%2Csponsored%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cobserver%3A'_sponsoredChanged'%7D%2Cadvertisement%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cobserver%3A'_advertisementChange'%7D%2CbrandName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CbrandLogo%3A%7Btype%3AString%2Cvalue%3A''%7D%2Cclass%3A%7Btype%3AString%2Cobserver%3A'_classChanged'%7D%2CpremiumContent%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%2CPROMO_STORY_THUMB_SMALL_QUALITY%3A30%2Cready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.url%3Dthis._preserveLocalURL(this.url)%3Bthis.%24.textWrapper.classList.toggle('external-title'%2Cthis._checkIsUrlExternal(this.url))%3Bthis._dateChanged()%3B%2F%2F%20video%20doesn't%20currently%20have%20a%20thumbnailSet%0Aif(this.type!%3D%3D'video'%26%26!this.thumbnailUrl%26%26!(this.thumbnailSet%26%26this.thumbnailSet.length))this._hideThumbnail()%3Bvar%20mediaNarrow%3Dwindow.matchMedia('(min-width%3A%20480px)')%3Bvar%20narrowChangeHandler%3Dfunction%20narrowChangeHandler(mql)%7B_this._sizeClassChangeHandler(mql%26%26mql.matches)%3B%7D%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7BmediaNarrow.addListener(narrowChangeHandler)%3BnarrowChangeHandler(mediaNarrow)%3B%7D)%3B%7D%2Cattached%3Afunction%20attached()%7Bif(!this.dataset.moduleLoadEventFired)%7Bthis._sendLoadEvent()%3B%7D%7D%2C_classChanged%3Afunction%20_classChanged()%7Bthis._sizeClassChangeHandler(window.innerWidth%3E480)%3B%7D%2C_sizeClassChangeHandler%3Afunction%20_sizeClassChangeHandler(isAtLeastMedium)%7Bif(isAtLeastMedium)%7Bif(this.classList.contains('colwidth-narrow'))%7Bthis.%24.mediaBadge.action%3D''%3B%2F%2F%20Don't%20use%2016%3A9%20source%20when%20in%20narrow%20override%0Athis.%24.lgThumbSrc.media%3D'(min-width%3A%201000em)'%3Bthis.%24.mdThumbSrc.media%3D'(min-width%3A%201000em)'%3B%7Delse%7Bthis.%24.mediaBadge.action%3Dthis.info%3Bthis.%24.lgThumbSrc.media%3D'(min-width%3A%201440px)'%3Bthis.%24.mdThumbSrc.media%3D'(min-width%3A%20480px)'%3B%7D%7Delse%7Bthis.%24.mediaBadge.action%3D''%3Bthis.%24.lgThumbSrc.media%3D'(min-width%3A%201440px)'%3Bthis.%24.mdThumbSrc.media%3D'(min-width%3A%20480px)'%3B%7D%7D%2C_getInfo%3Afunction%20_getInfo(type%2Clabel%2Clength)%7Bif((type%3D%3D%3D'text'%7C%7Ctype%3D%3D%3D'')%26%26label!%3D%3D'')%7Bthis.%24.mediaBadge.hidden%3Dtrue%3Breturn%20label%3B%7Delse%20if(type%3D%3D%3D'video'%26%26length!%3D%3D'')%7Bthis.%24.meta.classList.add('media')%3Breturn'Play%20%20%7C%20%20'%2Blength%3B%7Delse%20if(type%3D%3D%3D'gallery')%7Bthis.%24.meta.classList.add('media')%3Breturn'View'%3B%7Dreturn''%3B%7D%2C_brandedChanged%3Afunction%20_brandedChanged(newValue)%7Bthis.%24.textWrapper.classList.toggle('branded'%2CnewValue)%3B%7D%2C_sponsoredChanged%3Afunction%20_sponsoredChanged(newValue)%7Bthis.%24.textWrapper.classList.toggle('sponsored'%2CnewValue)%3Bthis._setBranding()%3B%7D%2C_setBranding%3Afunction%20_setBranding()%7Bvar%20sponsor%3Dthis.brandName%3Bif(this.brandLogo)%7Bsponsor%3D'%3Cimg%20src%3D%22'%2Bthis.brandLogo%2B'%22%20alt%3D%22'%2Bthis.brandName%2B'%22%20class%3D%22sponsored-logo%22%2F%3E'%3B%7Dthis.%24.sponsored.innerHTML%3Dthis.brandLanguage%2B'%20'%2Bsponsor%3B%7D%2C_dateChanged%3Afunction%20_dateChanged()%7Bif(this.datePublished!%3D%3D''%26%26this.%24.storyTimestamp)%7Bif(this.dateUpdated)this.%24.storyTimestamp.setAttribute('update-date'%2Cthis.dateUpdated)%3Bif(this.datePublished)this.%24.storyTimestamp.setAttribute('publish-date'%2Cthis.datePublished)%3B%7D%7D%2C%2F%2F%20because%20safari%20can't%20handle%20_getThumbnail%20this%20completely%20makes%20the%20string%20for%20srcset%20in%20picture%0A_getResponsiveThumbnail%3Afunction%20_getResponsiveThumbnail(imageUrl%2CinitialWidth%2CinitialHeight)%7Bif(imageUrl%26%26imageUrl!%3D%3D'http%3A%2F%2Fwww.gannett-cdn.com')%7Bvar%20additionalParam%3Dthis.adServed%3F'external'%3A'quality%3D'%2Bthis.PROMO_STORY_THUMB_SMALL_QUALITY%3Bif(initialWidth%3D%3D%3DinitialHeight%26%26imageUrl.indexOf('crop%3D')%3D%3D%3D-1)%7BadditionalParam%2B%3D'%26crop%3D1%3A1'%3B%7Dreturn%20this._getThumbnail(imageUrl%2CinitialWidth%2CinitialHeight%2CadditionalParam)%2B'%201x%2C%20'%2Bthis._getThumbnail(imageUrl%2C(parseInt(initialWidth)*2).toString()%2C(parseInt(initialHeight)*2).toString()%2CadditionalParam)%2B'%202x'%3B%7Dreturn''%3B%7D%2C_getNormalThumbnail%3Afunction%20_getNormalThumbnail(imageUrl%2Cwidth%2Cheight)%7Bvar%20additionalParam%3Dthis.adServed%3F'external'%3A'quality%3D'%2Bthis.PROMO_STORY_THUMB_SMALL_QUALITY%3Bif(width%3D%3D%3Dheight%26%26imageUrl.indexOf('crop%3D')%3D%3D%3D-1)%7BadditionalParam%2B%3D'%26crop%3D1%3A1'%3B%7Dreturn%20this._getThumbnail(imageUrl%2Cwidth%2Cheight%2CadditionalParam)%3B%7D%2C_setThumbnailSources%3Afunction%20_setThumbnailSources(path1x1%2Cpath16x9)%7Bthis.%24.photoWrapper.hidden%3Dfalse%3Bthis.%24.textWrapper.classList.remove('no-image')%3Bthis.%24.container.classList.remove('no-image')%3Bthis.%24.noImageBadge.hidden%3Dtrue%3Bthis.%24.lgThumbSrc.srcset%3Dthis._getResponsiveThumbnail(path16x9%2C448%2C252)%3Bthis.%24.mdThumbSrc.srcset%3Dthis._getResponsiveThumbnail(path16x9%2C256%2C144)%3Bthis.%24.smThumbSrc.srcset%3Dthis._getResponsiveThumbnail(path1x1%2C135%2C135)%3Bthis.%24.defaultThumbImg.src%3Dthis._getNormalThumbnail(path1x1%2C135%2C135)%3B%7D%2C_hideThumbnail%3Afunction%20_hideThumbnail()%7Bthis.%24.textWrapper.classList.add('no-image')%3Bthis.%24.photoWrapper.hidden%3Dtrue%3Bif(this.type%3D%3D%3D'video')%7Bthis.%24.noImageBadge.hidden%3Dfalse%3B%7Delse%7Bthis.%24.container.classList.add('no-image')%3B%7D%7D%2C_thumbnailChange%3Afunction%20_thumbnailChange(thumbnail)%7Bif(thumbnail%26%26thumbnail!%3D%3D'http%3A%2F%2Fwww.gannett-cdn.com')%7Bthis._setThumbnailSources(thumbnail%2Cthumbnail)%3B%7D%7D%2C_advertisementChange%3Afunction%20_advertisementChange()%7Bif(this.advertisement)%7Bthis.%24.textWrapper.querySelector('.branded-text').innerHTML%3D'Advertisement'%3Bthis.%24.textWrapper.classList.toggle('branded'%2C'branded')%3B%7D%7D%2C_sendLoadEvent%3Afunction%20_sendLoadEvent()%7Bthis.dispatchEvent(new%20CustomEvent('promos-story-thumb-small-load'%2C%7Bcomposed%3Atrue%2Cbubbles%3Atrue%2Cdetail%3A%7Btime%3A1500%7D%7D))%3Bthis.dataset.moduleLoadEventFired%3Dtrue%3B%7D%2C_thumbnailSetChange%3Afunction%20_thumbnailSetChange(thumbSet)%7Bif(thumbSet%26%26thumbSet.length%3E0)%7Bvar%20crops%3DthumbSet.split('%2C%20')%3Bvar%20crop1x1%3Dvoid%200%2Ccrop16x9%3Dvoid%200%3Bcrops.forEach(function(c)%7Bvar%20parts%3Dc.split('%20')%3Bvar%20_parts%24filter%3Dparts.filter(function(x)%7Breturn!!x%3B%7D)%2C_parts%24filter2%3D_slicedToArray(_parts%24filter%2C2)%2Curl%3D_parts%24filter2%5B0%5D%2CaspectRatio%3D_parts%24filter2%5B1%5D%3B%2F%2F%20trim%20whitespace%0Aif(aspectRatio%3D%3D%3D'1%3A1')%7Bcrop1x1%3Durl%3B%7Delse%20if(aspectRatio%3D%3D%3D'16%3A9')%7Bcrop16x9%3Durl%3B%7D%7D)%3Bif(!crop16x9)%7Bcrop16x9%3Dcrop1x1%3B%7Delse%20if(!crop1x1)%7Bcrop1x1%3Dcrop16x9%3B%7Dif(crop16x9%26%26crop1x1)%7Bthis._setThumbnailSources(crop1x1%2Ccrop16x9)%3B%7D%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpromo%2Fpromo-story-thumb-small%2Fpromo-story-thumb-small.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpromo%2Fpromo-story-thumb-small%2Fpromo-story-thumb-small.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/promo/promo-story-thumb-small/promo-story-thumb-small.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7DPolymer(%7Bis%3A'alerts-atoms'%2Cproperties%3A%7Benabled%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cenvironment%3A%7Btype%3AString%2Cvalue%3A'prod'%7D%7D%2Cbehaviors%3A%5Bga_data.behaviors.GalliumElement%5D%2C%2F**%20Called%20once%20the%20GalliumElement%20and%20framework%20has%20finished%20initializing.%20*%2FframeworkReady%3Afunction%20frameworkReady()%7Bvar%20_this%3Dthis%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bvar%20isPianoEnabled%3Dga_data.utils.getNested(window%2C'ga_data'%2C'site'%2C'piano'%2C'enabled')%7C%7Cfalse%3Bif(_this.enabled%26%26!isPianoEnabled)%7BGallium.user.then(function(user)%7B_this._setupAtoms(user)%3B%7D).catch(function(e)%7B%2F%2F%20previously%20newrelic%0A_this._setupAtoms(Gallium.userLocalData)%3B%7D)%3B%7D%7D%2C%5B%5D)%3B%7D%2C%2F**%20Initializes%20the%20required%20data%20and%20requests%20ATOMS%20scripts%20**%2F_setupAtoms%3Afunction%20_setupAtoms(user)%7Bvar%20env%3Dthis.environment.toLowerCase()%3Bvar%20_ref%3Dthis._getUserFireflyState()%7C%7C%7B%7D%2CviewCount%3D_ref.viewCount%2CviewThreshold%3D_ref.viewThreshold%3Bwindow.gannett%3Dwindow.gannett%7C%7C%7B%7D%3Bwindow.gannett.atoms%3D%7Bsetup%3A%7Benvironment%3Aenv%2Cplatform%3A'UW'%2CsiteCode%3Aga_data.site.uaid%2CcamId%3AGallium.userCamExperienceId%2CcamEnabled%3Aga_data.route.cam.enabled%2CcamTriggered%3Aga_data.route.cam.enabled%26%26Gallium.isCAMMeterIncrement%2CprotectionState%3Aga_data.route.cam.contentProtectionState%2Croadblock%3Aga_data.route.cam.restrictContent%7C%7Cfalse%2Cuser%3Auser%2CviewCount%3AviewCount%2CviewThreshold%3AviewThreshold%2Cssts%3Aga_data.route.ssts%2Ctaxonomy%3Aga_data.route.keywords%2CpageType%3Aga_data.route.basePageType%2Cmobile%3Aga_data.intents.indexOf('device-type%3Amobile')%3E-1%2Canalytics%3Adocument.createElement('util-analytics')%2CcustomModal%3Afunction%20customModal(elem)%7Breturn%20new%20Modal(elem)%3B%7D%2Ccomment%3Anew%20Comment().open()%7D%7D%3Bga_data.utils.loadScript('https%3A%2F%2Fatoms.'%2Bga_data.site.baseName%2B'.com%2Fatoms-library%2F'%2Benv%2B'%2Fdist%2Fgannett-atoms-library.js'%2C'gannett-atoms-library')%3B%7D%7D)%3Bvar%20Modal%3Dfunction()%7Bfunction%20Modal(elem)%7B_classCallCheck(this%2CModal)%3Bthis.elem%3Delem%3B%7D_createClass(Modal%2C%5B%7Bkey%3A'open'%2Cvalue%3Afunction%20open()%7Bdocument.getElementById('ga-modal-slot').showElement(this.elem)%3B%7D%7D%2C%7Bkey%3A'close'%2Cvalue%3Afunction%20close()%7Bdocument.getElementById('ga-modal-slot').closeAll()%3B%7D%7D%5D)%3Breturn%20Modal%3B%7D()%3Bvar%20Comment%3Dfunction()%7Bfunction%20Comment()%7B_classCallCheck(this%2CComment)%3Bvar%20disabled%3D(ga_data.site.comments%7C%7C%7B%7D)%5B'disabled'%5D%3D%3D%3Dtrue%3Bvar%20isCoral%3D(ga_data.site.comments%7C%7C%7B%7D)%5B'coralTalkEnabled'%5D%3D%3D%3Dtrue%3Bif(!disabled)%7Bthis.elem%3Ddocument.querySelector(isCoral%3F'labs-comments-coral-talk'%3A'story-comments')%3Bthis.method%3DisCoral%3F'openCoralComments'%3A'createCommentsAndScroll'%3B%7D%7D_createClass(Comment%2C%5B%7Bkey%3A'open'%2Cvalue%3Afunction%20open()%7Bvar%20_this2%3Dthis%3Breturn%20this.elem%3Ffunction()%7Breturn%20_this2._importAndOpen()%3B%7D%3Anull%3B%7D%7D%2C%7Bkey%3A'_importAndOpen'%2Cvalue%3Afunction%20_importAndOpen()%7Bvar%20_this3%3Dthis%3Bif(!this.elem%5Bthis.method%5D)%7BGallium.importModuleForNode(this.elem%2Cfunction()%7Breturn%20_this3.elem%5B_this3.method%5D()%3B%7D)%3B%7Delse%7Bthis.elem%5Bthis.method%5D()%3B%7D%7D%7D%5D)%3Breturn%20Comment%3B%7D()%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Falerts%2Falerts-atoms%2Falerts-atoms.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Falerts%2Falerts-atoms%2Falerts-atoms.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/alerts/alerts-atoms/alerts-atoms.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-user-subscription-manager'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%5D%2Cproperties%3A%7BadFreeExperience%3ABoolean%2CccDeclineModal%3ABoolean%7D%2CframeworkReady%3Afunction%20frameworkReady()%7Bvar%20_this%3Dthis%3BGallium.user.then(function(user)%7B%2F%2F%20check%20if%20adFree%20reload%20modal%20should%20be%20shown%0Aif(_this.adFreeExperience%26%26window.ga_data.utils.getNested(window.ga_data%2C'flags'%2C'reloadPage'))%7Breturn%20_this._loadReloadModal()%3B%7D%2F%2F%20check%20if%20cc%20decline%20modal%20should%20be%20shown%0Aif(_this.ccDeclineModal)%7Bvar%20showCTA%3Duser.response.user.hasMarketAccess%26%26!(new%20Date().getTime()%3CparseInt(localStorage.getItem('expired-credit-card'))%2B259200000)%3Bif(showCTA)%7B_this._verifyExpiredLicense(user.response.user.licensePaymentHistory%5B0%5D%7C%7C%7B%7D)%3B%7D%7D%7D).catch(function(e)%7B%2F%2F%20previously%20newrelic%0A%7D)%3B%7D%2C_loadReloadModal%3Afunction%20_loadReloadModal()%7Bvar%20_this2%3Dthis%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2Falerts%2Falerts-modals%2Falerts-ad-free-modal%2Falerts-ad-free-modal.html'%2Cfunction()%7Bif(!_this2._adFreeModal)%7B_this2._adFreeModal%3Ddocument.createElement('alerts-ad-free-modal')%3B_this2._adFreeModal.openModal()%3B%7D%7D%2Cnull%2Ctrue)%3B%7D%2C_verifyExpiredLicense%3Afunction%20_verifyExpiredLicense(_ref)%7Bvar%20_ref%24lastPaymentFaile%3D_ref.lastPaymentFailed%2ClastPaymentFailed%3D_ref%24lastPaymentFaile%3D%3D%3Dundefined%3Ffalse%3A_ref%24lastPaymentFaile%2C_ref%24licenseId%3D_ref.licenseId%2ClicenseId%3D_ref%24licenseId%3D%3D%3Dundefined%3F''%3A_ref%24licenseId%2C_ref%24ccExpirationYear%3D_ref.ccExpirationYear%2CccExpirationYear%3D_ref%24ccExpirationYear%3D%3D%3Dundefined%3F''%3A_ref%24ccExpirationYear%2C_ref%24ccExpirationMont%3D_ref.ccExpirationMonth%2CccExpirationMonth%3D_ref%24ccExpirationMont%3D%3D%3Dundefined%3F''%3A_ref%24ccExpirationMont%3Bif(!lastPaymentFailed)%7Bvar%20date%3Dnew%20Date()%3Bvar%20currYear%3Ddate.getFullYear()%3Bvar%20currMonth%3Ddate.getMonth()%2B1%3Bvar%20expYear%3DparseInt(ccExpirationYear%2C10)%3Bvar%20expMonth%3DparseInt(ccExpirationMonth%2C10)%3Bif(currYear%3D%3D%3DexpYear)%7Bif(currMonth%3D%3D%3DexpMonth)%7Bthis._loadCCDeclineModal(licenseId%2Cfalse)%3B%7Delse%20if(currMonth%3EexpMonth)%7Bthis._loadCCDeclineModal(licenseId%2Ctrue)%3B%7D%7Delse%20if(currYear%3EexpYear)%7Bthis._loadCCDeclineModal(licenseId%2Ctrue)%3B%7Delse%7BlocalStorage.removeItem('expired-credit-card')%3B%7D%7Delse%7Bthis._loadCCDeclineModal(licenseId%2Ctrue)%3B%7D%7D%2C_loadCCDeclineModal%3Afunction%20_loadCCDeclineModal(licenseId%2CisExpiredNow)%7Bvar%20_this3%3Dthis%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2Falerts%2Falerts-modals%2Falerts-cc-decline-modal%2Falerts-cc-decline-modal.html'%2Cfunction()%7Bif(!_this3._ccDeclineModal)%7B_this3._ccDeclineModal%3Ddocument.createElement('alerts-cc-decline-modal')%3B_this3._ccDeclineModal.openModal(licenseId%2CisExpiredNow)%3B%7D%7D%2Cnull%2Ctrue)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-user-subscription-manager%2Futil-user-subscription-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-user-subscription-manager%2Futil-user-subscription-manager.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/util/util-user-subscription-manager/util-user-subscription-manager.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-sticky-module'%2Cproperties%3A%7BstickyHeight%3A%7Btype%3ANumber%2Cvalue%3A0%7D%7D%2Ccounter%3A0%2Cready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.hidden%3Dfalse%3Bvar%20elementList%3Dthis.%24.contentContainer.assignedNodes().filter(function(node)%7Breturn%20node.tagName%3D%3D%3D'UTIL-MODULE-SLOT'%3Fnode.children.length%3E0%3Anode.nodeType%3D%3D%3DNode.ELEMENT_NODE%3B%7D)%3Bif(elementList.length%3E0)%7Bthis._setHeight()%3B%7DPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bif(typeof%20ResizeObserver%3D%3D%3D'function')%7B_this._addResizeObserver()%3B%7Delse%7B_this._addSlotObserver()%3B%7D%7D%2C%5B%5D)%3B%7D%2C_addResizeObserver%3Afunction%20_addResizeObserver()%7Bvar%20_this2%3Dthis%3Bthis.resizeObserver%3Dnew%20ResizeObserver(function(entries)%7B%2F%2F%20eslint-disable-line%20no-undef%0Aentries.forEach(function(entry)%7Bvar%20cr%3Dentry.contentRect%3Bif(cr.height!%3D%3D_this2.stickyHeight)%7B_this2._setHeight()%3B%7D%7D)%3B%7D)%3Bthis.resizeObserver.observe(this.%24.wrapper)%3B%7D%2C_addSlotObserver%3Afunction%20_addSlotObserver()%7Bvar%20_this3%3Dthis%3Bthis.slotObserver%3Dnew%20Polymer.FlattenedNodesObserver(this%2Cfunction(info)%7Binfo.addedNodes.forEach(function(node)%7B%2F%2Ffilter%20out%20text%20nodes%0Aif(node.nodeType%3D%3D%3DNode.ELEMENT_NODE)%7B%2F%2F%20set%20mutation%20observer%20on%20child%20elems%20of%20util-module-slot%0Aif(node.tagName%3D%3D%3D'UTIL-MODULE-SLOT')%7Bfor(var%20i%3D0%3Bi%3Cnode.children.length%3Bi%2B%2B)%7B_this3._addMutationObserver(node.children%5Bi%5D)%3B%7D%7Delse%7B%2F%2F%20set%20mutation%20observer%20on%20node%20itself%0A_this3._addMutationObserver(node)%3B%7D%7D%7D)%3B%7D)%3B%7D%2C_addMutationObserver%3Afunction%20_addMutationObserver(node)%7Bvar%20_this4%3Dthis%3Bthis.mutationObserver%3Dnew%20MutationObserver(function(mutations)%7Bmutations.forEach(function(mutation)%7Bif(mutation.attributeName%3D%3D%3D'data-module-loaded'%7C%7Cmutation.addedNodes.length%7C%7Cmutation.removedNodes.length)%7B_this4._setHeight()%3B%7D%7D)%3B%7D)%3Bthis.mutationObserver.observe(node%2C%7Battributes%3Atrue%2CchildList%3Atrue%7D)%3B%7D%2C_setHeight%3Afunction%20_setHeight()%7Bvar%20_this5%3Dthis%3Bvar%20height%3Dthis.%24.wrapper.offsetHeight%3Bif(height%3E0)%7Bthis.counter%3D0%3Bthis.stickyHeight%3Dheight%3Bthis.%24.wrapper.classList.add('fixed')%3B%7Delse%7Bif(%2B%2Bthis.counter%3C10)%7BPolymer.Async.animationFrame.run(function()%7Breturn%20_this5._setHeight()%3B%7D)%3B%7D%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-sticky-module%2Futil-sticky-module.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-sticky-module%2Futil-sticky-module.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/util/util-sticky-module/util-sticky-module.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-section-color'%2Cproperties%3A%7B_activeSection%3A%7Btype%3AString%2Cvalue%3A''%7D%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this%3Dthis%3B%2F%2F%20pull%20the%20section%20color%20map%20from%20config%0Athis._siteSectionsMapped%3Dthis._mapSectionColors(window.ga_data.site.sectionColors)%3B%2F%2F%20If%20we%20have%20a%20config'd%20section%20color%20map%3A%20then%20we'll%20do%20the%20new%20way%20of%20handling%20them%0Aif(Object.keys(this._siteSectionsMapped).length)%7Bthis.setCssVariableBasedOnDynamicSectionMap()%3B%2F%2F%20If%20we%20don't%20have%20that%20section%20color%20map%20then%20we%20need%20to%20maybe%20handle%20it%20the%20old%20way%20(if%20USAT)%0A%7Delse%7Bif(window.ga_data.site.siteId%3D%3D%3D1)%7Bthis.setCssVariableBasedOnSection()%3B%2F%2F%20listen%20for%20further%20page%20changes%0Awindow.addEventListener('ga-page-view'%2Cfunction(event)%7B_this.setCssVariableBasedOnSection()%3B%7D)%3B%7D%7D%7D%2C_mapSectionColors%3Afunction%20_mapSectionColors(sectionColorConfigString)%7Bvar%20sectionsMapped%3D%7B%7D%3Bif(sectionColorConfigString)%7Bvar%20splitSections%3DsectionColorConfigString.split('%2C')%3Bfor(var%20i%3D0%3Bi%3CsplitSections.length%3Bi%2B%2B)%7Bif(splitSections%5Bi%5D.indexOf('%3A')%3E-1)%7Bvar%20sectionAndColor%3DsplitSections%5Bi%5D.split('%3A')%3Bif(sectionAndColor%5B0%5D.length%26%26sectionAndColor%5B1%5D.length)%7BsectionsMapped%5BsectionAndColor%5B0%5D.trim().toLowerCase()%5D%3DsectionAndColor%5B1%5D.trim()%3B%7D%7D%7D%7Dreturn%20sectionsMapped%3B%7D%2C%2F*%20New%20method%20of%20setting%20dynamic%20section%20colors%20*%2FsetCssVariableBasedOnDynamicSectionMap%3Afunction%20setCssVariableBasedOnDynamicSectionMap()%7Bvar%20section%3Dga_data.route.sectionName.toLowerCase()%3Bif(section!%3D%3Dthis._activeSection)%7Bthis._activeSection%3Dsection%3Bvar%20themeColor%3Dthis._siteSectionsMapped%5Bsection%5D%3B%2F%2F%20if%20no%20theme%20color%20exists%20for%20section%20or%20if%20the%20value%20is%20not%20a%20hex%20color%20then%20we%20go%20to%20a%20default%20grey%0Aif(!themeColor%7C%7CthemeColor.indexOf('%23')%3D%3D-1)%7Bvar%20elementStyles%3Dwindow.getComputedStyle(this)%3BthemeColor%3DelementStyles.getPropertyValue('--color-current-site')%3B%7DPolymer.updateStyles(%7B'--color-active-section'%3AthemeColor%7D)%3B%7D%7D%2C%2F*%20Handle%20changing%20color%20when%20user%20navigates%20to%20a%20new%20section.%20THIS%20IS%20AN%20OLD%20METHOD%20THAT%20WILL%20BE%20DEPRECATED%20*%2FsetCssVariableBasedOnSection%3Afunction%20setCssVariableBasedOnSection()%7Bvar%20section%3Dga_data.route.sectionName.toLowerCase()%3Bif(section!%3D%3Dthis._activeSection)%7Bthis._activeSection%3Dsection%3Bvar%20cssVar%3D'--color-'%2Bsection%2CelementStyles%3Dwindow.getComputedStyle(this)%2CthemeColor%3DelementStyles.getPropertyValue(cssVar)%3B%2F%2F%20if%20no%20theme%20color%20exists%20for%20section%20then%20we%20go%20to%20the%20current%20site%20color%0Aif(themeColor%26%26themeColor.length%3C%3D0)%7BthemeColor%3DelementStyles.getPropertyValue('--color-current-site')%3B%7DPolymer.updateStyles(%7B'--color-active-section'%3AthemeColor%7D)%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-section-color%2Futil-section-color.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-section-color%2Futil-section-color.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/util/util-section-color/util-section-color.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-page-reload'%2Cproperties%3A%7B%2F**%20Time%20in%20seconds%20until%20page%20is%20refreshed%2C%20defaults%20to%207%20minutes%20*%2FrefreshInterval%3A%7Btype%3ANumber%2Cvalue%3A7*60%2Cobserver%3A'_intervalChanged'%7D%7D%2Canalytics%3Adocument.createElement('util-analytics')%2CtimerId%3A-1%2C%2F**%20Reset%20reload%20countdown%20*%2Freset%3Afunction%20reset()%7Bthis._intervalChanged(this.refreshInterval)%3B%7D%2Cdisable%3Afunction%20disable()%7Bif(this.timerId%3E0)%7BclearTimeout(this.timerId)%3B%7D%7D%2C_intervalChanged%3Afunction%20_intervalChanged(interval)%7Bvar%20_this%3Dthis%3Bthis.disable()%3B%2F%2F%20stop%20the%20existing%20timer.%0Athis.timerId%3DsetTimeout(function()%7B_this.analytics.fireEvent('refresh%3A'%2Bwindow.ga_data.route.sectionName%2Cnull%2Ctrue)%3Bga_data.utils.writeCookie('page_refresh'%2C1%2C0)%3Blocation.reload()%3B%7D%2Cinterval*1000)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-page-reload%2Futil-page-reload.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-page-reload%2Futil-page-reload.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/util/util-page-reload/util-page-reload.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-icon'%2CdesignId%3A'UI9'%2Cproperties%3A%7BiconName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CimgSource%3A%7Btype%3AString%2Cvalue%3A''%7D%2CiconFull%3A%7Btype%3AString%2Ccomputed%3A'_makeIcon(iconName%2C%20imgSource%2C%20svgResize)'%7D%2CsvgResize%3A%7Btype%3ANumber%7D%7D%2C_makeIcon%3Afunction%20_makeIcon(iconName%2CimgSource%2CsvgResize)%7Bif(iconName)%7Bvar%20iconData%3Dthis.%24.iconMap.querySelector('%23'%2BiconName)%3B%2F%2F%20if%20we%20have%20an%20icon%20name%20and%20it%20matches%20one%20of%20the%20ids%20above%0Aif(iconData)%7Bvar%20container%3Dthis.%24.iconCont%2C%2F%2F%20iconVBs%20are%20on%20end%20of%20every%20iconName%0AiconVB%3DiconName.slice(-2)%2Csvg%3Dthis.%24.iconSVG%3Bwhile(svg.firstChild)%7Bsvg.removeChild(svg.firstChild)%3B%7D%2F%2F%20If%20the%20icon%20is%20already%20filled%20(ie%20its%20changing)%2C%20deletes%20current%20data%0Asvg.setAttribute('viewBox'%2C'0%200%20'%2BiconVB%2B'%20'%2BiconVB)%3Bcontainer.removeAttribute('class')%3B%2F%2F%20backwards%20compatibility%20-%20only%20add%20class%20if%20we%20don't%20have%20a%20width%20and%20height%20ruleset%20on%20%60this%60%20instance%0Aif(!svgResize)%7Bvar%20style%3Dwindow.getComputedStyle(this)%3Bif((style.width%3D%3D%3D'auto'%7C%7Cstyle.width%3D%3D%3D'')%26%26(style.height%3D%3D%3D'auto'%7C%7Cstyle.height%3D%3D%3D''))%7Bcontainer.classList.add('ic-'%2BiconVB)%3B%7D%7Delse%7Bcontainer.style.width%3Dthis.svgResize%2B'px'%3Bcontainer.style.height%3Dthis.svgResize%2B'px'%3B%7D%2F%2F%20cloning%20the%20first%20child%20so%20it%20can%20be%20deleted%20without%20affecting%20iconMap%0Asvg.appendChild(iconData.cloneNode(true))%3Bcontainer.hidden%3Dfalse%3B%7D%7Delse%7Bthis.%24.externalImage.hidden%3D!imgSource%3B%7Dreturn''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-icon%2Fui-icon.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-icon%2Fui-icon.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/ui/ui-icon/ui-icon.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-button'%2CdesignId%3A'UI2'%2Cproperties%3A%7Burl%3A%7Btype%3AString%7D%2Cicon%3A%7Btype%3AString%2Cobserver%3A'_updateIcon'%7D%2Cdisabled%3A%7Btype%3ABoolean%2Cobserver%3A'_updateDisabled'%7D%2Ctarget%3A%7Btype%3AString%7D%7D%2Cready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.%24.textArea.hidden%3D!this.%24.textSlot.assignedNodes().length%3Bthis.%24.container.style.backgroundColor%3Dga_data.site.colors.siteColor%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bvar%20observer%3Dnew%20MutationObserver(function(mutations)%7Bmutations.forEach(function(mutation)%7Bif(mutation.target)%7Bif(mutation.target.nodeType%3D%3DNode.TEXT_NODE%26%26mutation.type%3D%3D'characterData')%7B_this.%24.textArea.hidden%3D!mutation.target.data.length%3B%7D%7D%7D)%3B%7D)%3Bobserver.observe(_this%2C%7BcharacterData%3Atrue%2Csubtree%3Atrue%7D)%3B_this.%24.textSlot.addEventListener('slotchange'%2Cfunction()%7Breturn%20_this._processLightChildren()%3B%7D)%3B_this._processLightChildren()%3B%7D)%3B%7D%2C_processLightChildren%3Afunction%20_processLightChildren()%7Bvar%20childNodes%3Dthis.%24.textSlot.assignedNodes()%3Bif(childNodes)%7Bif(childNodes.length)%7Bthis.%24.textArea.hidden%3D!childNodes%5B0%5D.data.length%3B%7D%7D%7D%2C_updateDisabled%3Afunction%20_updateDisabled(disabled)%7Bthis.%24.container.classList.toggle('disabled'%2Cdisabled)%3B%7D%2C_updateIcon%3Afunction%20_updateIcon(icon)%7Bif(icon)%7Bthis.%24.iconArea.hidden%3Dfalse%3Bthis.%24.iconDisplay.setAttribute('icon-name'%2Cicon)%3Bthis.%24.textArea.classList.toggle('text-inline'%2C!!this.%24.textSlot.assignedNodes().length)%3Bthis.%24.iconArea.classList.toggle('icon-inline'%2C!!this.%24.textSlot.assignedNodes().length)%3B%7Delse%7Bthis.%24.iconArea.hidden%3Dtrue%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-button%2Fui-button.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-button%2Fui-button.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/ui/ui-button/ui-button.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'story-timestamp'%2CdesignId%3A'S3'%2Cproperties%3A%7B%2F*%20Optional%2C%20display%20shorter%20output%20(typically%20used%20for%20fronts)%20*%2Ftruncated%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F*%20Required%2C%20will%20display%20blank%20if%20not%20provided.%20Can%20be%20RFC2822%2C%20ISO%208601%2C%20or%20a%20unix%20timestamp%20*%2FpublishDate%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20Optional%2C%20Can%20be%20RFC2822%2C%20ISO%208601%2C%20or%20a%20unix%20timestamp%20*%2FupdateDate%3A%7Btype%3AString%2Cvalue%3A''%7D%2CarticleTop%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Cdisplay%3A%7Btype%3AString%2Ccomputed%3A'_handleDate(publishDate%2C%20updateDate%2C%20truncated%2C%20articleTop)'%2Cobserver%3A'_updateText'%7D%7D%2C_updateText%3Afunction%20_updateText(display)%7Bthis.innerHTML%3Ddisplay%3B%7D%2C_filterDateString%3Afunction%20_filterDateString(timestamp)%7Bif(typeof%20timestamp%3D%3D%3D'string')%7B%2F%2F%20if%20string%20is%20all%20numbers%2C%20convert%20to%20number%0Aif(timestamp.match(%2F%5E%5B0-9%5D*%24%2Fg))%7Btimestamp%3DparseInt(timestamp)%3B%7Delse%7B%2F%2F%20remove%20the%20AM%20%7C%7C%20PM%2C%20causes%20error%20when%20converting%20hours%20in%2024h%20format%20(ex%3A%2011%2F9%2F2018%2020%3A11%3A08%20PM)%3B%0A%2F%2F%20without%20removing%20%22AM%22%20or%20%22PM%22%20new%20Date(timestamp)%20returns%20Invalid%20Date%0Atimestamp%3Dtimestamp.replace(%2FAM%7CPM%2Fi%2C'')%3B%7D%7Dreturn%20timestamp%3B%7D%2C_handleDate%3Afunction%20_handleDate(publishDate%2CupdateDate%2Ctruncated%2CarticleTop)%7Bif(!publishDate)return%3BpublishDate%3Dthis._filterDateString(publishDate)%3Bvar%20publishTime%3Dnew%20Date(publishDate).getTime()%2CdeltaHours%3DMath.floor((Date.now()-publishTime)%2F(1000*60*60))%3B%2F%2F%20exit%20if%20not%20a%20valid%20date.%20ex%3A%20publish-date%3D%22asdlfkj%22%0Aif(isNaN(publishTime))return%3Bif(truncated)%7Breturn%20deltaHours%3C24%3Fthis.formatRelativeTime(publishTime)%3A''%3B%2F%2F%20only%20return%20updateDate%20if%20different%20from%20publishDate%0A%7Delse%20if(updateDate%26%26updateDate!%3D%3DpublishDate)%7BupdateDate%3Dthis._filterDateString(updateDate)%3Bvar%20updateTime%3Dnew%20Date(updateDate).getTime()%2CupdateDisplay%3DdeltaHours%3C24%3Fthis.formatRelativeTime(updateTime)%3Athis.formatDateString(updateDate)%3Bif(articleTop)%7Breturn'Updated%20'%2BupdateDisplay%3B%7Delse%7Breturn'Originally%20Published%20'%2Bthis.formatDateString(publishDate)%2B'%20%3Cdiv%20class%3D%22updated%22%3EUpdated%20'%2BupdateDisplay%2B'%3C%2Fdiv%3E'%3B%7D%7Delse%7Breturn%20this.formatDateString(publishDate)%3B%7D%7D%2C%2F*%20takes%20a%20date%20string%2C%20Can%20be%20RFC2822%2C%20ISO%208601%2C%20or%20a%20unix%20timestamp%20*%2FformatDateString%3Afunction%20formatDateString(str)%7Bvar%20date%3Dnew%20Date(str)%2CdateStr%3DString(date)%2Cam_pm%3Ddate.getHours()%3C12%3F'a.m.'%3A'p.m.'%2Chours%3Ddate.getHours()%3D%3D%3D0%3F12%3Adate.getHours()%3C13%3Fdate.getHours()%3Adate.getHours()-12%2Cminutes%3Ddate.getMinutes()%3C10%3F'0'%2Bdate.getMinutes()%3Adate.getMinutes()%2Cmonths%3D%5B'Jan.'%2C'Feb.'%2C'Mar.'%2C'Apr.'%2C'May'%2C'June'%2C'July'%2C'Aug.'%2C'Sep.'%2C'Oct.'%2C'Nov.'%2C'Dec.'%5D%2Ctime%3Dhours%2B'%3A'%2Bminutes%2B'%20'%2Bam_pm%2CzoneArray%3DdateStr.substring(dateStr.indexOf('(')%2B1%2CdateStr.indexOf(')')).split('%20')%2Czone%3DzoneArray%5B0%5D%3B%2F%2F%20if%20not%20short%20timezone%20format%20like%20%5BEDT%5D%2C%20then%20loop%20thru%20array.%20Ex%3A%20%5BEastern%2C%20Daylight%2C%20Time%5D%20%3D%3E%20'EDT'%20%0Aif(zoneArray.length%3E1)%7Bzone%3D''%3BzoneArray.forEach(function(word)%7Bzone%2B%3Dword%5B0%5D%3B%7D)%3B%7D%2F%2F%20format%20%3D%3E%208%3A14%20p.m.%20EDT%20Nov.%207%2C%202016%0A%2F%2F%20zone%20%3D%3E%20Convert%20CUT%20(Coordinated%20Universal%20Time)%20to%20more%20standard%20abbr%20UTC%20if%20applicable%0Areturn%20time%2B'%20'%2Bzone.replace('CUT'%2C'UTC')%2B'%20'%2Bmonths%5Bdate.getMonth()%5D%2B'%20'%2Bdate.getDate()%2B'%2C%20'%2Bdate.getFullYear()%3B%7D%2C%2F*%20time%20is%20the%20date%20as%20milliseconds%20(use%20getTime())%20*%2FformatRelativeTime%3Afunction%20formatRelativeTime(time)%7Bvar%20now%3DDate.now()%3Bvar%20hours%3DMath.floor((now-time)%2F(1000*60*60))%3Bif(hours%3D%3D%3D0)%7Bvar%20minutes%3DMath.floor((now-time)%2F(1000*60))%3Bif(minutes%3C1)%7Breturn'Less%20than%20a%20minute%20ago'%3B%7Delse%20if(minutes%3D%3D%3D1)%7Breturn'1%20minute%20ago'%3B%7Delse%7Breturn%20minutes.toString()%2B'%20minutes%20ago'%3B%7D%7Delse%20if(hours%3D%3D%3D1)%7Breturn'1%20hour%20ago'%3B%7Delse%7B%2F%2F%20here%20is%20guaranteed%20to%20be%2023%20or%20less%20%0Areturn%20hours.toString()%2B'%20hours%20ago'%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fstory%2Fstory-timestamp%2Fstory-timestamp.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fstory%2Fstory-timestamp%2Fstory-timestamp.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/story/story-timestamp/story-timestamp.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'promo-premium-indicator'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%5D%2Cproperties%3A%7BlabelName%3A%7Btype%3AString%2Cvalue%3A'For%20Subscribers'%7D%2CisPremium%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Cicon%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Clabel%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Chybrid%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%2CframeworkReady%3Afunction%20frameworkReady()%7Bif(this.isPremium)%7Bvar%20_ref%3Dga_data.utils.getNested(ga_data%2C'site'%2C'consumerMarketing')%7C%7C%7B%7D%2CpremiumLabel%3D_ref.premiumLabel%2CisPremiumLabelEnabled%3D_ref.isPremiumLabelEnabled%2CisPremiumIconEnabled%3D_ref.isPremiumIconEnabled%3Bvar%20isSubscriberLabelVariant%3Dga_data.intents.indexOf('variant-group%3Aso_indicator')%3E-1%3Bvar%20isStarIconVariant%3Dga_data.intents.indexOf('variant-group%3Aso_star')%3E-1%3Bif(this.label)%7Bthis.%24.labelContainer.hidden%3D!(isPremiumLabelEnabled%7C%7CisSubscriberLabelVariant)%3B%7Delse%20if(this.icon)%7Bthis.%24.iconContainer.hidden%3D!(isPremiumIconEnabled%7C%7CisStarIconVariant)%3B%7Delse%20if(this.hybrid)%7Bthis.%24.hybridContainer.hidden%3D!(isPremiumLabelEnabled%7C%7CisPremiumIconEnabled)%3B%7Dif(premiumLabel)this.labelName%3DpremiumLabel%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpromo%2Fpromo-premium-indicator%2Fpromo-premium-indicator.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpromo%2Fpromo-premium-indicator%2Fpromo-premium-indicator.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/promo/promo-premium-indicator/promo-premium-indicator.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-tree'%2CdesignId%3A'N16'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%5D%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this%20observer%20will%20pickup%20changes%20to%20the%20array%20as%20a%20whole%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20but%20not%20items%20in%20the%20array%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20TODO%3A%20good%20refactor%20to%20observe%20when%20items%20change%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FtagList%3A%7Btype%3AArray%2Cobserver%3A'_tagListChanged'%7D%7D%2C_getContainerClass%3Afunction%20_getContainerClass()%7Breturn%20window.ga_data.site.siteId!%3D%3D1%3F'local'%3A''%3B%7D%2CframeworkReady%3Afunction%20frameworkReady()%7B%2F*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20could%20be%20device-type%3Adesktop%20and%20IS_IPAD%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20but%20we%20only%20want%20one%20or%20the%20other%20here%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20since%20'desktop-navigation'%20has%20hover%20states%20and%20we%20dont%20want%20those%20on%20iPad%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fif(this._isDesktop()%26%26!this._isIpad())%7Bthis.%24.container.classList.add('desktop-navigation')%3B%7D%7D%2C_isDesktop%3Afunction%20_isDesktop()%7Breturn%20window.ga_data.intents.indexOf('device-type%3Adesktop')%3E-1%3B%7D%2C_isIpad%3Afunction%20_isIpad()%7Breturn%20window.ga_data.utils%26%26window.ga_data.utils.UA%26%26window.ga_data.utils.UA.IS_IPAD%3B%7D%2C_tagListChanged%3Afunction%20_tagListChanged(list)%7Bvar%20menu%3Dthis.%24.mainMenu%3Bthis._addListener(menu)%3Bmenu.items%3D%5B%5D%3Bmenu.render()%3Bmenu.items%3Dlist.filter(function(item)%7Breturn%20item.key!%3D%3D'home'%3B%7D)%3B%7D%2C_addListener%3Afunction%20_addListener(menu)%7Bvar%20_this%3Dthis%3Bthis.renderedListener%3Dfunction()%7Bif(menu.renderedItemCount%3D%3D%3Dmenu.items.length)%7B_this.dispatchEvent(new%20CustomEvent('linksRendered'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3Bmenu.removeEventListener('rendered-item-count-changed'%2C_this.renderedListener)%3B%7D%7D%3Bmenu.addEventListener('rendered-item-count-changed'%2Cthis.renderedListener)%3B%7D%2C_hasChildren%3Afunction%20_hasChildren(item)%7Breturn%20item.children%26%26item.children.length%3B%7D%2C_getMainMenuItemClass%3Afunction%20_getMainMenuItemClass(item)%7Bvar%20cls%3D'section-'%2Bitem.key%2B'%20main-menu-item%20smooth'%3Bif(window.ga_data.route.sectionName%3D%3D%3Ditem.key)%7Bcls%2B%3D'%20activeSection'%3B%7Dreturn%20cls%3B%7D%2C_getSecondaryMenuItemClass%3Afunction%20_getSecondaryMenuItemClass(url)%7Bvar%20ssts%3Dwindow.ga_data.route.ssts%3Breturn%20url.replace(%2F-%2Fg%2C'').match(ssts)%26%26ssts.indexOf('%2F')%3E-1%3F'activeSubSection'%3A''%3B%7D%2C_showHideSubMenu%3Afunction%20_showHideSubMenu(e)%7Be.stopPropagation()%3Bvar%20active%3De.target%3Bif(!active.classList.contains('main-menu-item'))%7Bactive%3Dthis._getParent(active%2C'main-menu-item')%3B%7Dactive.classList.toggle('active')%3Bvar%20icon%3Dactive.querySelector('.mobile-arrow')%3Bif(icon)%7Bif(icon.iconName%3D%3D%3D'icon-caret-down_16')%7Bicon.iconName%3D'icon-caret-up_16'%3B%7Delse%7Bicon.iconName%3D'icon-caret-down_16'%3B%7D%7D%7D%2C_getParent%3Afunction%20_getParent(el%2CclassToFind)%7Bvar%20found%3Dfalse%2Cparent%3Del.parentNode%3Bwhile(parent%26%26!found)%7Bif(parent.classList.contains(classToFind))%7Bfound%3Dtrue%3B%7Delse%7Bparent%3Dparent.parentNode%3B%7D%7Dreturn%20parent%3B%7D%2C_primaryLinkTap%3Afunction%20_primaryLinkTap(e)%7Be.stopPropagation()%3Bthis._fireAnalytics(e)%3B%7D%2C_fireAnalytics%3Afunction%20_fireAnalytics(e)%7Bvar%20href%3De.target.href%2Cdest%3Dhref.match('http')%3Fhref%3Ahref.replace(%2F%5C%2F%2Fg%2C'-').replace(%2F%5E-%7C-%24%2Fg%2C'')%3Bthis.%24.analytics.fireEvent(ga_data.route.basePageType.replace('%20'%2C'-')%2B'%7C'%2Bga_data.route.ssts%2B'%7C'%2Bthis.is%2B'%7C'%2Bdest%2C%7B%7D%2Ctrue)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-tree%2Fnav-tree.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-tree%2Fnav-tree.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/nav/nav-tree/nav-tree.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-search-bucket'%2CdesignId%3A'N7'%2Cproperties%3A%7B%2F*%20for%20empty%20search%20text%20*%2Fl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'empty-search'%3A'Sorry!%20There%20are%20no%20results%20for%20your%20search%20term.%20Please%20check%20the%20spelling%20of%20your%20search%20term%2C%20or%20try%20a%20different%20word%20or%20phrase.'%2C'story'%3A'Stories'%7D%2C'es'%3A%7B'empty-search'%3A'%C2%A1Lo%20siento!%20No%20hay%20resultados%20para%20su%20t%C3%A9rmino%20de%20b%C3%BAsqueda.%20Compruebe%20la%20ortograf%C3%ADa%20de%20su%20t%C3%A9rmino%20de%20b%C3%BAsqueda%20o%20pruebe%20una%20palabra%20o%20frase%20diferente.'%2C'story'%3A'Los%20Cuentos'%7D%7D%3B%7D%7D%2C%2F*%20siteId%20to%20choose%20between%20usat%20and%20uscp%20stuffs%20*%2FsiteId%3A%7Btype%3ANumber%2Cvalue%3Afunction%20value()%7Breturn%20ga_data.site.siteId%3B%7D%7D%2CsiteCode%3A%7Btype%3AString%2Cvalue%3Afunction%20value()%7Breturn%20ga_data.site.uaid%3B%7D%7D%2C%2F*%20tells%20which%20child%20module%20to%20use%20(takes%20small%20or%20large.%20defaults%20to%20small)%20*%2FitemModuleType%3A%7Btype%3AString%2Cvalue%3A'promo-story-thumb-small'%7D%2C%2F*%20required.%20This%20will%20be%20used%20to%20do%20the%20search%20query.%20This%20is%20a%20urlencoded%20solr%20query%20string*%2Fquery%3A%7Btype%3AString%2Cobserver%3A'_fireAnalytics'%2Cvalue%3A''%7D%2C%2F*%20can%20come%20in%20with%20the%20query%20if%20you%20want%20*%2Fssts%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20allows%20to%20change%20the%20asset%20type.%20but%20for%20now%20should%20not%20be%20touched%20since%20we%20want%20text%20*%2FassetType%3A%7Btype%3AString%2Cvalue%3A'text'%7D%2C%2F*%20not%20required%2C%20but%20useful%20for%20limiting%20number%20returned%20from%20solr%20and%20popular%20*%2Fcount%3A%7Btype%3AString%2Cvalue%3A''%7D%2Curl%3A%7Btype%3AString%2Ccomputed%3A'_queryChange(query%2C%20assetType%2C%20count)'%2Cobserver%3A'_urlChange'%7D%2C%2F*%20the%20assets%20returned%20from%20the%20endpoint%20*%2Fassets%3A%7Btype%3AArray%7D%2Cerror%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cnotify%3Atrue%2CreadOnly%3Atrue%7D%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%2Cwindow.ga_data.behaviors.PackagedContentBehavior%5D%2C_urlChange%3Afunction%20_urlChange(url)%7Bif(url.length)%7Bthis.%24.ajax.url%3Durl%3B%2F%2F%20for%20some%20reason%20without%20this%20here%20requests%20will%20not%20go%20through%0Athis.%24.ajax.generateRequest()%3B%7D%7D%2C_fireAnalytics%3Afunction%20_fireAnalytics(query)%7Bif(query.length)%7Bthis.%24.analytics.fireEvent('search-query'%2Cquery)%3B%7D%7D%2C_queryChange%3Afunction%20_queryChange(query%2CassetType%2Ccount)%7Bthis.%24.emptySearch.style.display%3D'none'%3Bthis.%24.loading.classList.remove('loaded')%3B%2F%2F%20reset%20the%20query%20responses%20visible%0Awhile(this.%24.container.hasChildNodes())%7Bthis.%24.container.removeChild(this.%24.container.lastChild)%3B%7Dif(this.siteId%26%26this.query.length)%7Bvar%20baseUrl%3Dwindow.ga_data.site.hosts.searchAPI%3Bvar%20urlPath%3D'search%2F'%2Bthis.siteCode%2B(count.length%3F'%2F'%2Bcount%3A'')%3Bvar%20url%3D''%2BbaseUrl%2BurlPath%3Burl%3Dthis._appendUrlParam(url%2C'query'%2Cquery)%3Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cthis.ssts)%3Burl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'apiKey'%2Cwindow.ga_data.site.keys.searchKey%7C%7C'57646bc6bca4811fea0000011378af619f284d8f5119e496a0a016a9')%3Breturn%20url%3B%7Dthis._handleNoInput()%3Bthis.%24.loading.classList.add('loaded')%3Breturn''%3B%7D%2C_resultsTap%3Afunction%20_resultsTap(e)%7Bfor(var%20i%3D0%3Bi%3Cthis.%24.container.children.length%3Bi%2B%2B)%7Bif(this.%24.container.children%5Bi%5D%3D%3D%3De.target)%7Bvar%20analyticsEvent%3D'searchstory'%2B(i%2B1)%2B'of'%2Bthis.%24.container.children.length%3Bthis.%24.analytics.fireEvent(analyticsEvent%2Cnull%2Ctrue)%3B%7D%7D%7D%2C_handleResponse%3Afunction%20_handleResponse(event%2Crequest)%7Bif(event.detail.response%26%26Object.keys(event.detail.response).length)%7Bthis.assets%3Devent.detail.response.assets%3Bthis.%24.container.style.display%3D'block'%3Bthis._addAssets(this.itemModuleType)%3Bthis._setError(false)%3B%7Delse%7Bthis.assets%3D%5B%5D%3B%2F%2F%20since%20no%20data%20has%20been%20returned%0Athis._handleError()%3B%7Dthis.%24.loading.classList.add('loaded')%3B%7D%2C_handleError%3Afunction%20_handleError()%7Bthis.%24.container.style.display%3D'none'%3Bthis.%24.loading.classList.add('loaded')%3Bthis._setError(true)%3B%7D%2C_handleNoInput%3Afunction%20_handleNoInput()%7Bthis.%24.container.style.display%3D'none'%3Bthis.%24.emptySearch.style.display%3D'none'%3Bthis.%24.loading.classList.add('loaded')%3Bthis._setError(false)%3B%7D%2C_addAssets%3Afunction%20_addAssets(elemName)%7Bvar%20_this%3Dthis%3Bvar%20elemType%3DelemName.split('-')%5B0%5D%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2F'%2BelemType%2B'%2F'%2BelemName%2B'%2F'%2BelemName%2B'.html'%2Cnull%2Cnull%2Ctrue)%3Bif(!this.assets.length)%7Bthis.%24.emptySearch.style.display%3D'block'%3B%7Dthis.assets.forEach(function(asset)%7Bvar%20tempElem%3Ddocument.createElement(elemName)%3BtempElem.setAttribute('title'%2Casset.shortHeadline%7C%7Casset.title)%3BtempElem.setAttribute('description'%2Casset.description%7C%7Casset.promoBrief)%3BtempElem.setAttribute('type'%2C_this.assetType)%3Bif(asset.thumbnail)%7Bif(asset.thumbnail.type%3D%3D%3D'text'%26%26!!asset.thumbnail.crops)%7BtempElem.setAttribute('thumbnail-set'%2Casset.thumbnail.crops%5B'1_1'%5D%2B'%201%3A1%2C%20'%2Basset.thumbnail.crops%5B'16_9'%5D%2B'%2016%3A9')%3B%7Delse%20if(asset.thumbnail.type%3D%3D%3D'video')%7BtempElem.setAttribute('thumbnail-url'%2Casset.thumbnail.url)%3BtempElem.setAttribute('length'%2Casset.thumbnail.length)%3B%7Delse%20if(asset.thumbnail.type%3D%3D%3D'gallery')%7BtempElem.setAttribute('thumbnail-url'%2Casset.thumbnail.url)%3B%7D%7DtempElem.setAttribute('date-published'%2Casset.datePublished)%3BtempElem.setAttribute('label'%2C_this._getLabel(asset.ssts))%3Bif(asset.sponsorName!%3D'')%7BtempElem.setAttribute('brand-name'%2Casset.sponsorName)%3BtempElem.setAttribute('sponsored'%2Ctrue)%3B%7DtempElem.setAttribute('url'%2Casset.url%7C%7Casset.pageURL.long)%3Bif(window.innerWidth%3E480)%7BtempElem.classList%3D'colwidth-narrow'%3B%7DtempElem.setAttribute('date-updated'%2Casset.dateUpdated)%3B_this.%24.container.appendChild(tempElem)%3B%7D)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-search-bucket%2Fnav-search-bucket.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-search-bucket%2Fnav-search-bucket.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/nav/nav-search-bucket/nav-search-bucket.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-search-bar'%2CdesignId%3A'N12'%2Cproperties%3A%7B%2F*%20the%20value%20of%20the%20search%20at%20anytime%20should%20be%20passed%20in%20with%20dual%20binding%20*%2F%2F*%20since%20it%20is%20notify%20it%20can%20pass%20data%20up.%20*%2FsearchValue%3A%7Btype%3AString%2Cnotify%3Atrue%7D%2C%2F*%20placeholder%20localization%20*%2Fl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'placeholder'%3A'What%20do%20you%20want%20to%20find%3F'%7D%2C'es'%3A%7B'placeholder'%3A'%C2%BFQu%C3%A9%20quieres%20encontrar%3F'%7D%7D%3B%7D%7D%2Cerror%3A%7Btype%3ABoolean%7D%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%5D%2Cready%3Afunction%20ready()%7Bthis.dispatchEvent(new%20CustomEvent('searchRendered'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3Bif(this._isIE())%7Bthis.classList.add('ie')%3Bthis._removeBorder()%3B%7D%7D%2C_isIE%3Afunction%20_isIE()%7Breturn!!window.MSInputMethodContext%26%26!!document.documentMode%3B%7D%2C%2F%2F%20the%20%60--paper-input-container-input%60%20mixin%20does%20not%20work%20for%20IE11%0A_removeBorder%3Afunction%20_removeBorder()%7Bvar%20input%3Dthis.%24.paperInput.shadowRoot.querySelector('input')%3Bif(input)%7Binput.style.border%3D'none'%3B%7D%7D%2C_formSubmit%3Afunction%20_formSubmit(e)%7Be.preventDefault()%3Bthis.dispatchEvent(new%20CustomEvent('formSubmit'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3A%7BsearchValue%3Athis.searchValue%7D%7D))%3B%7D%2C_keyDown%3Afunction%20_keyDown(e)%7B%2F%2F%20is%20enter%0Aif(e.keyCode%3D%3D%3D13)%7Bthis._formSubmit(e)%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-search-bar%2Fnav-search-bar.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-search-bar%2Fnav-search-bar.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/nav/nav-search-bar/nav-search-bar.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-promo-item'%2CdesignId%3A'N5'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%2Cwindow.ga_data.behaviors.PromoItem%5D%2Cproperties%3A%7Bl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'breaking-news'%3A'Breaking%20News'%7D%2C'es'%3A%7B'breaking-news'%3A'Noticias%20de%20%C3%BAltima%20hora'%7D%7D%3B%7D%7D%2CpromoTag%3A%7Btype%3AString%7D%2CpromoDescription%3A%7Btype%3AString%7D%2CpromoUrl%3A%7Btype%3AString%7D%2CisAlert%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2CalertType%3A%7Btype%3AString%2Cvalue%3A''%7D%7D%2Cready%3Afunction%20ready()%7Bthis.promoUrl%3Dthis._preserveLocalURL(this.promoUrl)%3B%7D%2C_addBreakingClass%3Afunction%20_addBreakingClass(isAlert%2CalertType)%7Bvar%20classname%3D''%2Ctype%3D'generic'%3Bif(alertType%3D%3D%3D'breaking')%7Btype%3D'breaking'%3Bthis.promoTag%3Dthis.localize('breaking-news')%3B%7Dif(isAlert)%7Bclassname%2B%3D'%20alert%20'%2Btype%3B%7Dreturn%20classname%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-promo-item%2Fnav-promo-item.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-promo-item%2Fnav-promo-item.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/nav/nav-promo-item/nav-promo-item.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-hub'%2CdesignId%3A'N4'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%5D%2Cproperties%3A%7Bl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'news-alert-heading'%3A'news%20alert'%2C'trending-corona'%3A'coronavirus%20updates'%2C'trending-heading'%3A'most%20recent%20stories'%7D%2C'es'%3A%7B'news-alert-heading'%3A'alerta%20de%20noticias'%2C'trending-corona'%3A'coronavirus%20updates'%2C'trending-heading'%3A'lo%20mas%20reciente'%7D%7D%3B%7D%7D%2CtrendingHeading%3A%7Btype%3AString%2Ccomputed%3A'getTrendingHeading()'%7D%2CnavEndpoint%3A%7Btype%3AString%2Ccomputed%3A'getEndpoint(promoCount)'%7D%2Calerts%3A%7Btype%3AArray%2Cvalue%3A%5B%5D%2Cobserver%3A'_toggleAlertsHeader'%7D%2Cpromotions%3A%7Btype%3AArray%2Cvalue%3A%5B%5D%7D%2CtagList%3A%7Btype%3AArray%2Cvalue%3A%5B%5D%7D%2CuscpCorona%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F%2Famount%20of%20promotion%20stories%20to%20return%0ApromoCount%3A%7Btype%3AString%2Cvalue%3A'10'%7D%7D%2CgetTrendingHeading%3Afunction%20getTrendingHeading()%7Bif(window.ga_data.site.uaid!%3D'USAT'%26%26this.uscpCorona)%7Breturn'trending-corona'%3B%7Dreturn'trending-heading'%3B%7D%2CgetEndpoint%3Afunction%20getEndpoint(promoCount)%7Bif(window.ga_data.site.uaid!%3D'USAT'%26%26this.uscpCorona)%7Bvar%20searchObj%3D%7B'site_code'%3Awindow.ga_data.site.uaid%2C'types'%3A%5B'text'%2C'gallery'%2C'video'%5D%2C'tagIds'%3A%5B'3cf746dc-de06-4d2f-be6c-aa7f4e34936e'%5D%2C'size'%3A6%7D%3Bvar%20objJsonStr%3DJSON.stringify(searchObj)%3Breturn%20ga_data.site.hosts.pcsAPI%2B'custom-search%2Fasset_reverse_chron%3FapiKey%3D'%2Bga_data.site.keys.pcsKey%2B'%26site-code%3D'%2B(ga_data.site.uaid%7C%7C'USAT')%2B'%26searchEnc%3D'%2Bbtoa(objJsonStr)%3B%7Dreturn%20ga_data.site.hosts.pcsAPI%2B'popular%2F'%2B(ga_data.site.uaid%7C%7C'USAT')%2B'%2F'%2BpromoCount%2B'%3FapiKey%3D'%2Bga_data.site.keys.pcsKey%2B'%26searchtype%3DsocialReferrals'%3B%7D%2C_handlePromoResponse%3Afunction%20_handlePromoResponse(event)%7Bvar%20response%3Devent.detail.response%3Bif(response%26%26Object.keys(response).length%26%26response.assets)%7Bthis.promotions%3Dresponse.assets%3B%7D%7D%2C_alertTap%3Afunction%20_alertTap(event)%7Bthis.dispatchEvent(new%20CustomEvent('hubAlertTap'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3Aevent.model.item%7D))%3Bthis.%24.analytics.fireEvent('alert%3Anavhub%3A'%2Bevent.model.item.alertType%2B'%3Aclick'%2Cnull%2Ctrue)%3B%7D%2C_promoTap%3Afunction%20_promoTap(event)%7Bthis.%24.analytics.fireEvent('navtrending1'%2Cnull%2Ctrue)%3B%7D%2C_fireAnalytics%3Afunction%20_fireAnalytics(e)%7Bthis.%24.analytics.fireEvent('navsection'%2B(parseInt(e.detail.index)%2B1)%2B'%5B'%2Be.detail.tag%2B'%5D'%2Cnull%2Ctrue)%3Be.stopPropagation()%3B%7D%2C_toggleAlertsHeader%3Afunction%20_toggleAlertsHeader(alerts)%7Bthis.%24.hubAlerts.hidden%3D!alerts.length%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-hub%2Fnav-hub.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-hub%2Fnav-hub.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/nav/nav-hub/nav-hub.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'media-badge'%2Cproperties%3A%7BmediaType%3A%7Btype%3AString%2Cobserver%3A'_setIcon'%7D%2Caction%3A%7Btype%3AString%2Cvalue%3A''%2Cobserver%3A'_setAction'%7D%2Cmeta%3A%7Btype%3AString%2Cvalue%3A''%2Cobserver%3A'showPipe'%7D%2Curl%3AString%7D%2C_setIcon%3Afunction%20_setIcon(mediatype)%7Bswitch(mediatype)%7Bcase'video'%3Athis.%24.mainButton.icon%3D'icon-play_24'%3Bbreak%3Bcase'gallery'%3Athis.%24.mainButton.icon%3D'icon-camera_80'%3Bbreak%3Bcase'interactive'%3Athis.%24.mainButton.icon%3D'icon-interactive_24'%3Bbreak%3Bcase'promo'%3Athis.%24.mainButton.icon%3D'icon-camera_80'%3Bbreak%3Bdefault%3Athis.%24.mainButton.hidden%3Dtrue%3Bbreak%3B%7D%7D%2C_setAction%3Afunction%20_setAction(action)%7Bvar%20actionArray%3Daction.split('%20%7C%20')%3Bvar%20playTime%3DactionArray%5B1%5D%26%26actionArray%5B1%5D.length%3FactionArray%5B1%5D.trim()%3A''%3Bif(playTime%26%26playTime.length%3E6%26%26playTime.indexOf('00%3A0')%3D%3D%3D0)%7BplayTime%3DplayTime.substring(4)%3Bthis.action%3DactionArray%5B0%5D%2B'%20%20%7C%20%20'%2BplayTime%3B%7Delse%20if(playTime%26%26playTime.length%3D%3D%3D5%26%26playTime.charAt(0)%3D%3D%3D'0')%7BplayTime%3DplayTime.substring(1)%3Bthis.action%3DactionArray%5B0%5D%2B'%20%20%7C%20%20'%2BplayTime%3B%7D%7D%2CshowPipe%3Afunction%20showPipe(meta)%7Bthis.%24.pipe.hidden%3D!meta.length%3Bthis.%24.pipe.classList.toggle('pipe'%2C!!meta.length)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fmedia%2Fmedia-badge%2Fmedia-badge.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fmedia%2Fmedia-badge%2Fmedia-badge.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/media/media-badge/media-badge.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'cta-atoms-container-aux'%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fcta%2Fcta-atoms-container-aux%2Fcta-atoms-container-aux.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fcta%2Fcta-atoms-container-aux%2Fcta-atoms-container-aux.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/cta/cta-atoms-container-aux/cta-atoms-container-aux.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'alerts-manager'%2CdesignId%3A'AM2'%2Calerts%3A%5B%5D%2C%2F%2F%20Life%20cycle%20methods%0Aready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(!(window.ga_data%26%26window.ga_data.route%26%26window.ga_data.route.sponsorStory))%7B%2F%2F%20force%20test%20alert%20with%20qsp%20'%3Fshow_alert%3Dtrue'%20in%20lower%20envs%0Aif(ga_data.utils.getUrlParamValue('show_alert')%26%26(ga_data.server.environment%3D%3D%3D'sandbox'%7C%7Cga_data.server.environment%3D%3D%3D'preprod'))%7Bvar%20testAlert%3D%7BalertId%3A123%2CalertType%3A'breaking'%2CbannerShown%3Atrue%2CbannerText%3A'This%20is%20an%20alert%20forced%20by%20using%20a%20QSP%20value%2C%20for%20the%20purpose%20of%20functional%20and%20product%20testing.'%2CbannerUrl%3Aga_data.site.publicationURL%7D%3Bthis._setBanner(testAlert)%3B%7Delse%7B%2F%2F%20Fetch%20alerts%20if%20available%0APolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bvar%20url%3Dga_data.utils.getNested(ga_data%2C'site'%2C'breakingNews'%2C'api'%2C'url')%2Ckey%3Dga_data.utils.getNested(ga_data%2C'site'%2C'breakingNews'%2C'api'%2C'key')%3Bif(!(url%26%26key))return%3Burl%2B%3D(url.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2B'apiKey%3D'%2Bkey%2B'%26site-code%3D'%2Bga_data.site.uaid%3B_this._getAlerts(url)%3B%7D%2C%5B%5D)%3B%7D%7D%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this2%3Dthis%3Bwindow.addEventListener('messageEvent'%2Cfunction(event)%7Breturn%20_this2._handleCustomAlert(event)%3B%7D)%3B%7D%2C%2F%2F%20Public%0AgetActiveAlerts%3Afunction%20getActiveAlerts()%7Breturn%20this.alerts%3Fthis.alerts.filter(function(alert)%7Breturn%20alert.active%3D%3D%3Dtrue%3B%7D)%3A%5B%5D%3B%7D%2CmarkAlertInactive%3Afunction%20markAlertInactive(id)%7Bvar%20_this3%3Dthis%3Bthis.alerts.forEach(function(alert)%7Bif(alert.alertId%3D%3D%3Did)%7Balert.active%3Dfalse%3B_this3._storeAlerts()%3B%7D%7D)%3Bif(this._checkAllAlertsExpired())%7Bthis.dispatchEvent(new%20CustomEvent('bannerLeaveBehind'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3A%7Bactivate%3Afalse%7D%7D))%3B%7D%7D%2C%2F%2F%20%22Private%22%0A_getAlerts%3Afunction%20_getAlerts(url)%7Bvar%20_this4%3Dthis%3Bfetch(url).then(function(response)%7Bif(response.ok)%7Bresponse.json().then(function(res)%7Breturn%20_this4._handleResponse(res)%3B%7D)%3B%7D%7D%2Cfunction(error)%7B%2F%2F%20previously%20newrelic%0A%7D)%3B%7D%2C_checkAllAlertsExpired%3Afunction%20_checkAllAlertsExpired()%7Bthis.alerts.forEach(function(alert)%7Bif(alert.active!%3D%3Dfalse)%7Breturn%20false%3B%7D%7D)%3Breturn%20true%3B%7D%2C_handleResponse%3Afunction%20_handleResponse(response)%7Bvar%20banners%3Dga_data.utils.getNested(response%2C'data'%2C'searchBanners'%2C'banners')%3Bif(banners%26%26banners.length%3E0)%7Bvar%20i%3D0%2Clen%3Dvoid%200%3Bfor(i%2Clen%3Dbanners.length%3Bi%3Clen%3Bi%2B%2B)%7Bvar%20cached%3Dthis._getItemInStorage(''%2Bbanners%5Bi%5D.id)%2Cdismissed%3Dcached%3Fcached.dismissed%3A''%2Ctype%3Dbanners%5Bi%5D.isBreakingNews%3F'breaking'%3A'developing'%3Bif(banners%5Bi%5D.headline)%7Bthis.alerts.push(%7BbannerText%3Abanners%5Bi%5D.headline%2CbannerUrl%3Abanners%5Bi%5D.associatedUrl%2CalertId%3A''%2Bbanners%5Bi%5D.id%2Cactive%3Atrue%2CbannerShown%3A!!cached%2Cdismissed%3Adismissed%2CalertType%3Atype%7D)%3B%7D%7Dthis._checkAlerts()%3B%7D%7D%2C_handleCustomAlert%3Afunction%20_handleCustomAlert(event)%7Bvar%20alert%3Devent.detail.alert%7C%7C%5B%5D%3Bif(alert.bannerText)%7Bvar%20cached%3Dthis._getItemInStorage(''%2Balert.alertId)%2Cactive%3Dcached%3Fcached.active%3Atrue%2Cdismissed%3Dcached%3Fcached.dismissed%3A''%2Cexp%3Dalert.alertExpiration%7C%7C30%3Bthis.alerts.push(%7BbannerText%3Aalert.bannerText%2CbannerUrl%3Aalert.bannerUrl%2CalertId%3A''%2Balert.alertId%2Cexpiration%3Aexp%2Cactive%3Aactive%2CbannerShown%3A!!cached%2Cdismissed%3Adismissed%2CalertType%3A'custom-'%2Balert.alertId%7D)%3B%7Dthis._checkAlerts()%3B%7D%2C_checkAlerts%3Afunction%20_checkAlerts()%7Bif(this.%24%24('alerts-banner'))return%3Bvar%20nextBanner%3Dthis._getNextShowable()%3Bthis.%24.container.hidden%3DnextBanner%3D%3D%3Dundefined%3Bif(nextBanner)this._setBanner(nextBanner)%3B%7D%2C_setBanner%3Afunction%20_setBanner(alert)%7Bvar%20bannerEl%3Ddocument.createElement('alerts-banner')%3BbannerEl.id%3D'banner-'%2Balert.alertId%3BbannerEl.setAttribute('banner-text'%2Calert.bannerText)%3BbannerEl.setAttribute('alert-id'%2Calert.alertId)%3BbannerEl.setAttribute('banner-url'%2Calert.bannerUrl)%3BbannerEl.setAttribute('alert-type'%2Calert.alertType)%3Bthis.%24.container.appendChild(bannerEl)%3Bthis._setEventListeners(bannerEl)%3Bthis.%24.container.classList.remove('no-alerts')%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2Falerts%2Falerts-banner%2Falerts-banner.html'%2Cfunction()%7BbannerEl.showBanner()%3B%7D%2Cnull%2Ctrue)%3B%7D%2C_removeEventListeners%3Afunction%20_removeEventListeners(bannerElement)%7BbannerElement.removeEventListener('bannerDismissed'%2Cthis.listeners.bannerDismissed)%3BbannerElement.removeEventListener('bannerTimeout'%2Cthis.listeners.bannerTimeout)%3BbannerElement.removeEventListener('bannerClicked'%2Cthis.listeners.bannerClicked)%3B%7D%2C_setEventListeners%3Afunction%20_setEventListeners(bannerElement)%7Bvar%20_this5%3Dthis%3Bthis.listeners%3D%7B'bannerDismissed'%3Afunction%20bannerDismissed(event)%7Breturn%20_this5._onBannerClosed(event)%3B%7D%2C'bannerTimeout'%3Afunction%20bannerTimeout(event)%7Breturn%20_this5._onBannerTimeout(event)%3B%7D%2C'bannerClicked'%3Afunction%20bannerClicked(event)%7Breturn%20_this5._onBannerClicked(event)%3B%7D%7D%3BbannerElement.addEventListener('bannerDismissed'%2Cthis.listeners.bannerDismissed)%3BbannerElement.addEventListener('bannerTimeout'%2Cthis.listeners.bannerTimeout)%3BbannerElement.addEventListener('bannerClicked'%2Cthis.listeners.bannerClicked)%3B%7D%2C_onBannerClicked%3Afunction%20_onBannerClicked(e)%7Bvar%20alertId%3De.target.getAttribute('alert-id')%2Ctype%3De.target.getAttribute('alert-type')%3Bthis.%24.analytics.fireEvent('alert%3Abanner%3A'%2Btype%2B'%3Aclick'%2C%7Bid%3AalertId%7D)%3Bthis._setBannerShown(alertId)%3Bthis._storeAlerts()%3B%7D%2C_onBannerClosed%3Afunction%20_onBannerClosed(e)%7Bvar%20alertId%3De.target.getAttribute('alert-id')%2Ctype%3De.target.getAttribute('alert-type')%3Bthis.%24.analytics.fireEvent('alert%3Abanner%3A'%2Btype%2B'%3Aclose'%2C%7Bid%3AalertId%7D)%3Bthis._destroyBanner(alertId%2Ce.target)%3B%7D%2C_onBannerTimeout%3Afunction%20_onBannerTimeout(e)%7Bvar%20alertId%3De.target.getAttribute('alert-id')%2Ctype%3De.target.getAttribute('alert-type')%3Bthis.%24.analytics.fireEvent('alert%3Abanner%3A'%2Btype%2B'%3Atimeout'%2C%7Bid%3AalertId%7D)%3Bthis._destroyBanner(alertId%2Ce.target)%3B%7D%2C_getList%3Afunction%20_getList()%7Bvar%20list%3Dwindow.localStorage%3Fwindow.localStorage.getItem('dismissedAlertIDs')%3Afalse%3Breturn%20list%26%26list.length%3FJSON.parse(list)%3A%5B%5D%3B%7D%2C_destroyBanner%3Afunction%20_destroyBanner(id%2CbannerEl)%7Bthis.dispatchEvent(new%20CustomEvent('bannerLeaveBehind'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3A%7Bactivate%3Atrue%7D%7D))%3Bthis._removeEventListeners(bannerEl)%3Bthis.%24.container.removeChild(bannerEl)%3Bthis._setBannerShown(id)%3Bthis._storeAlerts()%3Bthis._checkAlerts()%3B%7D%2C_setBannerShown%3Afunction%20_setBannerShown(id)%7Bthis.alerts.forEach(function(alert)%7Bif(alert.alertId%3D%3D%3Did)%7Balert.bannerShown%3Dtrue%3B%7D%7D)%3B%7D%2C_getNextShowable%3Afunction%20_getNextShowable()%7Bvar%20found%3Dvoid%200%3Bthis.alerts.forEach(function(alert)%7Bif(!alert.bannerShown%26%26alert.active)found%3Dalert%3B%7D)%3Breturn%20found%3B%7D%2C_getItemAge%3Afunction%20_getItemAge(item)%7Bvar%20diff%3Dnew%20Date().getTime()-item.dismissed%3Breturn%20Math.ceil(diff%2F(1000*3600*24))%3B%7D%2C_getItemInStorage%3Afunction%20_getItemInStorage(id)%7Bvar%20i%3D0%2Clen%3Dvoid%200%2Clist%3Dthis._getList()%3Bfor(i%2Clen%3Dlist.length%3Bi%3Clen%3Bi%2B%2B)%7Bif(list%5Bi%5D.id%3D%3D%3Did)return%20list%5Bi%5D%3B%2F%2F%20item%20in%20localStorage%0A%7Dreturn%20null%3B%2F%2F%20item%20not%20in%20localStorage%0A%7D%2C_storeAlerts%3Afunction%20_storeAlerts()%7Bvar%20_this6%3Dthis%3Bif(!window.localStorage)return%3Bvar%20list%3D%5B%5D%2Ctimestamp%3Dnew%20Date().getTime()%3Bthis.alerts.forEach(function(alert)%7Bvar%20dismissed%3Dalert.dismissed%3F_this6._getItemAge(alert)%3A0%2Cexp%3Dalert.expiration%7C%7C1%2CisExpired%3Ddismissed%3E%3Dexp%3Bif(alert.bannerShown%26%26!isExpired)%7Blist.push(%7Bdismissed%3Atimestamp%2Cexpiration%3Aexp%2Cid%3Aalert.alertId%2Cactive%3Aalert.active%7D)%3B%7D%7D)%3Btry%7Bwindow.localStorage.setItem('dismissedAlertIDs'%2CJSON.stringify(list))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Falerts%2Falerts-manager%2Falerts-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Falerts%2Falerts-manager%2Falerts-manager.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/alerts/alerts-manager/alerts-manager.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F*global%20IntlMessageFormat%20*%2Fwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.GalliumI18n%20*%2Fwindow.ga_data.behaviors.GalliumI18n%3D%7Bproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20language%20used%20for%20translation.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Flanguage%3A%7Btype%3AString%2Cvalue%3Awindow.ga_data.site.language%7C%7C'en'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20In%20some%20circumstances%2C%20specific%20overrides%20are%20needed%20per-site.%20This%20is%20where%20you%20define%20that.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Should%20typically%20be%20a%20site%20code.%20(e.g.%20PCIN)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Foverrides%3A%7Btype%3AString%2Cvalue%3Awindow.ga_data.site.l10n%7C%7Cnull%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20dictionary%20of%20localized%20messages%20defined%20by%20the%20module%2C%20for%20each%20of%20the%20languages%20that%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20are%20going%20to%20be%20used.%20See%20http%3A%2F%2Fformatjs.io%2Fguides%2Fmessage-syntax%2F%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20more%20information%20on%20the%20message%20syntax.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20For%20example%2C%20a%20valid%20dictionary%20would%20be%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this.l10n%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20'en'%3A%20%7B%20'greeting'%3A%20'Hello!'%20%7D%2C%20'es'%20%3A%20%7B%20'greeting'%3A%20'Bonjour!'%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fl10n%3A%7Btype%3AObject%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Optional%20dictionary%20of%20user%20defined%20formats%2C%20as%20explained%20here%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fformatjs.io%2Fguides%2Fmessage-syntax%2F%23custom-formats%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20For%20example%2C%20a%20valid%20dictionary%20of%20formats%20would%20be%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this.formats%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20%20%20number%3A%20%7B%20USD%3A%20%7B%20style%3A%20'currency'%2C%20currency%3A%20'USD'%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fformats%3A%7Btype%3AObject%2Cvalue%3Afunction%20value()%7Breturn%7B%7D%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Translates%20a%20string%20to%20the%20current%20%60language%60.%20Any%20parameters%20to%20the%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20string%20should%20be%20passed%20in%20order%2C%20as%20follows%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%60localize(stringKey%2C%20param1Name%2C%20param1Value%2C%20param2Name%2C%20param2Value)%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Flocalize%3A%7Btype%3AFunction%2Ccomputed%3A'__computeLocalize(language%2C%20l10n%2C%20formats)'%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Upon%20attachment%2C%20if%20this%20site%20has%20custom%20copy%2C%20lets%20load%20it%20from%20an%20external%20resource.%0A%20%20%20%20%20%20%20%20*%2Fattached%3Afunction%20attached()%7Bif(this.overrides)%7Bthis.loadL10nResources()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20a%20computed%20%60localize%60%20method%2C%20based%20on%20the%20current%20%60language%60.%0A%20%20%20%20%20%20%20%20%20*%2F__computeLocalize%3Afunction%20__computeLocalize(language%2Cl10n%2Cformats)%7Bvar%20proto%3Dthis.constructor.prototype%3Bthis.__checkLocalizationCache(proto)%3B%2F%2F%20Every%20time%20any%20of%20the%20parameters%20change%2C%20invalidate%20the%20strings%20cache.%0Aproto.__localizationCache.messages%3D%7B%7D%3Breturn%20function()%7Bvar%20key%3Darguments%5B0%5D%3Bif(!key%7C%7C!l10n%7C%7C!language%7C%7C!l10n%5Blanguage%5D)return%3B%2F%2F%20Cache%20the%20key%2Fvalue%20pairs%20for%20the%20same%20language%2C%20so%20that%20we%20don't%0A%2F%2F%20do%20extra%20work%20if%20we're%20just%20reusing%20strings%20across%20an%20application.%0Avar%20translatedValue%3Dl10n%5Blanguage%5D%5Bkey%5D%3Bif(!translatedValue)%7B%2F%2F%20A%20complete%20miss%20happened.%20Return%20empty%20value%20%26%20notify%20the%20console.%0A%2F%2Fconsole.warn('WARNING%3A%20A%20localization%20value%20was%20missing%20for%20component%3A%20'%2C%20this.localName%2C%20'key%3A%20'%2C%20key%2C%20'language%3A%20'%2C%20language)%3B%0Areturn''%3B%7Dvar%20messageKey%3Dkey%2BtranslatedValue%3Bvar%20translatedMessage%3Dproto.__localizationCache.messages%5BmessageKey%5D%3Bif(!translatedMessage)%7BtranslatedMessage%3Dnew%20IntlMessageFormat(translatedValue%2Clanguage%2Cformats)%3Bproto.__localizationCache.messages%5BmessageKey%5D%3DtranslatedMessage%3B%7Dvar%20args%3D%7B%7D%3Bfor(var%20i%3D1%3Bi%3Carguments.length%3Bi%2B%3D2)%7Bargs%5Barguments%5Bi%5D%5D%3Darguments%5Bi%2B1%5D%3B%7Dreturn%20translatedMessage.format(args)%3B%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Fetches%20remote%20l10n%20resource%20from%20the%20CDN.%20If%20multiple%20components%20request%20the%20same%20resource%2C%0A%20%20%20%20%20%20%20%20*%20they'll%20received%20a%20cached%20version.%0A%20%20%20%20%20%20%20%20*%2FloadL10nResources%3Afunction%20loadL10nResources()%7Bvar%20path%3D'https%3A%2F%2Fwww.gannett-cdn.com%2Fgannett-web%2Fconfig%2Fl10n%2F'%2Bthis.overrides%2B'.json'%3Bvar%20proto%3Dthis.constructor.prototype%3Bthis.__checkLocalizationCache(proto)%3B%2F%2F%20If%20the%20global%20ajax%20object%20has%20not%20been%20initialized%2C%20initialize%20and%20cache%20it.%0Avar%20ajax%3Dproto.__localizationCache.ajax%3Bif(!ajax)%7Bajax%3Dproto.__localizationCache.ajax%3Ddocument.createElement('iron-ajax')%3B%7Dvar%20request%3Dproto.__localizationCache.requests%5Bpath%5D%3Bif(!request)%7Bajax.url%3Dpath%3Bvar%20req%3Dajax.generateRequest()%3Breq.completes.then(this.__onRequestResponse.bind(this)%2Cthis.__onRequestError.bind(this))%3B%2F%2F%20Cache%20the%20instance%20so%20that%20it%20can%20be%20reused%20if%20the%20same%20path%20is%20loaded.%0Aproto.__localizationCache.requests%5Bpath%5D%3Dreq%3B%7Delse%7Brequest.completes.then(this.__onRequestResponse.bind(this)%2Cthis.__onRequestError.bind(this))%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20If%20we%20fetch%20external%20l10n%2C%20we%20need%20to%20intelligently%20merge%20it%20in%20with%20this%20components%20l10n.%0A%20%20%20%20%20%20%20%20*%20In%20the%20external%20resources%2C%20they%20are%20required%20to%20prefix%20all%20keys%20with%20the%20components%20name%0A%20%20%20%20%20%20%20%20*%20(e.g.%20el-social-sharing)%2C%20so%20%60share-this-page%60%20INSIDE%20the%20component%20matches%0A%20%20%20%20%20%20%20%20*%20with%20%60el-social-sharing.share-this-page%60%20in%20the%20external%20l10n%20file.%0A%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20*%20We%20only%20perform%20the%20computation%20on%20the%20current%20language.%20Other%20languages%20do%20not%20get%20merged%20in%20for%20performance.%0A%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20*%20This%20causes%20a%20re-computation%20and%20dirties%20the%20element.%0A%20%20%20%20%20%20%20%20*%2F__onRequestResponse%3Afunction%20__onRequestResponse(event)%7Bvar%20response%3Devent.response%3B%2F%2F%20Deeply%20merge%20the%20response%0Avar%20l10nCache%3Dthis.l10n%7C%7C%7B%7D%3Bfor(var%20elName%20in%20l10nCache%5Bthis.language%5D)%7Bvar%20externalLocalizedResource%3Dresponse%5Bthis.language%5D%5Bthis.localName%2B'.'%2BelName%5D%3Bif(externalLocalizedResource)%7Bl10nCache%5Bthis.language%5D%5BelName%5D%3DexternalLocalizedResource%3B%7D%7D%2F%2F%20Force%20a%20re-compute%20by%20setting%20to%20null%20then%20its%20actual%20new%20value.%0Athis.l10n%3Dnull%3Bthis.l10n%3Dl10nCache%3B%7D%2C__onRequestError%3Afunction%20__onRequestError(event)%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Uh%20oh!%20There's%20really%20no%20recovering%20from%20this%20error.%20Lets%20just%20try%20our%20best%20with%20what%20we%20have%20%C2%AF%5C_(%E3%83%84)_%2F%C2%AF%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Pray%20that%20the%20component%20has%20all%20the%20needed%20copy.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F%2F%2F%20console.warn('WARNING%3A%20The%20external%20localization%20resource%20for%20this%20site%20failed.')%3B%0A%7D%2C__checkLocalizationCache%3Afunction%20__checkLocalizationCache(proto)%7B%2F%2F%20do%20nothing%20if%20proto%20is%20undefined.%0Aif(proto%3D%3D%3Dundefined)return%3B%2F%2F%20In%20the%20event%20proto%20not%20have%20__localizationCache%20object%2C%20create%20it.%0Aif(proto%5B'__localizationCache'%5D%3D%3D%3Dundefined)%7Bproto%5B'__localizationCache'%5D%3D%7Brequests%3A%7B%7D%2Cmessages%3A%7B%7D%2Cajax%3Anull%7D%3B%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fgallium-i18n.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fgallium-i18n.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/gallium-i18n.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PartnerUtils%20*%2Ffunction%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7Dvar%20PartnerUtils%3D%7Bcreated%3Afunction%20created()%7Bthis.adLoggerEnabled%3D!!this.getUrlParamValue('usat_console')%3B%7D%2C_loadScript%3Afunction%20_loadScript(url)%7Breturn%20new%20Promise(function(resolve%2Creject)%7Bvar%20element%3Ddocument.createElement('script')%3Belement.async%3Dtrue%3Belement.src%3Durl%3B%2F%2F%20Important%20success%20and%20error%20for%20the%20promise%0Aelement.onload%3Dfunction()%7Bresolve(url)%3B%7D%3Belement.onerror%3Dfunction()%7Breject(url)%3B%7D%3Bdocument.body.appendChild(element)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Deep%20dive%20into%20an%20object%20without%20crashing%20on%20null%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20%20%20%20%20%20%20%20%20%20obj%20%20object%20to%20retrieve%20a%20nested%20value%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7B...String%7CNumber%7D%20path%20comma%20separated%20list%20of%20keys%20to%20retrieve%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20returned%20value%20or%20undefined%20if%20does%20not%20exist%0A%20%20%20%20%20%20%20%20%20*%2F_getNested%3Afunction%20_getNested(obj)%7Bif(obj)%7Bfor(var%20_len%3Darguments.length%2Cpath%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bpath%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dreturn%20path.reduce(function(obj%2Carg)%7Breturn%20obj%26%26obj%5Barg%5D%3B%7D%2Cobj)%3B%7Dreturn%20undefined%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Checks%20the%20url%20query%20parameters%20for%20the%20key%20and%20if%20set%20returns%20it's%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20%20%20%20%20%20%20%20%20key%20Query%20Parameter%20key%20to%20lookup%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7CBoolean%7D%20%20%20%20%20Key's%20corresponding%20value%20or%20false%20if%20not%20set.%0A%20%20%20%20%20%20%20%20%20*%2FgetUrlParamValue%3Afunction%20getUrlParamValue(key)%7Bvar%20value%3DdecodeURI((new%20RegExp(key%2B'%3D'%2B'(.%2B%3F)(%26%7C%24)').exec(this._getQueryString())%7C%7C%5B''%2C'false'%5D)%5B1%5D)%3Bif(value%3D%3D%3D'false')%7Breturn%20false%3B%7Delse%20if(value%3D%3D%3D'true')%7Breturn%20true%3B%7Dreturn%20value%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20query%20string%20for%20current%20location%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20returns%20query%20string%0A%20%20%20%20%20%20%20%20%20*%2F_getQueryString%3Afunction%20_getQueryString()%7Breturn%20window.location.search%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20within%2C%20above%2C%20or%20below%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20elm%20element%20to%20check%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20threshold%20pixel%20threshold%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20viewHeight%20client%2Fwindow%20height%20override%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20Whether%20the%20element%20is%20'visible'%2C%20'above'%2C%20or%20'below'%20relative%20to%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20*%2F_checkVisible%3Afunction%20_checkVisible(elm%2Cthreshold%2CviewHeight)%7Bthreshold%3Dthreshold%7C%7C0%3BviewHeight%3DviewHeight%7C%7CMath.max(document.documentElement.clientHeight%2Cwindow.innerHeight)%3Bvar%20rect%3Delm.getBoundingClientRect()%2Cabove%3Drect.bottom-threshold%3C0%2Cbelow%3Drect.top-viewHeight%2Bthreshold%3E%3D0%3Breturn%20above%3F'above'%3Abelow%3F'below'%3A'visible'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20current%20coordinates%20for%20an%20element%20relative%20to%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20el%20element%20to%20get%20coordinates%20for%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20obj%20with%20%60top%60%20and%20%60left%60%20properties%0A%20%20%20%20%20%20%20%20%20*%20*%2F_getCoords%3Afunction%20_getCoords(el)%7Bvar%20box%3Del.getBoundingClientRect()%2CdocEl%3Ddocument.documentElement%2Ctop%3Dbox.top%2Bwindow.pageYOffset-(docEl.clientTop%7C%7C0)%2Cleft%3Dbox.left%2Bwindow.pageXOffset-(docEl.clientLeft%7C%7C0)%3Breturn%7Btop%3AMath.round(top)%2Cleft%3AMath.round(left)%7D%3B%7D%2C_deferred%3Afunction%20_deferred(timeout%2CtimeoutCallback)%7Bvar%20_this%3Dthis%3Bthis.promise%3Dnew%20Promise(function(resolve%2Creject)%7B_this.done%3Dfalse%3B_this.reject%3Dreject%3B_this.resolve%3Dresolve%3Bif(timeout%26%26typeof%20timeout%3D%3D%3D'number')%7BsetTimeout(function()%7Bif(!_this.done)%7Bif(typeof%20timeoutCallback%3D%3D%3D'function')%7BtimeoutCallback(resolve)%3B%7Delse%7Bresolve()%3B%7D%7D%7D%2Ctimeout)%3B%7D%7D)%3Bthis.promise.then(function()%7B_this.done%3Dtrue%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Attempts%20to%20parse%20string.%20If%20an%20error%20is%20encountered%20return%20the%20fallback%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20json%20%20%20%20%20JSON%20String%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20%20%20%20fallback%20Fallback%20value%20to%20return%20if%20an%20error%20is%20encountered%20parsing%20the%20string%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Parsed%2Ffallback%20value%0A%20%20%20%20%20%20%20%20%20*%2F_parseJsonArray%3Afunction%20_parseJsonArray(json%2Cfallback)%7Btry%7Bvar%20data%3DJSON.parse(json)%3Bif(Array.isArray(data))%7Breturn%20data%3B%7D%7Dcatch(e)%7B%7D%2F%2F%20Parsing%20error%2C%20continue%20below%0A%2F%2F%20return%20a%20*copy*%20of%20our%20fallback%20when%20appropriate%0Aif(Array.isArray(fallback))%7Breturn%20Object.assign(%5B%5D%2Cfallback)%3B%7Dreturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Attempts%20to%20parse%20string.%20If%20an%20error%20is%20encountered%20return%20the%20fallback%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20json%20%20%20%20%20JSON%20String%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20%20%20%20%20fallback%20Fallback%20value%20to%20return%20if%20an%20error%20is%20encountered%20parsing%20the%20string%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Parsed%2Ffallback%20value%0A%20%20%20%20%20%20%20%20%20*%2F_parseJsonObject%3Afunction%20_parseJsonObject(json%2Cfallback)%7Btry%7Bvar%20data%3DJSON.parse(json)%3Bif(Object.prototype.toString.call(data)%3D%3D%3D'%5Bobject%20Object%5D')%7Breturn%20data%3B%7D%7Dcatch(e)%7B%7D%2F%2F%20Parsing%20error%2C%20continue%20below%0A%2F%2F%20return%20a%20*copy*%20of%20our%20fallback%20when%20appropriate%0Aif(Object.prototype.toString.call(fallback)%3D%3D%3D'%5Bobject%20Object%5D')%7Breturn%20Object.assign(%7B%7D%2Cfallback)%3B%7Dreturn%7B%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Broadcast%20event%20polyfill%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20eventName%20Event%20Name%20to%20broadcast%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20params%20%20%20%20Data%20to%20be%20attached%20to%20the%20broadcast%20event%0A%20%20%20%20%20%20%20%20%20*%2F_broadcastEvent%3Afunction%20_broadcastEvent(eventName%2Cparams)%7Bvar%20parameters%3Dparams%7C%7C%7Bbubbles%3Atrue%2Ccancelable%3Afalse%2Cdetail%3Aundefined%7D%3Bif(typeof%20window%5B'CustomEvent'%5D%3D%3D%3D'function')%7Bwindow.dispatchEvent(new%20CustomEvent(eventName%2Cparameters))%3B%7Delse%7Bvar%20docEvt%3Ddocument.createEvent('CustomEvent')%3BdocEvt.initCustomEvent(eventName%2Cparameters.bubbles%2Cparameters.cancelable%2Cparameters.detail)%3Bwindow.dispatchEvent(docEvt)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Filters%20an%20array%20of%20sizes%20to%20remove%20the%20'fluid'%20size%20from%20the%20array%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20Array%20of%20sizes%20for%20the%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20Array%20of%20sizes%20for%20the%20slot%20with%20'fluid'%20removed%20if%20present%0A%20%20%20%20%20%20%20%20%20*%2F_filterFluidSize%3Afunction%20_filterFluidSize(sizes)%7Bvar%20fluidIdx%3Dsizes.indexOf('fluid')%3Bif(fluidIdx%3D%3D%3D-1)return%20sizes%3B%2F%2F%20Remove%20fluid%20as%20a%20size%0Areturn%20sizes.reduce(function(sizeOutput%2Csize)%7Bif(size%3D%3D%3D'fluid')return%20sizeOutput%3BsizeOutput.push(size)%3Breturn%20sizeOutput%3B%7D%2C%5B%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Check%20to%20see%20if%20we%20are%20%22mobile%22%20sized%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BBoolean%7D%20True%20is%20the%20screen%20is%20considered%20mobile%0A%20%20%20%20%20%20%20%20%20*%2F_inMobileEnvironment%3Afunction%20_inMobileEnvironment()%7Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bif(typeof%20window.ga_data.ads.inMobileEnvironment%3D%3D%3D'undefined')%7Bwindow.ga_data.ads.inMobileEnvironment%3Dwindow.innerWidth%3C768%3B%7Dreturn%20window.ga_data.ads.inMobileEnvironment%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Transverses%20the%20provided%20attribute%20of%20the%20el's%20parents%20until%20it%20finds%20one%20with%20a%20non-zero%20value.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BElement%7D%20el%20%20%20Initial%20parent%20element%20to%20check%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20%20attr%20Attribute%20to%20check%20the%20value%20of%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BNumber%7D%20%20%20%20%20%20%20First%20non-zero%20value%20found%0A%20%20%20%20%20%20%20%20%20*%2F_getNonZeroAttr%3Afunction%20_getNonZeroAttr(el%2Cattr)%7Bvar%20val%3Del%5Battr%5D%3Bwhile(val%3D%3D%3D0)%7Bel%3Del.parentNode%3Bval%3Del%5Battr%5D%3B%7Dreturn%20val%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Log%20info%20to%20console%20if%20debug%20mode%20is%20enabled.%0A%20%20%20%20%20%20%20%20%20*%20*%2F_log%3Afunction%20_log(msg)%7Bvar%20elapsed%3Dvoid%200%2Cargs%3DArray.prototype.slice.call(arguments%2C1)%3Bif(this.adLoggerEnabled%26%26window.console)%7Bvar%20_console%3Belapsed%3D(performance.now()%2F1000).toFixed(3)%3Bmsg%3D'AD%20ELEMENT%20('%2Bthis.id%2B')%20%3A%20'%2Belapsed%2B's%20%3A%20'%2Bmsg%3B(_console%3Dconsole).info.apply(_console%2C%5Bmsg%5D.concat(_toConsumableArray(args)))%3B%2F%2F%20eslint-disable-line%20no-console%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Retrieves%20override%20values%20from%20request%20query%20parameters.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BObject%7D%20override%20map%0A%20%20%20%20%20%20%20%20%20*%20*%2F_getOverrides%3Afunction%20_getOverrides()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Override%20params%20to%20check%20for%0Avar%20params%3D%5B'usatai'%2C'usatan'%2C'usatl'%5D%3B%2F%2F%20Set%20each%20param%20with%20its%20string%20value%2C%20defaulting%20to%20%60null%60%0Avar%20overrides%3D%7B%7D%3Bparams.forEach(function(param)%7Bvar%20val%3D_this2.getUrlParamValue(param)%3Boverrides%5Bparam%5D%3Dval%3Fval.toString()%3Anull%3B%7D)%3Breturn%20overrides%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20%22Ad%20Free%22%20handling%20should%20be%20applied%20to%20the%20page%0A%20%20%20%20%20%20%20%20%20*%2FisAdFreeExperience%3Afunction%20isAdFreeExperience()%7Bif(window.ga_data%26%26window.ga_data.utils%26%26window.ga_data.utils.isAdFreeExperience)%7Breturn%20window.ga_data.utils.isAdFreeExperience()%3B%7Dreturn%20this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'scroll'%2C'enabled')%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Utils%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerUtils%3DPartnerUtils%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-utils.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-utils.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/partner-utils.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-posterscroll%3E%60%20adds%20a%20Posterscroll%20ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-posterscroll'%2CdesignIds%3A'A12'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2Csticky%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cstuck%3A%7Btype%3AString%2Cvalue%3A''%7D%2CheaderOffset%3A%7Btype%3ANumber%2Cvalue%3A56%7D%2CautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2CwinHeight%3A%7Btype%3ANumber%2Cvalue%3Awindow.innerHeight%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20the%20setup%20of%20the%20posterscroll%20ad%20unit.%20Creates%20an%20additional%20container%20that%20will%20be%20used%20for%20sticking%20the%20ad.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.top%3Dthis.headerOffset%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7B%2F%2F%20Set%20top%20offset%20based%20on%20header%20size%20and%20top%20margin%0Avar%20style%3Dwindow.getComputedStyle(_this%2Cnull)%3Bvar%20topMargin%3DparseInt(style.marginTop%2C10)%3B_this.top%3D_this.headerOffset%2BtopMargin%3B%2F%2F%20Use%20%60position%3Asticky%60%20where%20supported%0Aif(_this._positionStickySupported())%7B_this.positionSticky%3Dtrue%3B_this._setupPositionSticky()%3B%7Delse%7B%2F%2F%20Otherwise%20use%20a%20scroll%20listener%0A_this._setupScrollListenerSticky()%3B%7D%7D%2C%5B%5D)%3B%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B300%2C250%5D%2C%5B300%2C600%5D%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7Bvar%20front%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3Breturn%20front%3F'poster_scroll_front'%3A'poster_scroll'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Checks%20to%20see%20if%20%60position%3A%20sticky%60%20is%20supported%20on%20current%20browser.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Stolen%20from%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fgithub.com%2Fdollarshaveclub%2Fstickybits%2Fblob%2F93b905d76b47d30b34ff75c61158e226cc4d7ae1%2Fsrc%2Fstickybits.js%23L106-L116%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_positionStickySupported%3Afunction%20_positionStickySupported()%7Bvar%20prefix%3D%5B''%2C'-o-'%2C'-webkit-'%2C'-moz-'%2C'-ms-'%5D%3Bvar%20test%3Ddocument.head.style%3Bfor(var%20i%3D0%3Bi%3Cprefix.length%3Bi%2B%3D1)%7Btest.position%3Dprefix%5Bi%5D%2B'sticky'%3B%7Dvar%20stickyProp%3D'fixed'%3Bif(typeof%20test.position!%3D%3D'undefined')stickyProp%3Dtest.position%3Btest.position%3D''%3Breturn%20stickyProp%3D%3D%3D'sticky'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20up%20our%20element%20as%20sticky%20using%20%60position%3A%20sticky%3B%60%20CSS%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_setupPositionSticky%3Afunction%20_setupPositionSticky()%7Bthis.style.position%3D'sticky'%3Bthis.style.top%3Dthis.top%2B'px'%3Bthis.style.marginBottom%3D'0px'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20up%20our%20element%20as%20sticky%20using%20scroll%20listeners%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_setupScrollListenerSticky%3Afunction%20_setupScrollListenerSticky()%7Bvar%20_this2%3Dthis%3Bvar%20slotContainer%3Dvoid%200%2Cparent%3Dthis.parentNode%3B%2F%2F%20Can't%20find%20a%20parent%2C%20or%20I'm%20inactive%0Aif(!parent%7C%7Cthis.inactive)return%3B%2F%2F%20Wrap%20this%20in%20poster-scroll%20div%0Athis.slotContainer%3DslotContainer%3Ddocument.createElement('div')%3BslotContainer.className%3D'poster-scroll'%3Bparent.insertBefore(slotContainer%2Cthis)%3BslotContainer.appendChild(this)%3B%2F%2F%20setup%20resize%20listener%0Awindow.addEventListener('ga-resize'%2Cfunction()%7Breturn%20_this2._resizeListener()%3B%7D%2Cfalse)%3Bdocument.addEventListener('DOMContentLoaded'%2Cfunction()%7B%2F%2F%20Catch%20instance%20where%20lazy%20ad%20needs%20to%20load%2C%20when%20a%20user%20loads%20the%20page%20halfway%20down%20the%20rail%0A_this2._setupSticky()%3B%7D)%3B%7D%2CslotAttached%3Afunction%20slotAttached()%7Bvar%20_this3%3Dthis%3B%2F%2F%20Adjust%20our%20ad%20request%20sizes%2C%20so%20we%20don't%20load%20anything%20taller%20than%20the%20window%20height%0Athis.sizes%3Dthis.sizes.reduce(function(arr%2Csize)%7Bif(size%5B1%5D%3C%3D_this3.winHeight-_this3.top%7C%7Csize%5B1%5D%3D%3D%3D250)arr.push(size)%3Breturn%20arr%3B%7D%2C%5B%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Listener%20function%20for%20the%20window%20resize%20event.%20Will%20reset%20the%20sticky%20ad%20after%20the%20user%20stops%20resizing%20the%20screen.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_resizeListener%3Afunction%20_resizeListener()%7Bvar%20_this4%3Dthis%3B%2F%2F%20Only%20fire%20when%20a%20users%20stops%20resizing%20for%20more%20500ms%0Aif(this._timeout)%7BPolymer.Async.timeOut.cancel(this._timeout)%3B%7Dthis._timeout%3DPolymer.Async.timeOut.after(500).run(function()%7B_this4._setupSticky()%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Called%20when%20render%20has%20finished%20for%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FrenderEnded%3Afunction%20renderEnded()%7Bif(!this.positionSticky)%7Bthis._setupSticky()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Set's%20up%20everything%20needed%20to%20make%20this%20ad%20slot%20sticky.%20Sets%20heights%2Fwidths%2C%20and%20variables%20needed%20for%20calculations%2C%20then%20starts%20observing%20if%20there%20is%20enough%20space%20for%20a%20sticky%20ad.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setupSticky%3Afunction%20_setupSticky()%7Bvar%20_this5%3Dthis%3Bthis._setHeight()%3Bif(this.sticky%26%26this.lastPosition%3D%3D%3Dundefined)%7Bthis.lastPosition%3D0%3Bwindow.addEventListener('ga-scroll'%2Cfunction()%7Breturn%20_this5._scrollListener()%3B%7D%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Alternative%20for%20when%20%60position%3Asticky%60%20is%20not%20supported.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_scrollListener%3Afunction%20_scrollListener()%7Bvar%20slotContainerPos%3Dthis.slotContainer.getBoundingClientRect()%2CcurrentPosition%3DslotContainerPos.top%2Ctype%3DcurrentPosition%3Ethis.lastPosition%3F'ceil'%3A'floor'%3Bthis._setPosition(type%2CslotContainerPos)%3Bthis.lastPosition%3DcurrentPosition%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Checks%20where%20the%20ad%20slot%20container%20is%20on%20the%20page%2C%20and%20fixes%20the%20ad%20slot%20accordingly%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20type%20%20%20%20%20%20%20%20%20%20%20%20%20%20Type%20of%20listener%20calling%20the%20function%20('ceil'%2C%20'floor')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20slotContainerPos%20%20Bounding%20Client%20Rectangle%20object%20for%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setPosition%3Afunction%20_setPosition(type%2CslotContainerPos)%7Bvar%20topOffset%3Dthis.stuck%3D%3D%3D'top'%26%26type%3D%3D%3D'ceil'%3Fthis.headerOffset%3Athis.headerOffset%2Bthis.topMargin%3Bif(slotContainerPos.top%3CtopOffset%7C%7Ctype%3D%3D%3D'ceil'%26%26this.stuck%3D%3D%3D'none'%26%26slotContainerPos.top%3D%3D%3DtopOffset)%7Bif(slotContainerPos.bottom%3E%3Dthis.slotHeight%2BtopOffset)%7Bthis._fixToTop()%3B%7Delse%7Bthis._fixToFloor()%3B%7D%7Delse%7Bthis._unFix()%3B%7Dif(this.lazy)%7Bthis.lazyRenderCheck()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Fixes%20the%20ad%20slot%20to%20the%20floor%20of%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_fixToFloor%3Afunction%20_fixToFloor()%7Bif(this.stuck!%3D%3D'floor')%7Bthis.stuck%3D'floor'%3Bthis.style.bottom%3D'0px'%3Bthis.style.top%3Dnull%3Bthis.style.position%3D'absolute'%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Fixes%20the%20ad%20slot%20to%20the%20top%20of%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_fixToTop%3Afunction%20_fixToTop()%7Bif(this.stuck!%3D%3D'top')%7Bthis.stuck%3D'top'%3Bthis.style.bottom%3D0%3Bthis.style.position%3D'fixed'%3Bthis.style.top%3Dthis.headerOffset%2B'px'%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Un-fixes%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_unFix%3Afunction%20_unFix()%7Bif(this.stuck!%3D%3D'none')%7Bthis.stuck%3D'none'%3Bthis.style.bottom%3Dnull%3Bthis.style.position%3D'relative'%3Bthis.style.top%3Dnull%3Bthis.style.width%3Dnull%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20the%20height%20of%20the%20ad%20slot%2C%20ad%20slot%20container%2C%20and%20sets%20variables%20used%20for%20calculating%20where%20to%20fix%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setHeight%3Afunction%20_setHeight()%7Bvar%20offset%3Dvoid%200%2CslotContainerHeight%3Dvoid%200%2CparentHeight%3Dvoid%200%2CslotContainer%3Dthis.slotContainer%2Cparent%3DslotContainer.parentNode%2Cad%3Dthis.querySelector('%5Bid%24%3D__container__%5D')%7C%7Cthis%2CadHeight%3Dad.clientHeight%2CslotStyles%3Dwindow.getComputedStyle(this%2Cnull)%3B%2F%2Freset%20values%20before%20we%20attempt%20to%20get%20them%20again%0Athis.style.width%3Dnull%3BslotContainer.style.height%3Dnull%3BparentHeight%3Dthis._getNonZeroAttr(parent%2C'clientHeight')%3Boffset%3Dthis._getCoords(parent).top-this._getCoords(slotContainer).top%3BslotContainerHeight%3DparentHeight%2Boffset%3Bthis.slotHeight%3DadHeight%2BparseInt(slotStyles.paddingTop%2C10)%2BparseInt(slotStyles.paddingBottom%2C10)%3Bthis.topMargin%3DparseInt(slotStyles.marginTop%2C10)%3Bthis.winHeight%3Dwindow.innerHeight%3B%2F%2F%20adjust%20the%20width%2Fheight%20of%20the%20ad%0Athis.style.height%3DadHeight%2B'px'%3Bif(this.stuck%3D%3D%3D'top'%7C%7Cthis.stuck%3D%3D%3D'floor')%7Bthis.style.width%3Dthis._getNonZeroAttr(this.parentNode%2C'clientWidth')%2B'px'%3B%7D%2F%2F%20Check%20to%20see%20if%20the%20slot%20container%20is%20large%20enough%20to%20make%20this%20sticky%0Athis.sticky%3Dthis.slotHeight%3CslotContainerHeight%3Bif(this.sticky)%7BslotContainer.style.height%3DslotContainerHeight%2B'px'%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-posterscroll%2Fpartner-posterscroll.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-posterscroll%2Fpartner-posterscroll.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-posterscroll/partner-posterscroll.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-poster%3E%60%20adds%20a%20Poster%20Ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-poster'%2CdesignIds%3A'A8'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20This%20unit%20has%20eligable%20sizes%20for%20prebid%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligable%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligable%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20auto-refreshes%20*%2FautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A250%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B300%2C250%5D%2C%5B300%2C600%5D%2C%5B300%2C1050%5D%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7Bvar%20front%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3Breturn%20front%3F'poster_front'%3A'poster'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-poster%2Fpartner-poster.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-poster%2Fpartner-poster.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-poster/partner-poster.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-leaderboard%3E%60%20adds%20a%20Leaderboard%20ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-leaderboard'%2CdesignIds%3A'A11'%2Cproperties%3A%7B%2F**%20DFP%20Placement%20Name%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A'leaderboard_atf'%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A90%7D%2C%2F**%20Render%20Behavior%20*%2FrenderBehavior%3A%7Btype%3AString%2Cvalue%3A'load'%7D%2C%2F**%20Fetch%20Behavior%20*%2FfetchBehavior%3A%7Btype%3AString%2Cvalue%3A'load'%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Bvar%20sizes%3D%5B%5B728%2C90%5D%5D%3Bif(this._getNested(window%2C'ga_data'%2C'route'%2C'useParamount'))%7Bsizes.push(%5B'fluid'%5D)%3B%7Dreturn%20sizes%3B%7D%2C%2F**%20NSF%20Targeting%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Bif(this._getNested(window%2C'ga_data'%2C'route'%2C'useParamount'))%7Bthis.nsfTargeting%3D%5B'paramount'%2C'paramount-21_9'%5D%3B%7D%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-leaderboard%2Fpartner-leaderboard.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-leaderboard%2Fpartner-leaderboard.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-leaderboard/partner-leaderboard.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-inline%3E%60%20Inline%20ad%20unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-inline'%2CdesignId%3A'A9'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A'inline_flex'%7D%2C%2F**%20Lazy%20Load%20*%2Flazy%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20prebid%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Conditional%20sizes%20to%20add%20when%20there%20is%20enough%20available%20width%20*%2FconditionalSizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%5B%5B728%2C90%5D%5D%3B%7D%7D%2Cgallery%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B'fluid'%2C%5B300%2C250%5D%2C%5B3%2C3%5D%5D%3B%7D%2C%2F**%20NSF%20Targeting%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B'paramount'%2C'paramount-16_9'%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Hack%20to%20make%20conditional%20size%20exceptions%20for%20gallery%20units%0A%2F%2F%20TODO%3A%20refactor%20partner-slot%20to%20avoid%20doing%20this%20here%0A%2F%2F%20OR%20remove%20when%20%60%3Cmedia-gallery-vertical%3E%60%20gets%20refactored%0Aif(this.gallery)%7Bthis.lazy%3Dfalse%3Bthis.conditionalSizes%3D%5B%5D%3B%7Dif(this._getNested(window%2C'ga_data'%2C'route'%2C'basePageType')%3D%3D%3D'vertical%20asset%20gallery'%26%26this.placement%3D%3D%3D'inline_flex')%7Bthis.placement%3D'inline_flex_gallery'%3B%7D%7D%2CrenderEnded%3Afunction%20renderEnded(event)%7Bif(event.size%26%26event.size%5B0%5D%3D%3D%3D728%26%26event.size%5B1%5D%3D%3D%3D90)%7Bthis.classList.add('partner-inline-leaderboard')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-inline%2Fpartner-inline.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-inline%2Fpartner-inline.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-inline/partner-inline.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-banner%3E%60%20adds%20a%20Banner%20Ad%20to%20your%20page.%20Mobile%20only%20ad%20unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-banner'%2CdesignId%3A'A1'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2Cmobile%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cbottom%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20preset%20targeting%20*%2FslotTargeting%3A%7Btype%3AObject%2Cvalue%3A%7B%7D%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A50%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B320%2C50%5D%2C%5B300%2C250%5D%5D%3B%7D%2C%2F**%20NSF%20Targeting%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B'paramount'%2C'paramount-5_6'%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Register%20as%20a%20banner%20on%20the%20window%0Awindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.banners%3Dwindow.ga_data.ads.banners%7C%7C%5B%5D%3Bwindow.ga_data.ads.banners.push(this)%3B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%20and%20position%20relative%20to%20other%20banners%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7B%2F%2F%20Set%20top%20vs.%20bottom%20based%20on%20relative%20position%20in%20DOM%0Aif(window.ga_data.ads.banners.indexOf(this)!%3D%3D0)%7Bthis.bottom%3Dtrue%3B%7D%2F%2F%20Set%20section_front%20vs.%20banner%20based%20on%20content%20type%0Avar%20sectionFront%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3B%2F%2F%20Add%20gallery%20designation%0Avar%20gallery%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'basePageType')%3D%3D%3D'vertical%20asset%20gallery'%3F'gallery_'%3A''%3B%2F%2F%20Set%20placement%20using%20top%2Fbottom%20and%20section%2Fbanner%20values%0Avar%20prefix%3DsectionFront%3F'mobileweb-section_front'%3A'mobileweb-'%2Bgallery%2B'banner'%3Bvar%20suffix%3Dthis.bottom%3F'bottom'%3A'top'%3Breturn%20prefix%2B'_'%2Bsuffix%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-banner%2Fpartner-banner.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-banner%2Fpartner-banner.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-banner/partner-banner.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%20Adds%20header%20bidding%20functionality%20to%20an%20ad.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerBid%0A%20%20%20%20%20*%2Fvar%20PartnerBid%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20prebid%20integration%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(this.inactive%7C%7Cthis._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))return%3Bwindow.pbjs%3Dwindow.pbjs%7C%7C%7B%7D%3Bwindow.pbjs.que%3Dwindow.pbjs.que%7C%7C%5B%5D%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3B%2F%2F%20Get%20debug%20params%0Athis.pbDebug%3Dthis.getUrlParamValue('pb_debug')%3Bthis.apsDebug%3Dthis.getUrlParamValue('aps_debug')%3Bif(this._getNested(this%2C'apsUnit'%2C'mediaType')%3D%3D%3D'video')%7Bthis.aps%3Dthis.apsDebug%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%26%26this.placementConfig.aps%3B%7Dif(!this.prebid%26%26!this.aps)return%3B%2F%2F%20Set%20up%20bidding%20barriers%0Athis.apsSetup%3Dnew%20this._deferred()%3Bthis.pbSetup%3Dnew%20this._deferred()%3B%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.adId%3Dwindow.ga_data.adId%7C%7C0%3Bthis.id%3D'partner-position-'%2Bwindow.ga_data.adId%2B%2B%3B%7Dif(!this.slotId)%7Bthis.slotId%3Dthis.id%3B%7D%2F%2F%20Start%0Athis._refreshBids()%3B%2F%2F%20Lazy%20fetch%20bids%20for%20slots%20that%20are%20lazy%20fetching%0Aif(!this.isVideo%26%26this.lazyFetch)%7Bthis.defineDefer.promise.then(function()%7B_this._setupVendors()%3B%7D)%3B%7Delse%7Bthis._setupVendors()%3B%7D%7D%2C_setupVendors%3Afunction%20_setupVendors()%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%3B%2F%2F%20Setup%20Prebid.js%20if%20enabled%0Aif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bthis._log('Prebid%20setting%20up')%3Bif(this.isVideo)%7Bthis._setupVideoPrebid(prebidSiteConfig)%3B%7Delse%7Bthis._setupPreBids(prebidSiteConfig)%3B%7D%7D%2F%2F%20setup%20APS%20if%20enabled%0Aif((this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%7C%7Cthis.apsDebug)%26%26this.aps)%7Bthis._log('APS%20setting%20up')%3Bthis._setupAPS()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20Amazon%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_setupAPS%3Afunction%20_setupAPS()%7Bif(!this.apsUnit)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bthis.apsUnit%3D%7BslotID%3A'videoPlayer_plcmt'%2B(this.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt'))%7C%7C4%2Csizes%3Athis._getApsSizes(this.sizes)%7D%3B%7Dthis.apsSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20acceptable%20APS%20sizes%20from%20a%20list%20of%20sizes%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20sizeList%20List%20of%20DFP%20sizes%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20List%20of%20sizes%20to%20pass%20to%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_getApsSizes%3Afunction%20_getApsSizes(sizeList)%7Bvar%20apsSizes%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3CsizeList.length%3Bi%2B%2B)%7Bif(sizeList%5Bi%5D!%3D%3D'fluid')%7BapsSizes.push(sizeList%5Bi%5D)%3B%7D%7Dreturn%20apsSizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20current%20player%20dimensions%20for%20prebid%20params%0A%20%20%20%20%20%20%20%20%20*%2F_getVideoSize%3Afunction%20_getVideoSize()%7Bif(this.videoHeight%26%26this.videoWidth)return%3Bthis.videoHeight%3DMath.round(this.%24.still%26%26this.%24.still.offsetHeight%3Fthis.%24.still.offsetHeight%3Awindow.innerWidth*.5625)%3Bthis.videoWidth%3DMath.round(this.%24.still%26%26this.%24.still.offsetWidth%3Fthis.%24.still.offsetWidth%3Awindow.innerWidth)%3B%7D%2C_setupVideoPrebid%3Afunction%20_setupVideoPrebid(prebidSiteConfig)%7Bthis._log('Setting%20up%20video%20prebid')%3Bthis.bids%3D%5B%5D%3Bthis._getVideoSize()%3Bvar%20ssts%3Dthis.getRawData().ssts%3Bvar%20sz%3Dthis.isMobile%3Fthis.adSettings.sizes.mobile%3Athis.adSettings.sizes.desktop%2CappNexusMainConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CappNexusVideoConfig%3Dthis.prebidConfig.appNexus%7C%7C%7B%7D%2CrubiconMainConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CrubiconVideoConfig%3Dthis.prebidConfig.rubicon%7C%7C%7B%7D%2CopenXConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.openx%2Cthis.prebidConfig.openx%7C%7C%7B%7D)%2CindexConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.index%2Cthis.prebidConfig.index%7C%7C%7B%7D)%2CstickyAdsConfig%3Dthis.prebidConfig.stickyAds%7C%7C%7B%7D%2CsonobiConfig%3Dthis.prebidConfig.sonobi%7C%7C%7B%7D%2CpubmaticConfig%3Dthis.prebidConfig.pubmatic%7C%7C%7B%7D%2CtripleliftConfig%3Dthis.prebidConfig.triplelift%7C%7C%7B%7D%2CundertoneConfig%3Dthis.prebidConfig.undertone%7C%7C%7B%7D%2Cgpid%3D'%2F'%2Bthis.Preroll.iu%2B'%2F'%2Bthis.slotId%3Bif(this._isEnabled('appNexus'%2CappNexusMainConfig)%26%26appNexusVideoConfig.enabled)this._setupAppNexusVideo(appNexusVideoConfig%2Cssts)%3Bif(this._isEnabled('rubicon'%2CrubiconMainConfig)%26%26rubiconVideoConfig.enabled)this._setupRubiconVideo(rubiconVideoConfig%2Cssts)%3Bif(this._isEnabled('openx'%2CopenXConfig))this._setupOpenXVideo(openXConfig)%3Bif(this._isEnabled('index'%2CindexConfig))this._setupIndexVideo(indexConfig)%3Bif(this._isEnabled('stickyads'%2CstickyAdsConfig))this._setupStickyAdsVideo(stickyAdsConfig)%3Bif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobiVideo(sonobiConfig)%3Bif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmaticConfigVideo(pubmaticConfig)%3Bif(this._isEnabled('triplelift'%2CtripleliftConfig))this._setupTripleliftVideo(tripleliftConfig)%3Bif(this._isEnabled('undertone'%2CundertoneConfig))this._setupUndertoneVideo(undertoneConfig)%3Bthis._populateUserIds()%3Bthis.addAdUnits(%5B%5Bsz.width%2Csz.height%5D%5D%2Cgpid)%3B%7D%2C_populateUserIds%3Afunction%20_populateUserIds()%7Bvar%20getNested%3Dthis._getNested%2Cutils%3Dga_data.utils%2CgetParam%3Dutils.getUrlParamValue%2Cpbc%3DgetNested(ga_data%2C'site'%2C'ads'%2C'prebid')%2CliveRampEnabled%3Dutils.isCookieLessBrowser()%26%26getNested(pbc%2C'identityLink'%2C'enabled')%7C%7CgetParam('identitylink')%2CsharedIdEnabled%3DgetNested(pbc%2C'sharedId'%2C'enabled')%7C%7CgetParam('sharedid')%3Bif(!liveRampEnabled%26%26!sharedIdEnabled)%7Breturn%3B%7Dvar%20anonId%3Dvoid%200%2CliverampId%3Dvoid%200%3Bif(sharedIdEnabled)%7BanonId%3Dutils.anonId%3B%7Dif(liveRampEnabled)%7BliverampId%3Dutils.lrEnv%3B%7Dthis.bids.forEach(function(b)%7Bb.userId%3D%7B%7D%3Bb.userIdAsEids%3D%5B%5D%3Bif(liveRampEnabled%26%26liverampId)%7Bb.userId.idl_env%3DliverampId%3Bb.userIdAsEids.push(%7Bsource%3A'liveramp.com'%2Cuids%3A%5B%7Bid%3AliverampId%2Catype%3A3%7D%5D%7D)%3B%7Dif(sharedIdEnabled%26%26anonId)%7Bb.userId.sharedid%3D%7B'id'%3AanonId%7D%3Bb.userIdAsEids.push(%7Bsource%3A'pubcid.org'%2Cuids%3A%5B%7Bid%3AanonId%2Catype%3A1%7D%5D%7D)%3B%7D%7D)%3B%7D%2C_setupAppNexusVideo%3Afunction%20_setupAppNexusVideo(config%2Cssts)%7Bvar%20placementId%3Dthis.getUrlParamValue('pb_video_id')%7C%7Cconfig.placementId%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(placementId)%7Bthis.bids.push(%7Bbidder%3A'appnexusAst'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cposition%3A%5Bthis.placement%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3Bthis._log('Adding%20video%20ad%20unit%20placement'%2CplacementId)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-302%0A%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fprebid.org%2Fdev-docs%2Fbidders%2Frubicon.html%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubiconVideo%3Afunction%20_setupRubiconVideo(config%2Cssts)%7Bvar%20getNested%3Dthis._getNested%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(ssts.topic)%7BtopicArr.push(ssts.topic)%3B%7Dthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.accountId%2CsiteId%3Aconfig.siteId%2CzoneId%3Aconfig.zoneId%2Cvideo%3A%7Blanguage%3A'en'%7D%2Cinventory%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cdomain%3A%5BgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-395%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenXVideo%3Afunction%20_setupOpenXVideo(config)%7Bthis.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3Aconfig.unit.toString()%2CdelDomain%3Aconfig.domain%2Cvideo%3A%7Burl%3Athis.placementConfig.iframed%3Fdocument.referrer%3Awindow.location.href%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-420%0A%20%20%20%20%20%20%20%20%20*%2F_setupIndexVideo%3Afunction%20_setupIndexVideo(config)%7Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(params%26%26params.id%26%26params.siteId)%7Bthis.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7Bid%3Aparams.id%2CsiteID%3Aparams.siteId%2Cvideo%3A%7BsiteID%3Aparams.siteId%2CplayerType%3Aconfig.playerType%2Cprotocols%3Aconfig.supportedVastVersions%2Cmaxduration%3Aconfig.maxDuration%7D%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-332%0A%20%20%20%20%20%20%20%20%20*%2F_setupStickyAdsVideo%3Afunction%20_setupStickyAdsVideo(config)%7Bif(config.zoneId)%7Bthis.bids.push(%7Bbidder%3A'stickyadstv'%2Cparams%3A%7BzoneId%3Aconfig.zoneId%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-530%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobiVideo%3Afunction%20_setupSonobiVideo(config)%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%3Bvar%20TagID%3Dthis._getNested(config%2Cplatform%2C'TagID')%3Bif(TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3ATagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FWP-4177%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fcommunity.pubmatic.com%2Fdisplay%2FOP%2FPubMatic%2BPrebid.js%2BAdapter%2BParameters%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmaticConfigVideo%3Afunction%20_setupPubmaticConfigVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(config.publisherId)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.publisherId%2CadSlot%3Aparams.adSlot%2Cvideo%3A%7Bapi%3Aconfig.supportedVpaidVersions%2Ch%3Athis.videoHeight%2Clinearity%3A1%2Cmaxduration%3Aconfig.maxDuration%2Cmimes%3Aconfig.mimeTypes%2Cminduration%3Aconfig.minDuration%2Cplacement%3Aconfig.placement%2Cplaybackmethod%3Aconfig.playbackmethod%2Cprotocols%3Aconfig.supportedVastVersions%2Cskippable%3Aconfig.skippable%2Cstartdelay%3A0%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%7D%2C_setupTripleliftVideo%3Afunction%20_setupTripleliftVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aconfig.inventoryCode%2Cvideo%3A%7Bcontext%3Aconfig.context%2Ch%3Athis.videoHeight%2Cplacement%3Aconfig.placement%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%2C_setupUndertoneVideo%3Afunction%20_setupUndertoneVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'undertone'%2Cparams%3A%7BplacementId%3Aconfig.placementId%2CpublisherId%3Aconfig.publisherId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20prebid.js%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20prebidSiteConfig%20Site%20specific%20config%20object%20for%20prebid%0A%20%20%20%20%20%20%20%20%20*%2F_setupPreBids%3Afunction%20_setupPreBids(prebidSiteConfig)%7Bvar%20adSize%3Dvoid%200%2CadSizeStr%3Dvoid%200%2CgetNested%3Dthis._getNested%2CadCount%3Dthis.adCount%7C%7Cthis.getAdCount()%2CadUnitPath%3Dthis._generatePath()%2CadUnitSizes%3Dthis._filterFluidSize(this.sizes)%2Clocation%3Dthis.btf%3F'btf'%3A'atf'%2Csection%3DgetNested(window%2C'ga_data'%2C'route'%2C'sectionName')%2Cssts%3DgetNested(window%2C'ga_data'%2C'route'%2C'ssts')%7C%7C''%2CacceptedSizes%3DprebidSiteConfig.sizes%2CappNexusConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CaolConfig%3DprebidSiteConfig.aol%7C%7C%7B%7D%2CcriteoConfig%3DprebidSiteConfig.criteo%7C%7C%7B%7D%2CixConfig%3DprebidSiteConfig.ix%7C%7C%7B%7D%2ConeMobileConfig%3DprebidSiteConfig.onemobile%7C%7C%7B%7D%2CopenxConfig%3DprebidSiteConfig.openx%7C%7C%7B%7D%2CpubmaticConfig%3DprebidSiteConfig.pubmatic%7C%7C%7B%7D%2CsonobiConfig%3DprebidSiteConfig.sonobi%7C%7C%7B%7D%2CrubiconConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CtripleLiftConfig%3DprebidSiteConfig.triplelift%7C%7C%7B%7D%2CkargoConfig%3DprebidSiteConfig.kargo%7C%7C%7B%7D%2CtrustxConfig%3DprebidSiteConfig.trustx%7C%7C%7B%7D%2CyieldmoConfig%3DprebidSiteConfig.yieldmo%7C%7C%7B%7D%3Bthis.bids%3D%5B%5D%3B%2F%2F%20Check%20to%20see%20if%20this%20slot%20has%20a%20size%20that%20we%20can%20bid%20on%0AadSize%3Dthis._getMaxSize(adUnitSizes%2CacceptedSizes)%3Bif(!adSize%7C%7Cthis.inactive)%7Bthis._log('Inactive%2FNo%20valid%20sizes%20for%20bidding.')%3Breturn%20this.prebid%3Dfalse%3B%7DadSizeStr%3DadSize%5B0%5D%2B'x'%2BadSize%5B1%5D%3B%2F%2F%20Sonobi%20Adapter%20Setup%0Aif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobi(sonobiConfig%2CadUnitPath)%3B%2F%2F%20Criteo%20Adapter%20Setup%0Aif(this._isEnabled('criteo'%2CcriteoConfig))this._setupCriteo(criteoConfig%2CadUnitSizes)%3B%2F%2F%20Index%20Exchange%20Adapter%20Setup%0Aif(this._isEnabled('ix'%2CixConfig))this._setupIx(ixConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20OpenX%20Adapter%20Setup%0Aif(this._isEnabled('openx'%2CopenxConfig))this._setupOpenX(openxConfig%2CadUnitSizes%2Csection)%3B%2F%2F%20Rubicon%20Adapter%20Setup%0Aif(this._isEnabled('rubicon'%2CrubiconConfig))this._setupRubicon(rubiconConfig%2Csection%2Cssts%2Clocation%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('appNexus'%2CappNexusConfig))this._setupAppNexus(appNexusConfig%2CadUnitSizes%2Csection%2Cssts%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('tripleLift'%2CtripleLiftConfig))this._setupTripleLift(tripleLiftConfig%2CadUnitSizes)%3B%2F%2F%20Pubmatic%20Adapter%20Setup%0Aif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmatic(pubmaticConfig%2CadSizeStr%2Clocation)%3B%2F%2F%20OneMobile%20by%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('onemobile'%2ConeMobileConfig))this._setupOneMobile(oneMobileConfig%2CadUnitSizes)%3B%2F%2F%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('aol'%2CaolConfig))this._setupAol(aolConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20Kargo%20Adapter%20Setup%0Aif(this._isEnabled('kargo'%2CkargoConfig)%26%26adCount%3D%3D%3D1%26%26this.placement%3D%3D%3D'mobileweb-banner_bottom')this._setupKargo(kargoConfig%2CadUnitSizes)%3B%2F%2F%20Trustx%20Adapter%20Setup%0Aif(this._isEnabled('trustx'%2CtrustxConfig)%26%26(this._inMobileEnvironment()%7C%7Cthis.sticky))this._setupTrustx(trustxConfig%2CadUnitSizes)%3B%2F%2F%20Yieldmo%20Setup%0Aif(this._isEnabled('yieldmo'%2CyieldmoConfig))this._setupYieldmo(yieldmoConfig)%3Bvar%20experiment%3DgetNested(window.ga_data%2C'ads'%2C'experiment')%7C%7C%7B%7D%3Bif(experiment.flag%3D%3D%3D'ordered'%26%26Array.isArray(experiment.params))%7Bvar%20sortArray%3Dexperiment.params%3Bthis.bids.sort(function(a%2Cb)%7Breturn%20sortArray.indexOf(a.bidder)-sortArray.indexOf(b.bidder)%3B%7D)%3B%7Dthis.addAdUnits(adUnitSizes)%3B%7D%2C_isEnabled%3Afunction%20_isEnabled(bidder%2CbidderConfig)%7Breturn%20this.pbDebug%3D%3D%3Dbidder%7C%7C!this.pbDebug%26%26bidderConfig.enabled%26%26!(!bidderConfig.usp%26%26this._noSell())%3B%7D%2C_noSell%3Afunction%20_noSell()%7Bvar%20privacy%3Dwindow.ga_privacy%7C%7C%7Bchoices%3A%7B%7D%7D%3Breturn%20privacy.ccpaApplies%26%26privacy.choices.targeting%3D%3D%3Dfalse%3B%7D%2CaddAdUnits%3Afunction%20addAdUnits(adUnitSizes%2Cgpid)%7Bif(this.bids.length)%7Bvar%20pbUnit%3D%7Bcode%3Athis.slotId%2CmediaTypes%3A%7Bbanner%3A%7Bsizes%3Athis._sortSizes(adUnitSizes)%7D%7D%2Cbids%3Athis.bids%2Cortb2Imp%3A%7Bext%3A%7Bdata%3A%7Badserver%3A%7Badslot%3Agpid%2Cname%3A'gam'%7D%2Cpbadslot%3Agpid%7D%2Cgpid%3Agpid%7D%7D%7D%3Bif(this.isVideo)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bvar%20plcmt%3Dthis.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt')%3BpbUnit.mediaTypes%3D%7Bvideo%3A%7Bapi%3A%5B2%5D%2Ccontext%3A'instream'%2Clinearity%3A1%2Cmaxduration%3A120%2Cmimes%3A%5B'application%2Fjavascript'%2C'video%2Fmp4'%2C'video%2Fwebm'%2C'video%2Fogg'%2C'application%2Fx-mpegURL'%2C'application%2Fdash%2Bxml'%2C'video%2Fx-ms-wmv'%2C'video%2Fms-asf'%5D%2Cstartdelay%3A0%2Csize_id%3A201%2CplayerHeight%3Athis.videoHeight%2CplayerWidth%3Athis.videoWidth%2Cplcmt%3Aplcmt%7C%7C2%2C%2F%2F%20playerSize%20with%20window%20width%2Fheight%20works%20for%20our%20current%20use%20cases%20(iframes%2C%20mobile%20web)%0A%2F%2F%20will%20need%20to%20be%20updated%20once%20more%20use%20cases%20are%20added%0AplayerSize%3A%5Bwindow.innerWidth%2CMath.round(window.innerWidth*.5625)%5D%2Cprotocols%3A%5B2%2C3%2C5%2C6%2C7%2C8%5D%7D%7D%3B%7Dwindow.pbjs.que.push(function()%7Bwindow.pbjs.addAdUnits(pbUnit)%3B%7D)%3B%7Dthis.pbSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Trustx%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Trustx%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTrustx%3Afunction%20_setupTrustx(config%2Csizes)%7Bvar%20_this2%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bplacements.forEach(function(placement)%7B_this2.bids.push(%7Bbidder%3A'trustx'%2Cparams%3A%7Buid%3Aplacement.uid%2Ckeywords%3A%7Btopic%3AtopicArr.filter(Boolean)%2Cbrandsafety%3A_this2._getBrandSafety()%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Kargo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Kargo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupKargo%3Afunction%20_setupKargo(config%2Csizes)%7Bvar%20_this3%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7Bplacement.ids.forEach(function(id)%7B_this3.bids.push(%7Bbidder%3A'kargo'%2Cparams%3A%7BplacementId%3Aid%7D%7D)%3B%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Aol%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupAol%3Afunction%20_setupAol(config%2CadUnitPath%2Csizes)%7Bvar%20_this4%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this4.bids.push(%7Bbidder%3A'aol'%2Cparams%3A%7Bplacement%3Aplacement.id%2Cnetwork%3Aconfig.network%2Calias%3AadUnitPath%2Cserver%3Aconfig.server%2CsizeId%3Aplacement.sizeId%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OneMobile%20by%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20OneMobile%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupOneMobile%3Afunction%20_setupOneMobile(config%2Csizes)%7Bvar%20_this5%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this5.bids.push(%7Bbidder%3A'onemobile'%2Cparams%3A%7Bdcn%3Aconfig.dcn%2Cpos%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20AppNexus%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20AppNexus%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupAppNexus%3Afunction%20_setupAppNexus(config%2Csizes%2Csection%2Cssts%2CadCount)%7Bvar%20_this6%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bvar%20placementId%3Dvoid%200%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3B_this6.bids.push(%7Bbidder%3A'appnexus'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7BadCount%3AadCount%2Cbrandsafety%3A_this6._getBrandSafety()%2Cposition%3A_this6.placement%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Criteo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Criteo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupCriteo%3Afunction%20_setupCriteo(config)%7Bthis.bids.push(%7Bbidder%3A'criteo'%2Cparams%3A%7BnetworkId%3Aconfig.networkId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20IndexExchange%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20IndexExchange%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20adUnitSizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupIx%3Afunction%20_setupIx(config%2CadUnitPath%2CadUnitSizes)%7Bvar%20_this7%3Dthis%3Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%3Bvar%20placement%3Dvoid%200%3Bplacement%3Dconfig.placements%5Bkey%5D%3Bif(placement)%7BadUnitSizes.forEach(function(size)%7B_this7.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7BsiteId%3Aplacement.siteid%2Csize%3Asize%7D%7D)%3B%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OpenX%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20OpenX%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenX%3Afunction%20_setupOpenX(config%2Csizes%2Csection)%7Bvar%20_this8%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bvar%20placementId%3Dvoid%200%3Bplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3Bif(placementId)%7B_this8.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3AplacementId%2CdelDomain%3Aconfig.domain%7D%7D)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Pubmatic%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Pubmatic%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adSizeStr%20%20String%20value%20for%20ad%20size.%20i.e.%20%22300x250%22%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20%20%20Whether%20we%20are%20above%20or%20below%20the%20fold%20('abf'%2F'btf')%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmatic%3Afunction%20_setupPubmatic(config%2CadSizeStr%2Clocation)%7Bvar%20slot%3Dlocation.toUpperCase()%2B'%40'%2BadSizeStr%2CrosSlot%3D'ROS%40'%2BadSizeStr%2CadSlot%3Dconfig.placements.indexOf(slot)%3E-1%3Fslot%3Aconfig.placements.indexOf(rosSlot)%3E-1%3FrosSlot%3Anull%3Bif(adSlot)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.account%2CadSlot%3AadSlot%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Rubicon%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20Rubicon%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20Ad%20location%20on%20page.%20Options%20are%20'btf'%20or%20'aft'.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubicon%3Afunction%20_setupRubicon(config%2Csection%2Cssts%2Clocation%2CadCount)%7Bvar%20getNested%3Dthis._getNested%2CzoneId%3DgetNested(config%2C'zones'%2Clocation%2Csection)%7C%7CgetNested(config%2C'zones'%2C'catchall')%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dif(zoneId)%7Bthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.account%2CsiteId%3Aconfig.siteId%2CzoneId%3AzoneId%2Cinventory%3A%7Badcount%3AadCount%2Cbrandsafety%3Athis._getBrandSafety()%2Cdomain%3AgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%2Cposition%3Alocation%3D%3D%3D'atf'%3Flocation%3A''%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Sonobi%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20Sonobi%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobi%3Afunction%20_setupSonobi(config%2CadUnitPath)%7Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%2Cplacement%3Dconfig.placements%26%26(config.placements%5Bkey%5D%7C%7Cconfig.placements%5B'*'%5D)%3Bif(placement%26%26placement.TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3Aplacement.TagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20TripleLift%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20TripleLift%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTripleLift%3Afunction%20_setupTripleLift(config%2Csizes)%7Bvar%20_this9%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this9.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Yieldmo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Yieldmo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%2F_setupYieldmo%3Afunction%20_setupYieldmo(config)%7Bthis.bids.push(%7Bbidder%3A'yieldmo'%2Cparams%3A%7BplacementId%3Aconfig.placementId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20targeting%20for%20the%20ad%20slot%20then%20triggers%20a%20call%20to%20dfp%20to%20fetch%20and%20render%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bvar%20superRefresh%3Dthis._getNested(window%2C'ga_data'%2C'behaviors'%2C'PartnerSlot'%2C'refresh')%3Bif((this.displayed%7C%7Cthis.video)%26%26!this._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))%7Bthis._refreshBids(superRefresh)%3B%7Delse%20if(typeof%20superRefresh%3D%3D%3D'function')%7BsuperRefresh.call(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20bidding%20targeting%20on%20an%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BPromise%7D%20Promise%20to%20be%20resolved%20when%20bidding%20is%20complete%0A%20%20%20%20%20%20%20%20%20*%2F_refreshBids%3Afunction%20_refreshBids(superRefresh)%7Bvar%20_this10%3Dthis%3Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%2CapsSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps')%7C%7C%7B%7D%2Cpromises%3D%5B%5D%3Bthis.bidSet%3Dfalse%3Bif(this.gptSlot)%7Bthis._unsetTargeting()%3B%7Dif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bpromises.push(this.pbSetup.promise)%3Bthis.pbSetup.promise.then(function()%7Breturn%20_this10._refreshPrebid()%3B%7D)%3B%7Dif((apsSiteConfig.enabled%7C%7Cthis.apsDebug)%26%26this.aps)%7Bpromises.push(this.apsSetup.promise)%3Bthis.apsSetup.promise.then(function()%7Breturn%20_this10._refreshAPS()%3B%7D)%3B%7Dif(typeof%20superRefresh%3D%3D%3D'function')%7Bif(promises.length)%7BPromise.all(promises).then(function()%7BsuperRefresh.call(_this10)%3B%7D)%3B%7Delse%7BsuperRefresh.call(this)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Unset%203rd%20party%20targeting%0A%20%20%20%20%20%20%20%20%20*%2F_unsetTargeting%3Afunction%20_unsetTargeting()%7Bvar%20_this11%3Dthis%3Bthis._log('Clearing%203rd%20party%20targeting')%3B%5B'hb_ap'%2C'hb_bidder'%2C'hb_size'%2C'hb_source'%2C'hb_format'%2C'hb_ap_id'%2C'hb_adid'%2C'amznbid'%2C'amznp'%2C'amzniid'%2C'amznsz'%5D.forEach(function(key)%7B_this11.gptSlot.clearTargeting(key)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20our%20APS%20bids%0A%20%20%20%20%20%20%20%20%20*%2F_refreshAPS%3Afunction%20_refreshAPS()%7Bvar%20_this12%3Dthis%3Bthis._log('Queuing%20APS')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.apsAdUnits%3Dwindow.ga_data.ads.apsAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.apsAdUnits.push(_this12)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.apsAdUnits.push(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Makes%20request%20to%20prebid.js%20to%20refresh%20the%20bids%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_refreshPrebid%3Afunction%20_refreshPrebid()%7Bvar%20_this13%3Dthis%3Bthis._log('Queuing%20Prebid')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.pbAdUnits%3Dwindow.ga_data.ads.pbAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.pbAdUnits.push(_this13)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.pbAdUnits.push(this)%3B%7D%7D%2CprebidBidsReturned%3Afunction%20prebidBidsReturned(allBids)%7Bvar%20slotBids%3D(allBids%5Bthis.slotId%5D%7C%7C%7Bbids%3A%5B%5D%7D).bids%3Bif(slotBids.length)%7Bvar%20winningBid%3Dthis._getWinningBid(slotBids)%3Bthis._setPrebidTargeting(winningBid)%3B%7D%7D%2CprebidTimeoutReturned%3Afunction%20prebidTimeoutReturned(winningBid)%7Bif(!(winningBid%26%26winningBid.adserverTargeting))%7Bif(typeof%20window.pbjs.getAdserverTargetingForAdUnitCode!%3D%3D'function')return%3Bvar%20bidTargeting%3Dwindow.pbjs.getAdserverTargetingForAdUnitCode(this.slotId)%3BwinningBid%3D%7BadserverTargeting%3AbidTargeting%2CbidderCode%3AbidTargeting.hb_bidder%7D%3B%7Dthis._setPrebidTargeting(winningBid)%3B%7D%2C_setPrebidTargeting%3Afunction%20_setPrebidTargeting(winningBid)%7Bvar%20_this14%3Dthis%3Bif(!winningBid%7C%7C!winningBid.bidderCode%7C%7C!winningBid.adserverTargeting%7C%7C!winningBid.adserverTargeting.hb_ap_id)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7B_this14._setTargeting(_this14.gptSlot%2CwinningBid.adserverTargeting)%3B_this14._log('Prebid%20targeting%20set')%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20an%20array%20of%20size%20arrays%20and%20returns%20the%20largest%20ad%20size%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20%20%20%20%20%20%20%20%20Array%20of%20ad%20size%20arrays%20to%20reduce%20to%20largest%20value.%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20acceptedSizes%20Array%20of%20biddable%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Largest%20size%20array.%20i.e.%20%5B300%2C600%5D%0A%20%20%20%20%20%20%20%20%20*%2F_getMaxSize%3Afunction%20_getMaxSize(sizes%2CacceptedSizes)%7Bvar%20result%3D%5B%5D%2ClargestSize%3D0%3Bsizes.forEach(function(size)%7Bvar%20total%3Dsize%5B0%5D*size%5B1%5D%3Bif(acceptedSizes%5Bsize%5B0%5D%2B'x'%2Bsize%5B1%5D%5D%26%26total%3ElargestSize)%7BlargestSize%3Dtotal%3Bresult%3Dsize%3B%7D%7D)%3Breturn%20result%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sorts%20an%20array%20of%20size%20arrays%20in%20order%20from%20largest%20to%20smallest%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20Array%20of%20ad%20size%20arrays%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20Sorted%20array%20of%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%2F_sortSizes%3Afunction%20_sortSizes(sizes)%7Bif(sizes.length%3D%3D%3D1)return%20sizes%3Bsizes.sort(function(a%2Cb)%7Breturn%20b%5B0%5D*b%5B1%5D-a%5B0%5D*a%5B1%5D%3B%7D)%3Breturn%20sizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20a%20list%20of%20placements%20and%20finds%20the%20largest%20available%20placement%20based%0A%20%20%20%20%20%20%20%20%20*%20on%20the%20available%20sizes%20passed%20through.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20placements%20Placement%20object%2C%20keyed%20by%20size%20string.%20i.e.%20%22300x250%22%20%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20sizes%20%20%20%20%20%20Array%20of%20an%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BBoolean%7D%20multiSize%20%20Set%20true%20to%20return%20all%20matched%20sizes%2C%20otherwise%20largests%20gets%20returned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20Returns%20array%20of%20matched%20placement%20objects%0A%20%20%20%20%20%20%20%20%20*%2F_getPlacementSizes%3Afunction%20_getPlacementSizes(placements%2Csizes%2CmultiSize)%7Bvar%20matches%3D%5B%5D%3Bif(!placements)return%20matches%3Bsizes%3Dthis._sortSizes(sizes)%3Bsizes.forEach(function(size)%7Bvar%20sizeStr%3Dsize%5B0%5D%2B'x'%2Bsize%5B1%5D%2Cplacement%3Dplacements%5BsizeStr%5D%3Bif(placement)%7Bmatches.push(placement)%3B%7D%7D)%3Breturn%20multiSize%3Fmatches%3Amatches.slice(0%2C1)%3B%7D%2C_getBrandSafety%3Afunction%20_getBrandSafety()%7Bif(!this.brandSafety)%7Bvar%20simpleTarget%3Dga_data.route.simpleTarget%7C%7C%5B%5D%3Bvar%20simpleExclusion%3Dga_data.route.simpleExclusion%7C%7C%5B%5D%3Bthis.brandSafety%3DsimpleTarget.concat(simpleExclusion)%3Bif(!this.brandSafety.length)%7Bthis.brandSafety.push('')%3B%7D%7Dreturn%20this.brandSafety%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerBid%3DPartnerBid%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-bid.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-bid.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/partner-bid.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Base%20Gallium%20framework%20behavior.%0A%20%20%20%20%20*%20Adds%20a%20%60frameworkReady%60%20lifecycle%20method%20that%20is%20called%20when%20the%20global%20Gallium%20class%20is%20ready%0A%20%20%20%20%20*%20Adds%20helper%20methods%20for%20getting%20current%20User's%20Firefly%20paywall%20status%20data%0A%20%20%20%20%20*%20%3F%3F%3F%0A%20%20%20%20%20*%20Profit!%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.GalliumElement%20*%2Fwindow.ga_data.behaviors.GalliumElement%3D%7Bready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(window.Gallium)%7Bthis.frameworkReady()%3B%7Delse%7Bwindow.addEventListener('ga-init'%2Cfunction()%7B_this.frameworkReady()%3B%7D)%3B%7D%7D%2CframeworkReady%3Afunction%20frameworkReady()%7B%2F%2F%20Override%20in%20element%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20user%20state%20from%20Firefly%20cookie%0A%20%20%20%20%20%20%20%20%20*%20%0A%20%20%20%20%20%20%20%20%20*%20TODO%3A%20Add%20more%20data%20validation%20as%20done%20in%20https%3A%2F%2Fgithub.com%2FGannettDigital%2Fweb-standard-apps%2Fblob%2Fmaster%2Fusers%2Fstatic%2Fjs%2Fthird-party-apis%2Ffirefly%2Ffirefly.js%23L82%0A%20%20%20%20%20%20%20%20%20*%2F_getUserFireflyState%3Afunction%20_getUserFireflyState()%7Bvar%20fireflyCookie%3Dga_data.utils%3Fga_data.utils.readCookie('firefly_akamai_open')%7C%7C''%3A''%3Bvar%20fireflyValue%3Dnull%3Bif(fireflyCookie)%7Btry%7BfireflyValue%3DJSON.parse(atob(fireflyCookie))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7Dreturn%20fireflyValue%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fgallium-element.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fgallium-element.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/gallium/behaviors/gallium-element.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "scriptUrl": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20%60%3Cpartner-branded-content-tile%3E%60%20adds%20a%20Branded%20Content%20Tile%20Ad%20to%20your%20page.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-branded-content-tile'%2CdesignId%3A'A7'%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20DFP%20placement%20name%20for%20this%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Default%20value%20is%20for%20desktop.%20Mobile%20value%20set%20dynamically%20in%20%60slotReady%60.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A'native-front_tile'%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20border%20(automatic%20on%20high%20impact%20units)%20*%2FnoBorder%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B2%2C3%5D%2C'fluid'%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20mobile%20dynamically%20via%20intent%0Aif(this._inMobileEnvironment())%7Bthis.mobile%3Dtrue%3Bthis.placement%3D'mobileweb-native-front_tile'%3B%7D%7D%2C_afterSetupAd%3Afunction%20_afterSetupAd()%7Bthis.addTargeting(%7Bfront%3A'NA'%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-branded-content-tile%2Fpartner-branded-content-tile.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-branded-content-tile%2Fpartner-branded-content-tile.html.js%0A",
            "sourceMapUrl": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/maps/elements/partner/partner-branded-content-tile/partner-branded-content-tile.html_script_0.js.map",
            "subItems": {
              "type": "subitems",
              "items": []
            }
          }
        ]
      }
    },
    "csp-xss": {
      "id": "csp-xss",
      "title": "Ensure CSP is effective against XSS attacks",
      "description": "A strong Content Security Policy (CSP) significantly reduces the risk of cross-site scripting (XSS) attacks. [Learn how to use a CSP to prevent XSS](https://developer.chrome.com/docs/lighthouse/best-practices/csp-xss/)",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "description",
            "valueType": "text",
            "subItemsHeading": {
              "key": "description"
            },
            "label": "Description"
          },
          {
            "key": "directive",
            "valueType": "code",
            "subItemsHeading": {
              "key": "directive"
            },
            "label": "Directive"
          },
          {
            "key": "severity",
            "valueType": "text",
            "subItemsHeading": {
              "key": "severity"
            },
            "label": "Severity"
          }
        ],
        "items": [
          {
            "directive": "script-src",
            "description": "`script-src` directive is missing. This can allow the execution of unsafe scripts.",
            "severity": "High"
          },
          {
            "directive": "object-src",
            "description": "Missing `object-src` allows the injection of plugins that execute unsafe scripts. Consider setting `object-src` to `'none'` if you can.",
            "severity": "High"
          }
        ]
      }
    },
    "has-hsts": {
      "id": "has-hsts",
      "title": "Use a strong HSTS policy",
      "description": "Deployment of the HSTS header significantly reduces the risk of downgrading HTTP connections and eavesdropping attacks. A rollout in stages, starting with a low max-age is recommended. [Learn more about using a strong HSTS policy.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "description",
            "valueType": "text",
            "subItemsHeading": {
              "key": "description"
            },
            "label": "Description"
          },
          {
            "key": "directive",
            "valueType": "code",
            "subItemsHeading": {
              "key": "directive"
            },
            "label": "Directive"
          },
          {
            "key": "severity",
            "valueType": "text",
            "subItemsHeading": {
              "key": "severity"
            },
            "label": "Severity"
          }
        ],
        "items": [
          {
            "directive": "max-age",
            "description": "`max-age` is too low",
            "severity": "High"
          },
          {
            "directive": "includeSubDomains",
            "description": "No `includeSubDomains` directive found",
            "severity": "Medium"
          },
          {
            "directive": "preload",
            "description": "No `preload` directive found",
            "severity": "Medium"
          }
        ]
      }
    },
    "origin-isolation": {
      "id": "origin-isolation",
      "title": "Ensure proper origin isolation with COOP",
      "description": "The Cross-Origin-Opener-Policy (COOP) can be used to isolate the top-level window from other documents such as pop-ups. [Learn more about deploying the COOP header.](https://web.dev/articles/why-coop-coep#coop)",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "description",
            "valueType": "text",
            "subItemsHeading": {
              "key": "description"
            },
            "label": "Description"
          },
          {
            "key": "directive",
            "valueType": "code",
            "subItemsHeading": {
              "key": "directive"
            },
            "label": "Directive"
          },
          {
            "key": "severity",
            "valueType": "text",
            "subItemsHeading": {
              "key": "severity"
            },
            "label": "Severity"
          }
        ],
        "items": [
          {
            "description": "No COOP header found",
            "severity": "High"
          }
        ]
      }
    },
    "clickjacking-mitigation": {
      "id": "clickjacking-mitigation",
      "title": "Mitigate clickjacking with XFO or CSP",
      "description": "The `X-Frame-Options` (XFO) header or the `frame-ancestors` directive in the `Content-Security-Policy` (CSP) header control where a page can be embedded. These can mitigate clickjacking attacks by blocking some or all sites from embedding the page. [Learn more about mitigating clickjacking](https://developer.chrome.com/docs/lighthouse/best-practices/clickjacking-mitigation).",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "description",
            "valueType": "text",
            "subItemsHeading": {
              "key": "description"
            },
            "label": "Description"
          },
          {
            "key": "severity",
            "valueType": "text",
            "subItemsHeading": {
              "key": "severity"
            },
            "label": "Severity"
          }
        ],
        "items": [
          {
            "severity": "High",
            "description": "No frame control policy found"
          }
        ]
      }
    },
    "trusted-types-xss": {
      "id": "trusted-types-xss",
      "title": "Mitigate DOM-based XSS with Trusted Types",
      "description": "The `require-trusted-types-for` directive in the `Content-Security-Policy` (CSP) header instructs user agents to control the data passed to DOM XSS sink functions. [Learn more about mitigating DOM-based XSS with Trusted Types](https://developer.chrome.com/docs/lighthouse/best-practices/trusted-types-xss).",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "description",
            "valueType": "text",
            "subItemsHeading": {
              "key": "description"
            },
            "label": "Description"
          },
          {
            "key": "severity",
            "valueType": "text",
            "subItemsHeading": {
              "key": "severity"
            },
            "label": "Severity"
          }
        ],
        "items": [
          {
            "severity": "High",
            "description": "No `Content-Security-Policy` header with Trusted Types directive found"
          }
        ]
      }
    },
    "script-treemap-data": {
      "id": "script-treemap-data",
      "title": "Script Treemap Data",
      "description": "Used for treemap app",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "treemap-data",
        "nodes": [
          {
            "name": "https://eu.palmbeachpost.com/",
            "resourceBytes": 27298,
            "encodedBytes": 5887,
            "unusedBytes": 10886,
            "children": [
              {
                "name": "(inline) (function() {\n …",
                "resourceBytes": 11647,
                "unusedBytes": 2513
              },
              {
                "name": "(inline) function Optano…",
                "resourceBytes": 29,
                "unusedBytes": 0
              },
              {
                "name": "(inline) // Define Serve…",
                "resourceBytes": 2874,
                "unusedBytes": 268
              },
              {
                "name": "(inline) var _toggleNav;…",
                "resourceBytes": 11344,
                "unusedBytes": 6784
              },
              {
                "name": "(inline) let docAnalytic…",
                "resourceBytes": 156,
                "unusedBytes": 85
              },
              {
                "name": "(inline) function firePr…",
                "resourceBytes": 1248,
                "unusedBytes": 1236
              }
            ]
          },
          {
            "name": "https://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
            "resourceBytes": 103,
            "encodedBytes": 116,
            "unusedBytes": 0
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
            "resourceBytes": 938,
            "encodedBytes": 502,
            "unusedBytes": 0
          },
          {
            "name": "https://cdn.cookielaw.org/scripttemplates/otSDKStub.js",
            "resourceBytes": 26578,
            "encodedBytes": 8732,
            "unusedBytes": 7572
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "resourceBytes": 11823,
            "encodedBytes": 3572,
            "unusedBytes": 3238
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
            "resourceBytes": 78889,
            "encodedBytes": 17664,
            "unusedBytes": 71380
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
            "resourceBytes": 18995,
            "encodedBytes": 5322,
            "unusedBytes": 10901
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-loader.js",
            "resourceBytes": 3664,
            "encodedBytes": 1533,
            "unusedBytes": 305
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "resourceBytes": 10912,
            "encodedBytes": 3659,
            "unusedBytes": 685
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "resourceBytes": 335571,
            "encodedBytes": 83693,
            "children": [
              {
                "name": "../../..",
                "resourceBytes": 335506,
                "children": [
                  {
                    "name": "node_modules",
                    "resourceBytes": 147522,
                    "children": [
                      {
                        "name": "lit-html",
                        "resourceBytes": 15109,
                        "children": [
                          {
                            "name": "lib",
                            "resourceBytes": 12373,
                            "children": [
                              {
                                "name": "dom.js",
                                "resourceBytes": 282
                              },
                              {
                                "name": "template.js",
                                "resourceBytes": 1767
                              },
                              {
                                "name": "modify-template.js",
                                "resourceBytes": 932,
                                "unusedBytes": 914
                              },
                              {
                                "name": "directive.js",
                                "resourceBytes": 108
                              },
                              {
                                "name": "part.js",
                                "resourceBytes": 10
                              },
                              {
                                "name": "template-instance.js",
                                "resourceBytes": 955
                              },
                              {
                                "name": "template-result.js",
                                "resourceBytes": 791
                              },
                              {
                                "name": "parts.js",
                                "resourceBytes": 4806,
                                "unusedBytes": 144
                              },
                              {
                                "name": "template-factory.js",
                                "resourceBytes": 343,
                                "unusedBytes": 327
                              },
                              {
                                "name": "render.js",
                                "resourceBytes": 169
                              },
                              {
                                "name": "default-template-processor.js",
                                "resourceBytes": 247
                              },
                              {
                                "name": "shady-render.js",
                                "resourceBytes": 1963,
                                "unusedBytes": 815
                              }
                            ],
                            "unusedBytes": 2200
                          },
                          {
                            "name": "lit-html.js",
                            "resourceBytes": 165
                          },
                          {
                            "name": "directives",
                            "resourceBytes": 2571,
                            "unusedBytes": 670,
                            "children": [
                              {
                                "name": "class-map.js",
                                "resourceBytes": 962,
                                "unusedBytes": 354
                              },
                              {
                                "name": "if-defined.js",
                                "resourceBytes": 214
                              },
                              {
                                "name": "live.js",
                                "resourceBytes": 508
                              },
                              {
                                "name": "style-map.js",
                                "resourceBytes": 539
                              },
                              {
                                "name": "unsafe-html.js",
                                "resourceBytes": 348,
                                "unusedBytes": 316
                              }
                            ]
                          }
                        ],
                        "unusedBytes": 2870
                      },
                      {
                        "name": "lit-element",
                        "resourceBytes": 9575,
                        "unusedBytes": 1309,
                        "children": [
                          {
                            "name": "lib",
                            "resourceBytes": 7774,
                            "unusedBytes": 1180,
                            "children": [
                              {
                                "name": "updating-element.js",
                                "resourceBytes": 5501,
                                "unusedBytes": 366
                              },
                              {
                                "name": "decorators.js",
                                "resourceBytes": 1381,
                                "unusedBytes": 481
                              },
                              {
                                "name": "css-tag.js",
                                "resourceBytes": 892,
                                "unusedBytes": 333
                              }
                            ]
                          },
                          {
                            "name": "lit-element.js",
                            "resourceBytes": 1801,
                            "unusedBytes": 129
                          }
                        ]
                      },
                      {
                        "name": "tslib/tslib.es6.js",
                        "resourceBytes": 852,
                        "unusedBytes": 235
                      },
                      {
                        "name": "@material",
                        "resourceBytes": 87347,
                        "unusedBytes": 12379,
                        "children": [
                          {
                            "name": "mwc-base",
                            "resourceBytes": 1320,
                            "unusedBytes": 325,
                            "children": [
                              {
                                "name": "utils.js",
                                "resourceBytes": 239,
                                "unusedBytes": 81
                              },
                              {
                                "name": "base-element.js",
                                "resourceBytes": 259
                              },
                              {
                                "name": "form-element.js",
                                "resourceBytes": 385,
                                "unusedBytes": 204
                              },
                              {
                                "name": "observer.js",
                                "resourceBytes": 437,
                                "unusedBytes": 40
                              }
                            ]
                          },
                          {
                            "name": "base/foundation.js",
                            "resourceBytes": 519,
                            "unusedBytes": 104
                          },
                          {
                            "name": "notched-outline",
                            "resourceBytes": 1138,
                            "children": [
                              {
                                "name": "constants.js",
                                "resourceBytes": 229
                              },
                              {
                                "name": "foundation.js",
                                "resourceBytes": 909,
                                "unusedBytes": 531
                              }
                            ],
                            "unusedBytes": 531
                          },
                          {
                            "name": "mwc-notched-outline",
                            "resourceBytes": 4347,
                            "unusedBytes": 817,
                            "children": [
                              {
                                "name": "mwc-notched-outline-base.js",
                                "resourceBytes": 1091,
                                "unusedBytes": 817
                              },
                              {
                                "name": "mwc-notched-outline-css.js",
                                "resourceBytes": 3183
                              },
                              {
                                "name": "mwc-notched-outline.js",
                                "resourceBytes": 73
                              }
                            ]
                          },
                          {
                            "name": "floating-label",
                            "resourceBytes": 1542,
                            "children": [
                              {
                                "name": "constants.js",
                                "resourceBytes": 173
                              },
                              {
                                "name": "foundation.js",
                                "resourceBytes": 1369,
                                "unusedBytes": 1016
                              }
                            ],
                            "unusedBytes": 1016
                          },
                          {
                            "name": "mwc-floating-label/mwc-floating-label-directive.js",
                            "resourceBytes": 425,
                            "unusedBytes": 397
                          },
                          {
                            "name": "line-ripple",
                            "resourceBytes": 1429,
                            "children": [
                              {
                                "name": "constants.js",
                                "resourceBytes": 111
                              },
                              {
                                "name": "foundation.js",
                                "resourceBytes": 1318,
                                "unusedBytes": 680
                              }
                            ],
                            "unusedBytes": 680
                          },
                          {
                            "name": "mwc-line-ripple/mwc-line-ripple-directive.js",
                            "resourceBytes": 440,
                            "unusedBytes": 137
                          },
                          {
                            "name": "textfield",
                            "resourceBytes": 9541,
                            "children": [
                              {
                                "name": "constants.js",
                                "resourceBytes": 1001
                              },
                              {
                                "name": "foundation.js",
                                "resourceBytes": 8540,
                                "unusedBytes": 4735
                              }
                            ],
                            "unusedBytes": 4735
                          },
                          {
                            "name": "mwc-textfield",
                            "resourceBytes": 54616,
                            "unusedBytes": 3213,
                            "children": [
                              {
                                "name": "mwc-textfield-base.js",
                                "resourceBytes": 10901,
                                "unusedBytes": 3213
                              },
                              {
                                "name": "mwc-textfield-css.js",
                                "resourceBytes": 43648
                              },
                              {
                                "name": "mwc-textfield.js",
                                "resourceBytes": 67
                              }
                            ]
                          },
                          {
                            "name": "animation/util.js",
                            "resourceBytes": 421
                          },
                          {
                            "name": "linear-progress",
                            "resourceBytes": 2823,
                            "children": [
                              {
                                "name": "constants.js",
                                "resourceBytes": 327
                              },
                              {
                                "name": "foundation.js",
                                "resourceBytes": 2496,
                                "unusedBytes": 340
                              }
                            ],
                            "unusedBytes": 340
                          },
                          {
                            "name": "mwc-linear-progress",
                            "resourceBytes": 8786,
                            "unusedBytes": 84,
                            "children": [
                              {
                                "name": "mwc-linear-progress-base.js",
                                "resourceBytes": 2244,
                                "unusedBytes": 84
                              },
                              {
                                "name": "mwc-linear-progress-css.js",
                                "resourceBytes": 6465
                              },
                              {
                                "name": "mwc-linear-progress.js",
                                "resourceBytes": 77
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "name": "@glidejs/glide/dist/glide.esm.js",
                        "resourceBytes": 27383,
                        "unusedBytes": 24432
                      },
                      {
                        "name": "@polymer/lit-element",
                        "resourceBytes": 7256,
                        "unusedBytes": 943,
                        "children": [
                          {
                            "name": "lib",
                            "resourceBytes": 5963,
                            "unusedBytes": 772,
                            "children": [
                              {
                                "name": "updating-element.js",
                                "resourceBytes": 5629,
                                "unusedBytes": 728
                              },
                              {
                                "name": "decorators.js",
                                "resourceBytes": 289,
                                "unusedBytes": 44
                              },
                              {
                                "name": "css-tag.js",
                                "resourceBytes": 45
                              }
                            ]
                          },
                          {
                            "name": "lit-element.js",
                            "resourceBytes": 1293,
                            "unusedBytes": 171
                          }
                        ]
                      }
                    ],
                    "unusedBytes": 42168
                  },
                  {
                    "name": "elements-lit",
                    "resourceBytes": 187984,
                    "unusedBytes": 102027,
                    "children": [
                      {
                        "name": "alerts",
                        "resourceBytes": 15919,
                        "unusedBytes": 11799,
                        "children": [
                          {
                            "name": "alerts-atoms/alerts-atoms.js",
                            "resourceBytes": 2353,
                            "unusedBytes": 380
                          },
                          {
                            "name": "alerts-banner/alerts-banner.js",
                            "resourceBytes": 3260,
                            "unusedBytes": 2893
                          },
                          {
                            "name": "alerts-manager/alerts-manager.js",
                            "resourceBytes": 4470,
                            "unusedBytes": 2974
                          },
                          {
                            "name": "alerts-ad-free-modal/alerts-ad-free-modal.js",
                            "resourceBytes": 1546,
                            "unusedBytes": 1441
                          },
                          {
                            "name": "alerts-cc-decline-modal/alerts-cc-decline-modal.js",
                            "resourceBytes": 4290,
                            "unusedBytes": 4111
                          }
                        ]
                      },
                      {
                        "name": "util",
                        "resourceBytes": 12585,
                        "unusedBytes": 5322,
                        "children": [
                          {
                            "name": "util-lit/util-lit.js",
                            "resourceBytes": 612,
                            "unusedBytes": 351
                          },
                          {
                            "name": "util-analytics/util-analytics.js",
                            "resourceBytes": 3850,
                            "unusedBytes": 2846
                          },
                          {
                            "name": "util-pcs/util-pcs.js",
                            "resourceBytes": 3735
                          },
                          {
                            "name": "util-shared-analytics/util-shared-analytics.js",
                            "resourceBytes": 44,
                            "unusedBytes": 44
                          },
                          {
                            "name": "util-modal/util-modal.js",
                            "resourceBytes": 504,
                            "unusedBytes": 259
                          },
                          {
                            "name": "util-page-reload/util-page-reload.js",
                            "resourceBytes": 816,
                            "unusedBytes": 421
                          },
                          {
                            "name": "util-section-color/util-section-color.js",
                            "resourceBytes": 939,
                            "unusedBytes": 344
                          },
                          {
                            "name": "util-sticky-module/util-sticky-module.js",
                            "resourceBytes": 641
                          },
                          {
                            "name": "util-user-subscription-manager/util-user-subscription-manager.js",
                            "resourceBytes": 1444,
                            "unusedBytes": 1057
                          }
                        ]
                      },
                      {
                        "name": "ui",
                        "resourceBytes": 5473,
                        "children": [
                          {
                            "name": "ui-icon/ui-icon.js",
                            "resourceBytes": 2969
                          },
                          {
                            "name": "ui-label-bucket/ui-label-bucket.js",
                            "resourceBytes": 2504
                          }
                        ]
                      },
                      {
                        "name": "cta",
                        "resourceBytes": 3968,
                        "children": [
                          {
                            "name": "cta-atoms-container-aux/cta-atoms-container-aux.js",
                            "resourceBytes": 206
                          },
                          {
                            "name": "cta-atoms-container-inline/cta-atoms-container-inline.js",
                            "resourceBytes": 403,
                            "unusedBytes": 292
                          },
                          {
                            "name": "cta-atoms-container-inline-roadblock/cta-atoms-container-inline-roadblock.js",
                            "resourceBytes": 406,
                            "unusedBytes": 285
                          },
                          {
                            "name": "cta-atoms-container-post-content/cta-atoms-container-post-content.js",
                            "resourceBytes": 215,
                            "unusedBytes": 98
                          },
                          {
                            "name": "cta-generic-text/cta-generic-text.js",
                            "resourceBytes": 2738,
                            "unusedBytes": 2560
                          }
                        ],
                        "unusedBytes": 3235
                      },
                      {
                        "name": "nav",
                        "resourceBytes": 40585,
                        "unusedBytes": 26186,
                        "children": [
                          {
                            "name": "nav-global-login/nav-global-login.js",
                            "resourceBytes": 5812,
                            "unusedBytes": 5308
                          },
                          {
                            "name": "nav-global-login-piano/nav-global-login-piano.js",
                            "resourceBytes": 6300,
                            "unusedBytes": 5790
                          },
                          {
                            "name": "nav-tree/nav-tree.js",
                            "resourceBytes": 5831,
                            "unusedBytes": 1521
                          },
                          {
                            "name": "nav-promo-item/nav-promo-item.js",
                            "resourceBytes": 1810
                          },
                          {
                            "name": "nav-hub/nav-hub.js",
                            "resourceBytes": 2980,
                            "unusedBytes": 203
                          },
                          {
                            "name": "nav-manager/nav-manager.js",
                            "resourceBytes": 3617,
                            "unusedBytes": 2713
                          },
                          {
                            "name": "nav-search-bar/nav-search-bar.js",
                            "resourceBytes": 1171,
                            "unusedBytes": 322
                          },
                          {
                            "name": "nav-sense-of-place/nav-sense-of-place.js",
                            "resourceBytes": 2989,
                            "unusedBytes": 2674
                          },
                          {
                            "name": "nav-search-bucket/nav-search-bucket.js",
                            "resourceBytes": 2935,
                            "unusedBytes": 778
                          },
                          {
                            "name": "nav-share-buttons/nav-share-buttons.js",
                            "resourceBytes": 7140,
                            "unusedBytes": 6877
                          }
                        ]
                      },
                      {
                        "name": "media/media-badge/media-badge.js",
                        "resourceBytes": 1468
                      },
                      {
                        "name": "promo",
                        "resourceBytes": 39642,
                        "unusedBytes": 20230,
                        "children": [
                          {
                            "name": "promo-story-card/promo-story-card.js",
                            "resourceBytes": 11606,
                            "unusedBytes": 3179
                          },
                          {
                            "name": "promo-story-thumb-large/promo-story-thumb-large.js",
                            "resourceBytes": 4619
                          },
                          {
                            "name": "promo-story-bucket-short/promo-story-bucket-short.js",
                            "resourceBytes": 5568,
                            "unusedBytes": 1143
                          },
                          {
                            "name": "lit-carousel-card/lit-carousel-card.js",
                            "resourceBytes": 4308,
                            "unusedBytes": 3474
                          },
                          {
                            "name": "lit-story-carousel/lit-story-carousel.js",
                            "resourceBytes": 3967,
                            "unusedBytes": 3419
                          },
                          {
                            "name": "promo-story-thumb-small/promo-story-thumb-small.js",
                            "resourceBytes": 7156,
                            "unusedBytes": 6922
                          },
                          {
                            "name": "promo-story-bucket/promo-story-bucket.js",
                            "resourceBytes": 2418,
                            "unusedBytes": 2093
                          }
                        ]
                      },
                      {
                        "name": "story/story-timestamp/story-timestamp.js",
                        "resourceBytes": 2086,
                        "unusedBytes": 493
                      },
                      {
                        "name": "partner",
                        "resourceBytes": 66258,
                        "unusedBytes": 34762,
                        "children": [
                          {
                            "name": "partner-slot/partner-slot.js",
                            "resourceBytes": 22965,
                            "unusedBytes": 9159
                          },
                          {
                            "name": "partner-bid/partner-bid.js",
                            "resourceBytes": 10311,
                            "unusedBytes": 2969
                          },
                          {
                            "name": "partner-banner/partner-banner.js",
                            "resourceBytes": 1302
                          },
                          {
                            "name": "partner-branded-content-tile/partner-branded-content-tile.js",
                            "resourceBytes": 740
                          },
                          {
                            "name": "partner-feedback/partner-feedback.js",
                            "resourceBytes": 660,
                            "unusedBytes": 599
                          },
                          {
                            "name": "partner-flipp/partner-flipp.js",
                            "resourceBytes": 2474,
                            "unusedBytes": 2407
                          },
                          {
                            "name": "partner-gci-analytics/partner-gci-analytics.js",
                            "resourceBytes": 10118,
                            "unusedBytes": 9512
                          },
                          {
                            "name": "partner-high-impact/partner-high-impact.js",
                            "resourceBytes": 1422,
                            "unusedBytes": 792
                          },
                          {
                            "name": "partner-inline/partner-inline.js",
                            "resourceBytes": 1354,
                            "unusedBytes": 134
                          },
                          {
                            "name": "partner-leaderboard/partner-leaderboard.js",
                            "resourceBytes": 1062
                          },
                          {
                            "name": "partner-piano/partner-piano.js",
                            "resourceBytes": 3863,
                            "unusedBytes": 3721
                          },
                          {
                            "name": "partner-poster/partner-poster.js",
                            "resourceBytes": 685
                          },
                          {
                            "name": "partner-posterscroll/partner-posterscroll.js",
                            "resourceBytes": 2496,
                            "unusedBytes": 757
                          },
                          {
                            "name": "partner-recommendations/partner-recommendations.js",
                            "resourceBytes": 2040,
                            "unusedBytes": 812
                          },
                          {
                            "name": "partner-sponsor-logo/partner-sponsor-logo.js",
                            "resourceBytes": 805,
                            "unusedBytes": 257
                          },
                          {
                            "name": "partner-admiral/partner-admiral.js",
                            "resourceBytes": 812,
                            "unusedBytes": 743
                          },
                          {
                            "name": "partner-contest-bucket/partner-contest-bucket.js",
                            "resourceBytes": 3149,
                            "unusedBytes": 2900
                          }
                        ]
                      }
                    ]
                  }
                ],
                "unusedBytes": 144195
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 65
              }
            ],
            "unusedBytes": 144195
          },
          {
            "name": "https://atoms.palmbeachpost.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "resourceBytes": 58540,
            "encodedBytes": 16036,
            "unusedBytes": 39138,
            "children": [
              {
                "name": "webpack:/atoms-library",
                "resourceBytes": 58269,
                "unusedBytes": 39138,
                "children": [
                  {
                    "name": ".",
                    "resourceBytes": 57974,
                    "unusedBytes": 38994,
                    "children": [
                      {
                        "name": "src",
                        "resourceBytes": 34512,
                        "unusedBytes": 21390,
                        "children": [
                          {
                            "name": "api/api.js",
                            "resourceBytes": 762,
                            "unusedBytes": 34
                          },
                          {
                            "name": "cookies",
                            "resourceBytes": 6658,
                            "unusedBytes": 5185,
                            "children": [
                              {
                                "name": "gnt_atoms_rate/gnt_atoms_rate.js",
                                "resourceBytes": 3855,
                                "unusedBytes": 3026
                              },
                              {
                                "name": "gnt_cec/gnt_cec.js",
                                "resourceBytes": 645,
                                "unusedBytes": 433
                              },
                              {
                                "name": "gnt_region/gnt_region.js",
                                "resourceBytes": 949,
                                "unusedBytes": 738
                              },
                              {
                                "name": "gup_lng/gup_lng.js",
                                "resourceBytes": 1209,
                                "unusedBytes": 988
                              }
                            ]
                          },
                          {
                            "name": "journey/journey.js",
                            "resourceBytes": 2595,
                            "unusedBytes": 830
                          },
                          {
                            "name": "module",
                            "resourceBytes": 16947,
                            "unusedBytes": 13233,
                            "children": [
                              {
                                "name": "components",
                                "resourceBytes": 1794,
                                "unusedBytes": 1401,
                                "children": [
                                  {
                                    "name": "component.js",
                                    "resourceBytes": 509,
                                    "unusedBytes": 331
                                  },
                                  {
                                    "name": "library.js",
                                    "resourceBytes": 1285,
                                    "unusedBytes": 1070
                                  }
                                ]
                              },
                              {
                                "name": "links/link.js",
                                "resourceBytes": 4223,
                                "unusedBytes": 3913
                              },
                              {
                                "name": "module.js",
                                "resourceBytes": 6643,
                                "unusedBytes": 5685
                              },
                              {
                                "name": "types",
                                "resourceBytes": 2992,
                                "unusedBytes": 2234,
                                "children": [
                                  {
                                    "name": "bar/bar.js",
                                    "resourceBytes": 1234,
                                    "unusedBytes": 941
                                  },
                                  {
                                    "name": "modal/modal.js",
                                    "resourceBytes": 1253,
                                    "unusedBytes": 960
                                  },
                                  {
                                    "name": "target/target.js",
                                    "resourceBytes": 505,
                                    "unusedBytes": 333
                                  }
                                ]
                              },
                              {
                                "name": "user/user.js",
                                "resourceBytes": 1295
                              }
                            ]
                          },
                          {
                            "name": "setup/setup.js",
                            "resourceBytes": 3294
                          },
                          {
                            "name": "utils/utils.js",
                            "resourceBytes": 2129,
                            "unusedBytes": 1068
                          },
                          {
                            "name": "index.js",
                            "resourceBytes": 2127,
                            "unusedBytes": 1040
                          }
                        ]
                      },
                      {
                        "name": "node_modules",
                        "resourceBytes": 23462,
                        "children": [
                          {
                            "name": "@babel/runtime",
                            "resourceBytes": 9638,
                            "children": [
                              {
                                "name": "helpers",
                                "resourceBytes": 9473,
                                "children": [
                                  {
                                    "name": "arrayLikeToArray.js",
                                    "resourceBytes": 182
                                  },
                                  {
                                    "name": "arrayWithoutHoles.js",
                                    "resourceBytes": 129
                                  },
                                  {
                                    "name": "asyncToGenerator.js",
                                    "resourceBytes": 386,
                                    "unusedBytes": 294
                                  },
                                  {
                                    "name": "classCallCheck.js",
                                    "resourceBytes": 164
                                  },
                                  {
                                    "name": "createClass.js",
                                    "resourceBytes": 344
                                  },
                                  {
                                    "name": "defineProperty.js",
                                    "resourceBytes": 190,
                                    "unusedBytes": 118
                                  },
                                  {
                                    "name": "interopRequireDefault.js",
                                    "resourceBytes": 121
                                  },
                                  {
                                    "name": "iterableToArray.js",
                                    "resourceBytes": 184,
                                    "unusedBytes": 112
                                  },
                                  {
                                    "name": "nonIterableSpread.js",
                                    "resourceBytes": 244,
                                    "unusedBytes": 167
                                  },
                                  {
                                    "name": "regeneratorRuntime.js",
                                    "resourceBytes": 6630,
                                    "unusedBytes": 5205
                                  },
                                  {
                                    "name": "toConsumableArray.js",
                                    "resourceBytes": 153
                                  },
                                  {
                                    "name": "typeof.js",
                                    "resourceBytes": 371,
                                    "unusedBytes": 112
                                  },
                                  {
                                    "name": "unsupportedIterableToArray.js",
                                    "resourceBytes": 375,
                                    "unusedBytes": 284
                                  }
                                ],
                                "unusedBytes": 6292
                              },
                              {
                                "name": "regenerator/index.js",
                                "resourceBytes": 165
                              }
                            ],
                            "unusedBytes": 6292
                          },
                          {
                            "name": "@ungap/url-search-params/esm/index.js",
                            "resourceBytes": 4397,
                            "unusedBytes": 3304
                          },
                          {
                            "name": "whatwg-fetch/fetch.js",
                            "resourceBytes": 8953,
                            "unusedBytes": 7699
                          },
                          {
                            "name": "polyfill-array-includes/index.js",
                            "resourceBytes": 474,
                            "unusedBytes": 309
                          }
                        ],
                        "unusedBytes": 17604
                      }
                    ]
                  },
                  {
                    "name": "webpack",
                    "resourceBytes": 295,
                    "children": [
                      {
                        "name": "bootstrap",
                        "resourceBytes": 122
                      },
                      {
                        "name": "runtime",
                        "resourceBytes": 173,
                        "unusedBytes": 144,
                        "children": [
                          {
                            "name": "define property getters",
                            "resourceBytes": 101,
                            "unusedBytes": 96
                          },
                          {
                            "name": "hasOwnProperty shorthand",
                            "resourceBytes": 72,
                            "unusedBytes": 48
                          }
                        ]
                      }
                    ],
                    "unusedBytes": 144
                  }
                ]
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 271
              }
            ]
          },
          {
            "name": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "resourceBytes": 541506,
            "encodedBytes": 131285,
            "unusedBytes": 315988
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js",
            "resourceBytes": 3075,
            "encodedBytes": 1355,
            "unusedBytes": 429
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20userPolymer%3Dwindow.Polymer%3B%2F**%0A%20%20%20*%20%40namespace%20Polymer%0A%20%20%20*%20%40summary%20Polymer%20is%20a%20lightweight%20library%20built%20on%20top%20of%20the%20web%0A%20%20%20*%20%20%20standards-based%20Web%20Components%20API's%2C%20and%20makes%20it%20easy%20to%20build%20your%0A%20%20%20*%20%20%20own%20custom%20HTML%20elements.%0A%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Prototype%20for%20the%20custom%20element.%20It%20must%20contain%0A%20%20%20*%20%20%20an%20%60is%60%20property%20to%20specify%20the%20element%20name.%20Other%20properties%20populate%0A%20%20%20*%20%20%20the%20element%20prototype.%20The%20%60properties%60%2C%20%60observers%60%2C%20%60hostAttributes%60%2C%0A%20%20%20*%20%20%20and%20%60listeners%60%20properties%20are%20processed%20to%20create%20element%20features.%0A%20%20%20*%20%40return%20%7B!Object%7D%20Returns%20a%20custom%20element%20class%20for%20the%20given%20provided%0A%20%20%20*%20%20%20prototype%20%60info%60%20object.%20The%20name%20of%20the%20element%20if%20given%20by%20%60info.is%60.%0A%20%20%20*%2Fwindow.Polymer%3Dfunction(info)%7Breturn%20window.Polymer._polymerFn(info)%3B%7D%3B%2F%2F%20support%20user%20settings%20on%20the%20Polymer%20object%0Aif(userPolymer)%7BObject.assign(Polymer%2CuserPolymer)%3B%7D%2F%2F%20To%20be%20plugged%20by%20legacy%20implementation%20if%20loaded%0A%2F*%20eslint-disable%20valid-jsdoc%20*%2F%2F**%0A%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Prototype%20for%20the%20custom%20element.%20It%20must%20contain%0A%20%20%20*%20%20%20an%20%60is%60%20property%20to%20specify%20the%20element%20name.%20Other%20properties%20populate%0A%20%20%20*%20%20%20the%20element%20prototype.%20The%20%60properties%60%2C%20%60observers%60%2C%20%60hostAttributes%60%2C%0A%20%20%20*%20%20%20and%20%60listeners%60%20properties%20are%20processed%20to%20create%20element%20features.%0A%20%20%20*%20%40return%20%7B!Object%7D%20Returns%20a%20custom%20element%20class%20for%20the%20given%20provided%0A%20%20%20*%20%20%20prototype%20%60info%60%20object.%20The%20name%20of%20the%20element%20if%20given%20by%20%60info.is%60.%0A%20%20%20*%2Fwindow.Polymer._polymerFn%3Dfunction(info)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Athrow%20new%20Error('Load%20polymer.html%20to%20use%20the%20Polymer()%20function.')%3B%7D%3B%2F*%20eslint-enable%20*%2Fwindow.Polymer.version%3D'2.7.0'%3B%2F*%20eslint-disable%20no-unused-vars%20*%2F%2F*%0A%20%20When%20using%20Closure%20Compiler%2C%20JSCompiler_renameProperty(property%2C%20object)%20is%20replaced%20by%20the%20munged%20name%20for%20object%5Bproperty%5D%0A%20%20We%20cannot%20alias%20this%20function%2C%20so%20we%20have%20to%20use%20a%20small%20shim%20that%20has%20the%20same%20behavior%20when%20not%20compiling.%0A%20%20*%2Fwindow.JSCompiler_renameProperty%3Dfunction(prop%2Cobj)%7Breturn%20prop%3B%7D%3B%2F*%20eslint-enable%20*%2F%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fboot.html.js%0A",
            "resourceBytes": 2183,
            "encodedBytes": 0,
            "unusedBytes": 122
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20CSS_URL_RX%3D%2F(url%5C()(%5B%5E)%5D*)(%5C))%2Fg%3Bvar%20ABS_URL%3D%2F(%5E%5C%2F)%7C(%5E%23)%7C(%5E%5B%5Cw-%5Cd%5D*%3A)%2F%3Bvar%20workingURL%3Dvoid%200%3Bvar%20resolveDoc%3Dvoid%200%3B%2F**%0A%20%20%20%20%20*%20Resolves%20the%20given%20URL%20against%20the%20provided%20%60baseUri'.%0A%20%20%20%20%20*%20%0A%20%20%20%20%20*%20Note%20that%20this%20function%20performs%20no%20resolution%20for%20URLs%20that%20start%0A%20%20%20%20%20*%20with%20%60%2F%60%20(absolute%20URLs)%20or%20%60%23%60%20(hash%20identifiers).%20%20For%20general%20purpose%0A%20%20%20%20%20*%20URL%20resolution%2C%20use%20%60window.URL%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.ResolveUrl%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20url%20Input%20URL%20to%20resolve%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%3D%7D%20baseURI%20Base%20URI%20to%20resolve%20the%20URL%20against%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20resolved%20URL%0A%20%20%20%20%20*%2Ffunction%20resolveUrl(url%2CbaseURI)%7Bif(url%26%26ABS_URL.test(url))%7Breturn%20url%3B%7D%2F%2F%20Lazy%20feature%20detection.%0Aif(workingURL%3D%3D%3Dundefined)%7BworkingURL%3Dfalse%3Btry%7Bvar%20u%3Dnew%20URL('b'%2C'http%3A%2F%2Fa')%3Bu.pathname%3D'c%2520d'%3BworkingURL%3Du.href%3D%3D%3D'http%3A%2F%2Fa%2Fc%2520d'%3B%7Dcatch(e)%7B%2F%2F%20silently%20fail%0A%7D%7Dif(!baseURI)%7BbaseURI%3Ddocument.baseURI%7C%7Cwindow.location.href%3B%7Dif(workingURL)%7Breturn%20new%20URL(url%2CbaseURI).href%3B%7D%2F%2F%20Fallback%20to%20creating%20an%20anchor%20into%20a%20disconnected%20document.%0Aif(!resolveDoc)%7BresolveDoc%3Ddocument.implementation.createHTMLDocument('temp')%3BresolveDoc.base%3DresolveDoc.createElement('base')%3BresolveDoc.head.appendChild(resolveDoc.base)%3BresolveDoc.anchor%3DresolveDoc.createElement('a')%3BresolveDoc.body.appendChild(resolveDoc.anchor)%3B%7DresolveDoc.base.href%3DbaseURI%3BresolveDoc.anchor.href%3Durl%3Breturn%20resolveDoc.anchor.href%7C%7Curl%3B%7D%2F**%0A%20%20%20%20%20*%20Resolves%20any%20relative%20URL's%20in%20the%20given%20CSS%20text%20against%20the%20provided%0A%20%20%20%20%20*%20%60ownerDocument%60's%20%60baseURI%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.ResolveUrl%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20cssText%20CSS%20text%20to%20process%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20to%20resolve%20the%20URL%20against%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Processed%20CSS%20text%20with%20resolved%20URL's%0A%20%20%20%20%20*%2Ffunction%20resolveCss(cssText%2CbaseURI)%7Breturn%20cssText.replace(CSS_URL_RX%2Cfunction(m%2Cpre%2Curl%2Cpost)%7Breturn%20pre%2B'%5C''%2BresolveUrl(url.replace(%2F%5B%22'%5D%2Fg%2C'')%2CbaseURI)%2B'%5C''%2Bpost%3B%7D)%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20path%20from%20a%20given%20%60url%60.%20The%20path%20includes%20the%20trailing%0A%20%20%20%20%20*%20%60%2F%60%20from%20the%20url.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.ResolveUrl%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20url%20Input%20URL%20to%20transform%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20resolved%20path%0A%20%20%20%20%20*%2Ffunction%20pathFromUrl(url)%7Breturn%20url.substring(0%2Curl.lastIndexOf('%2F')%2B1)%3B%7D%2F**%0A%20%20%20%20%20*%20Module%20with%20utilities%20for%20resolving%20relative%20URL's.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40summary%20Module%20with%20utilities%20for%20resolving%20relative%20URL's.%0A%20%20%20%20%20*%2FPolymer.ResolveUrl%3D%7BresolveCss%3AresolveCss%2CresolveUrl%3AresolveUrl%2CpathFromUrl%3ApathFromUrl%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fresolve-url.html.js%0A",
            "resourceBytes": 2672,
            "encodedBytes": 0,
            "unusedBytes": 96
          },
          {
            "name": "data:text/javascript;charset=utf-8,function%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7D(function()%7B'use%20strict'%3Bvar%20MODULE_STYLE_LINK_SELECTOR%3D'link%5Brel%3Dimport%5D%5Btype~%3Dcss%5D'%3Bvar%20INCLUDE_ATTR%3D'include'%3Bvar%20SHADY_UNSCOPED_ATTR%3D'shady-unscoped'%3Bfunction%20importModule(moduleId)%7Bvar%2F**%20Polymer.DomModule%20*%2FPolymerDomModule%3DcustomElements.get('dom-module')%3Bif(!PolymerDomModule)%7Breturn%20null%3B%7Dreturn%20PolymerDomModule.import(moduleId)%3B%7Dfunction%20styleForImport(importDoc)%7B%2F%2F%20NOTE%3A%20polyfill%20affordance.%0A%2F%2F%20under%20the%20HTMLImports%20polyfill%2C%20there%20will%20be%20no%20'body'%2C%0A%2F%2F%20but%20the%20import%20pseudo-doc%20can%20be%20used%20directly.%0Avar%20container%3DimportDoc.body%3FimportDoc.body%3AimportDoc%3Bvar%20importCss%3DPolymer.ResolveUrl.resolveCss(container.textContent%2CimportDoc.baseURI)%3Bvar%20style%3Ddocument.createElement('style')%3Bstyle.textContent%3DimportCss%3Breturn%20style%3B%7D%2F**%20%40typedef%20%7B%7Bassetpath%3A%20string%7D%7D%20*%2Fvar%20templateWithAssetPath%3Dvoid%200%3B%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20*%20Module%20with%20utilities%20for%20collection%20CSS%20text%20from%20%60%3Ctemplates%3E%60%2C%20external%0A%20%20%20*%20stylesheets%2C%20and%20%60dom-module%60s.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20with%20utilities%20for%20collection%20CSS%20text%20from%20various%20sources.%0A%20%20%20*%2Fvar%20StyleGather%3D%7B%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20%3Cstyle%3E%20elements%20in%20a%20space-separated%20list%20of%20%60dom-module%60s.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleIds%20List%20of%20dom-module%20id's%20within%20which%20to%0A%20%20%20%20%20*%20search%20for%20css.%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20%3Cstyle%3E%20elements%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromModules%3Afunction%20stylesFromModules(moduleIds)%7Bvar%20modules%3DmoduleIds.trim().split(%2F%5Cs%2B%2F)%3Bvar%20styles%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3Cmodules.length%3Bi%2B%2B)%7Bstyles.push.apply(styles%2C_toConsumableArray(this.stylesFromModule(modules%5Bi%5D)))%3B%7Dreturn%20styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20%3Cstyle%3E%20elements%20in%20a%20given%20%60dom-module%60.%0A%20%20%20%20%20*%20Styles%20in%20a%20%60dom-module%60%20can%20come%20either%20from%20%60%3Cstyle%3E%60s%20within%20the%0A%20%20%20%20%20*%20first%20%60%3Ctemplate%3E%60%2C%20or%20else%20from%20one%20or%20more%0A%20%20%20%20%20*%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20links%20outside%20the%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20dom-module%20id%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20styles.%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromModule%3Afunction%20stylesFromModule(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Bif(!m)%7Bconsole.warn('Could%20not%20find%20style%20data%20in%20module%20named'%2CmoduleId)%3Breturn%5B%5D%3B%7Dif(m._styles%3D%3D%3Dundefined)%7Bvar%20styles%3D%5B%5D%3B%2F%2F%20module%20imports%3A%20%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%0Astyles.push.apply(styles%2C_toConsumableArray(this._stylesFromModuleImports(m)))%3B%2F%2F%20include%20css%20from%20the%20first%20template%20in%20the%20module%0Avar%20template%3Dm.querySelector('template')%3Bif(template)%7Bstyles.push.apply(styles%2C_toConsumableArray(this.stylesFromTemplate(template%2C%2F**%20%40type%20%7BtemplateWithAssetPath%7D%20*%2Fm.assetpath)))%3B%7Dm._styles%3Dstyles%3B%7Dreturn%20m._styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20the%20%60%3Cstyle%3E%60%20elements%20within%20a%20given%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20baseURI%20for%20style%20content%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20styles%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromTemplate%3Afunction%20stylesFromTemplate(template%2CbaseURI)%7Bif(!template._styles)%7Bvar%20styles%3D%5B%5D%3B%2F%2F%20if%20element%20is%20a%20template%2C%20get%20content%20from%20its%20.content%0Avar%20e%24%3Dtemplate.content.querySelectorAll('style')%3Bfor(var%20i%3D0%3Bi%3Ce%24.length%3Bi%2B%2B)%7Bvar%20e%3De%24%5Bi%5D%3B%2F%2F%20support%20style%20sharing%20by%20allowing%20styles%20to%20%22include%22%0A%2F%2F%20other%20dom-modules%20that%20contain%20styling%0Avar%20include%3De.getAttribute(INCLUDE_ATTR)%3Bif(include)%7Bstyles.push.apply(styles%2C_toConsumableArray(this.stylesFromModules(include).filter(function(item%2Cindex%2Cself)%7Breturn%20self.indexOf(item)%3D%3D%3Dindex%3B%7D)))%3B%7Dif(baseURI)%7Be.textContent%3DPolymer.ResolveUrl.resolveCss(e.textContent%2CbaseURI)%3B%7Dstyles.push(e)%3B%7Dtemplate._styles%3Dstyles%3B%7Dreturn%20template._styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20%3Cstyle%3E%20elements%20%20from%20stylesheets%20loaded%20via%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20links%20within%20the%20specified%20%60dom-module%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20Id%20of%20%60dom-module%60%20to%20gather%20CSS%20from%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20styles.%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromModuleImports%3Afunction%20stylesFromModuleImports(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Breturn%20m%3Fthis._stylesFromModuleImports(m)%3A%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20module%20dom-module%20element%20that%20could%20contain%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20styles%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20styles%0A%20%20%20%20%20*%2F_stylesFromModuleImports%3Afunction%20_stylesFromModuleImports(module)%7Bvar%20styles%3D%5B%5D%3Bvar%20p%24%3Dmodule.querySelectorAll(MODULE_STYLE_LINK_SELECTOR)%3Bfor(var%20i%3D0%3Bi%3Cp%24.length%3Bi%2B%2B)%7Bvar%20p%3Dp%24%5Bi%5D%3Bif(p.import)%7Bvar%20importDoc%3Dp.import%3Bvar%20unscoped%3Dp.hasAttribute(SHADY_UNSCOPED_ATTR)%3Bif(unscoped%26%26!importDoc._unscopedStyle)%7Bvar%20style%3DstyleForImport(importDoc)%3Bstyle.setAttribute(SHADY_UNSCOPED_ATTR%2C'')%3BimportDoc._unscopedStyle%3Dstyle%3B%7Delse%20if(!importDoc._style)%7BimportDoc._style%3DstyleForImport(importDoc)%3B%7Dstyles.push(unscoped%3FimportDoc._unscopedStyle%3AimportDoc._style)%3B%7D%7Dreturn%20styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Returns%20CSS%20text%20of%20styles%20in%20a%20space-separated%20list%20of%20%60dom-module%60s.%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60stylesFromModules%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleIds%20List%20of%20dom-module%20id's%20within%20which%20to%0A%20%20%20%20%20*%20search%20for%20css.%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20specified%20%60dom-module%60s%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromModules%3Afunction%20cssFromModules(moduleIds)%7Bvar%20modules%3DmoduleIds.trim().split(%2F%5Cs%2B%2F)%3Bvar%20cssText%3D''%3Bfor(var%20i%3D0%3Bi%3Cmodules.length%3Bi%2B%2B)%7BcssText%2B%3Dthis.cssFromModule(modules%5Bi%5D)%3B%7Dreturn%20cssText%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20CSS%20text%20of%20styles%20in%20a%20given%20%60dom-module%60.%20%20CSS%20in%20a%20%60dom-module%60%0A%20%20%20%20%20*%20can%20come%20either%20from%20%60%3Cstyle%3E%60s%20within%20the%20first%20%60%3Ctemplate%3E%60%2C%20or%20else%0A%20%20%20%20%20*%20from%20one%20or%20more%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20links%20outside%20the%0A%20%20%20%20%20*%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Any%20%60%3Cstyles%3E%60%20processed%20are%20removed%20from%20their%20original%20location.%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60styleFromModule%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20dom-module%20id%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20specified%20%60dom-module%60%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromModule%3Afunction%20cssFromModule(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Bif(m%26%26m._cssText%3D%3D%3Dundefined)%7B%2F%2F%20module%20imports%3A%20%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%0Avar%20cssText%3Dthis._cssFromModuleImports(m)%3B%2F%2F%20include%20css%20from%20the%20first%20template%20in%20the%20module%0Avar%20t%3Dm.querySelector('template')%3Bif(t)%7BcssText%2B%3Dthis.cssFromTemplate(t%2C%2F**%20%40type%20%7BtemplateWithAssetPath%7D%20*%2Fm.assetpath)%3B%7Dm._cssText%3DcssText%7C%7Cnull%3B%7Dif(!m)%7Bconsole.warn('Could%20not%20find%20style%20data%20in%20module%20named'%2CmoduleId)%3B%7Dreturn%20m%26%26m._cssText%7C%7C''%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20CSS%20text%20of%20%60%3Cstyles%3E%60%20within%20a%20given%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Any%20%60%3Cstyles%3E%60%20processed%20are%20removed%20from%20their%20original%20location.%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60styleFromTemplate%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20to%20resolve%20the%20URL%20against%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20specified%20template%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromTemplate%3Afunction%20cssFromTemplate(template%2CbaseURI)%7Bvar%20cssText%3D''%3Bvar%20e%24%3Dthis.stylesFromTemplate(template%2CbaseURI)%3B%2F%2F%20if%20element%20is%20a%20template%2C%20get%20content%20from%20its%20.content%0Afor(var%20i%3D0%3Bi%3Ce%24.length%3Bi%2B%2B)%7Bvar%20e%3De%24%5Bi%5D%3Bif(e.parentNode)%7Be.parentNode.removeChild(e)%3B%7DcssText%2B%3De.textContent%3B%7Dreturn%20cssText%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20CSS%20text%20from%20stylesheets%20loaded%20via%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%0A%20%20%20%20%20*%20links%20within%20the%20specified%20%60dom-module%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60stylesFromModuleImports%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20Id%20of%20%60dom-module%60%20to%20gather%20CSS%20from%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20links%20in%20specified%20%60dom-module%60%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromModuleImports%3Afunction%20cssFromModuleImports(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Breturn%20m%3Fthis._cssFromModuleImports(m)%3A''%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20module%20dom-module%20element%20that%20could%20contain%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20styles%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20links%20in%20the%20dom-module%0A%20%20%20%20%20*%2F_cssFromModuleImports%3Afunction%20_cssFromModuleImports(module)%7Bvar%20cssText%3D''%3Bvar%20styles%3Dthis._stylesFromModuleImports(module)%3Bfor(var%20i%3D0%3Bi%3Cstyles.length%3Bi%2B%2B)%7BcssText%2B%3Dstyles%5Bi%5D.textContent%3B%7Dreturn%20cssText%3B%7D%7D%3BPolymer.StyleGather%3DStyleGather%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fstyle-gather.html.js%0A",
            "resourceBytes": 9256,
            "encodedBytes": 0,
            "unusedBytes": 2700
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20attr%3D'include'%3Bvar%20CustomStyleInterface%3Dwindow.ShadyCSS.CustomStyleInterface%3B%2F**%0A%20%20%20*%20Custom%20element%20for%20defining%20styles%20in%20the%20main%20document%20that%20can%20take%0A%20%20%20*%20advantage%20of%20%5Bshady%20DOM%5D(https%3A%2F%2Fgithub.com%2Fwebcomponents%2Fshadycss)%20shims%0A%20%20%20*%20for%20style%20encapsulation%2C%20custom%20properties%2C%20and%20custom%20mixins.%0A%20%20%20*%0A%20%20%20*%20-%20Document%20styles%20defined%20in%20a%20%60%3Ccustom-style%3E%60%20are%20shimmed%20to%20ensure%20they%0A%20%20%20*%20%20%20do%20not%20leak%20into%20local%20DOM%20when%20running%20on%20browsers%20without%20native%0A%20%20%20*%20%20%20Shadow%20DOM.%0A%20%20%20*%20-%20Custom%20properties%20can%20be%20defined%20in%20a%20%60%3Ccustom-style%3E%60.%20Use%20the%20%60html%60%20selector%0A%20%20%20*%20%20%20to%20define%20custom%20properties%20that%20apply%20to%20all%20custom%20elements.%0A%20%20%20*%20-%20Custom%20mixins%20can%20be%20defined%20in%20a%20%60%3Ccustom-style%3E%60%2C%20if%20you%20import%20the%20optional%0A%20%20%20*%20%20%20%5Bapply%20shim%5D(https%3A%2F%2Fgithub.com%2Fwebcomponents%2Fshadycss%23about-applyshim)%0A%20%20%20*%20%20%20(%60shadycss%2Fapply-shim.html%60).%0A%20%20%20*%0A%20%20%20*%20To%20use%3A%0A%20%20%20*%0A%20%20%20*%20-%20Import%20%60custom-style.html%60.%0A%20%20%20*%20-%20Place%20a%20%60%3Ccustom-style%3E%60%20element%20in%20the%20main%20document%2C%20wrapping%20an%20inline%20%60%3Cstyle%3E%60%20tag%20that%0A%20%20%20*%20%20%20contains%20the%20CSS%20rules%20you%20want%20to%20shim.%0A%20%20%20*%0A%20%20%20*%20For%20example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3C!--%20import%20apply%20shim--only%20required%20if%20using%20mixins%20--%3E%0A%20%20%20*%20%3Clink%20rel%3D%22import%22%20href%3D%22bower_components%2Fshadycss%2Fapply-shim.html%22%3E%0A%20%20%20*%20%3C!--%20import%20custom-style%20element%20--%3E%0A%20%20%20*%20%3Clink%20rel%3D%22import%22%20href%3D%22bower_components%2Fpolymer%2Flib%2Felements%2Fcustom-style.html%22%3E%0A%20%20%20*%0A%20%20%20*%20%3Ccustom-style%3E%0A%20%20%20*%20%20%20%3Cstyle%3E%0A%20%20%20*%20%20%20%20%20html%20%7B%0A%20%20%20*%20%20%20%20%20%20%20--custom-color%3A%20blue%3B%0A%20%20%20*%20%20%20%20%20%20%20--custom-mixin%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20*%20%20%20%20%20%20%20%20%20color%3A%20red%3B%0A%20%20%20*%20%20%20%20%20%20%20%7D%3B%0A%20%20%20*%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%3C%2Fstyle%3E%0A%20%20%20*%20%3C%2Fcustom-style%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40extends%20HTMLElement%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20for%20defining%20styles%20in%20the%20main%20document%20that%20can%0A%20%20%20*%20%20%20take%20advantage%20of%20Polymer's%20style%20scoping%20and%20custom%20properties%20shims.%0A%20%20%20*%2Fvar%20CustomStyle%3Dfunction(_HTMLElement)%7B_inherits(CustomStyle%2C_HTMLElement)%3Bfunction%20CustomStyle()%7B_classCallCheck(this%2CCustomStyle)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(CustomStyle.__proto__%7C%7CObject.getPrototypeOf(CustomStyle)).call(this))%3B_this._style%3Dnull%3BCustomStyleInterface.addCustomStyle(_this)%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20light-DOM%20%60%3Cstyle%3E%60%20child%20this%20element%20wraps.%20%20Upon%20first%0A%20%20%20%20%20*%20call%20any%20style%20modules%20referenced%20via%20the%20%60include%60%20attribute%20will%20be%0A%20%20%20%20%20*%20concatenated%20to%20this%20element's%20%60%3Cstyle%3E%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BHTMLStyleElement%7D%20This%20element's%20light-DOM%20%60%3Cstyle%3E%60%0A%20%20%20%20%20*%2F_createClass(CustomStyle%2C%5B%7Bkey%3A'getStyle'%2Cvalue%3Afunction%20getStyle()%7Bif(this._style)%7Breturn%20this._style%3B%7Dvar%20style%3D%2F**%20%40type%20%7BHTMLStyleElement%7D%20*%2Fthis.querySelector('style')%3Bif(!style)%7Breturn%20null%3B%7Dthis._style%3Dstyle%3Bvar%20include%3Dstyle.getAttribute(attr)%3Bif(include)%7Bstyle.removeAttribute(attr)%3Bstyle.textContent%3DPolymer.StyleGather.cssFromModules(include)%2Bstyle.textContent%3B%7D%2F*%0A%20%20%20%20%20%20HTML%20Imports%20styling%20the%20main%20document%20are%20deprecated%20in%20Chrome%0A%20%20%20%20%20%20https%3A%2F%2Fcrbug.com%2F523952%0A%0A%20%20%20%20%20%20If%20this%20element%20is%20not%20in%20the%20main%20document%2C%20then%20it%20must%20be%20in%20an%20HTML%20Import%20document.%0A%20%20%20%20%20%20In%20that%20case%2C%20move%20the%20custom%20style%20to%20the%20main%20document.%0A%0A%20%20%20%20%20%20The%20ordering%20of%20%60%3Ccustom-style%3E%60%20should%20stay%20the%20same%20as%20when%20loaded%20by%20HTML%20Imports%2C%20but%20there%20may%20be%20odd%0A%20%20%20%20%20%20cases%20of%20ordering%20w.r.t%20the%20main%20document%20styles.%0A%20%20%20%20%20%20*%2Fif(this.ownerDocument!%3D%3Dwindow.document)%7Bwindow.document.head.appendChild(this)%3B%7Dreturn%20this._style%3B%7D%7D%5D)%3Breturn%20CustomStyle%3B%7D(HTMLElement)%3Bwindow.customElements.define('custom-style'%2CCustomStyle)%3B%2F**%20%40const%20*%2FPolymer.CustomStyle%3DCustomStyle%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fcustom-style.html.js%0A",
            "resourceBytes": 5009,
            "encodedBytes": 0,
            "unusedBytes": 0
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20siteColor%3Dwindow.ga_data.site.colors.siteColor%3Bif(siteColor!%3D%3Dundefined)%7Bdocument.documentElement.style.setProperty('--color-theme'%2CsiteColor)%3B%7D%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fthemes%2Funiversal.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fthemes%2Funiversal.html.js%0A",
            "resourceBytes": 361,
            "encodedBytes": 0,
            "children": [
              {
                "name": "gallium/themes/universal.html_script_0.js",
                "resourceBytes": 149
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 212
              }
            ]
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/apply-shim.min.js",
            "resourceBytes": 10617,
            "encodedBytes": 4261,
            "unusedBytes": 1409
          },
          {
            "name": "data:text/javascript;charset=utf-8,%2F**%20%40suppress%20%7Bdeprecated%7D%20*%2F(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Sets%20the%20global%2C%20legacy%20settings.%0A%20%20%20*%0A%20%20%20*%20%40deprecated%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.Settings%3DPolymer.Settings%7C%7C%7B%7D%3BPolymer.Settings.useShadow%3D!window.ShadyDOM%3BPolymer.Settings.useNativeCSSProperties%3DBoolean(!window.ShadyCSS%7C%7Cwindow.ShadyCSS.nativeCss)%3BPolymer.Settings.useNativeCustomElements%3D!window.customElements.polyfillWrapFlushCallback%3B%2F**%0A%20%20%20*%20Globally%20settable%20property%20that%20is%20automatically%20assigned%20to%0A%20%20%20*%20%60Polymer.ElementMixin%60%20instances%2C%20useful%20for%20binding%20in%20templates%20to%0A%20%20%20*%20make%20URL's%20relative%20to%20an%20application's%20root.%20%20Defaults%20to%20the%20main%0A%20%20%20*%20document%20URL%2C%20but%20can%20be%20overridden%20by%20users.%20%20It%20may%20be%20useful%20to%20set%0A%20%20%20*%20%60Polymer.rootPath%60%20to%20provide%20a%20stable%20application%20mount%20path%20when%0A%20%20%20*%20using%20client%20side%20routing.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.rootPath%3DPolymer.rootPath%7C%7CPolymer.ResolveUrl.pathFromUrl(document.baseURI%7C%7Cwindow.location.href)%3B%2F**%0A%20%20%20*%20Sets%20the%20global%20rootPath%20property%20used%20by%20%60Polymer.ElementMixin%60%20and%0A%20%20%20*%20available%20via%20%60Polymer.rootPath%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20new%20root%20path%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setRootPath%3Dfunction(path)%7BPolymer.rootPath%3Dpath%3B%7D%3B%2F**%0A%20%20%20*%20A%20global%20callback%20used%20to%20sanitize%20any%20value%20before%20inserting%20it%20into%20the%20DOM.%20The%20callback%20signature%20is%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20Polymer%20%3D%20%7B%0A%20%20%20*%20%20%20%20%20%20%20sanitizeDOMValue%3A%20function(value%2C%20name%2C%20type%2C%20node)%20%7B%20...%20%7D%0A%20%20%20*%20%20%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20Where%3A%0A%20%20%20*%0A%20%20%20*%20%60value%60%20is%20the%20value%20to%20sanitize.%0A%20%20%20*%20%60name%60%20is%20the%20name%20of%20an%20attribute%20or%20property%20(for%20example%2C%20href).%0A%20%20%20*%20%60type%60%20indicates%20where%20the%20value%20is%20being%20inserted%3A%20one%20of%20property%2C%20attribute%2C%20or%20text.%0A%20%20%20*%20%60node%60%20is%20the%20node%20where%20the%20value%20is%20being%20inserted.%0A%20%20%20*%0A%20%20%20*%20%40type%20%7B(function(*%2Cstring%2Cstring%2CNode)%3A*)%7Cundefined%7D%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.sanitizeDOMValue%3DPolymer.sanitizeDOMValue%7C%7Cnull%3B%2F**%0A%20%20%20*%20Sets%20the%20global%20sanitizeDOMValue%20available%20via%20%60Polymer.sanitizeDOMValue%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7B(function(*%2Cstring%2Cstring%2CNode)%3A*)%7Cundefined%7D%20newSanitizeDOMValue%20the%20global%20sanitizeDOMValue%20callback%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setSanitizeDOMValue%3Dfunction(newSanitizeDOMValue)%7BPolymer.sanitizeDOMValue%3DnewSanitizeDOMValue%3B%7D%3B%2F**%0A%20%20%20*%20Globally%20settable%20property%20to%20make%20Polymer%20Gestures%20use%20passive%20TouchEvent%20listeners%20when%20recognizing%20gestures.%0A%20%20%20*%20When%20set%20to%20%60true%60%2C%20gestures%20made%20from%20touch%20will%20not%20be%20able%20to%20prevent%20scrolling%2C%20allowing%20for%20smoother%0A%20%20%20*%20scrolling%20performance.%0A%20%20%20*%20Defaults%20to%20%60false%60%20for%20backwards%20compatibility.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.passiveTouchGestures%3DPolymer.passiveTouchGestures%7C%7Cfalse%3B%2F**%0A%20%20%20*%20Sets%20%60passiveTouchGestures%60%20globally%20for%20all%20elements%20using%20Polymer%20Gestures.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bboolean%7D%20usePassive%20enable%20or%20disable%20passive%20touch%20gestures%20globally%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setPassiveTouchGestures%3Dfunction(usePassive)%7BPolymer.passiveTouchGestures%3DusePassive%3B%7D%3BPolymer.legacyOptimizations%3DPolymer.legacyOptimizations%7C%7Cwindow.PolymerSettings%26%26window.PolymerSettings.legacyOptimizations%7C%7Cfalse%3B%2F**%0A%20%20%20*%20Sets%20%60legacyOptimizations%60%20globally%20for%20all%20elements.%20Enables%0A%20%20%20*%20optimizations%20when%20only%20legacy%20Polymer()%20style%20elements%20are%20used.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bboolean%7D%20useLegacyOptimizations%20enable%20or%20disable%20legacy%20optimizations%20globally.%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setLegacyOptimizations%3Dfunction(useLegacyOptimizations)%7BPolymer.legacyOptimizations%3DuseLegacyOptimizations%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fsettings.html.js%0A",
            "resourceBytes": 3665,
            "encodedBytes": 0,
            "unusedBytes": 261
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20unique%20global%20id%20for%20deduping%20mixins.%0Avar%20dedupeId%3D0%3B%2F**%0A%20%20%20*%20%40constructor%0A%20%20%20*%20%40extends%20%7BFunction%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20MixinFunction()%7B%7D%2F**%20%40type%20%7B(WeakMap%20%7C%20undefined)%7D%20*%2FMixinFunction.prototype.__mixinApplications%3B%2F**%20%40type%20%7B(Object%20%7C%20undefined)%7D%20*%2FMixinFunction.prototype.__mixinSet%3B%2F*%20eslint-disable%20valid-jsdoc%20*%2F%2F**%0A%20%20%20*%20Wraps%20an%20ES6%20class%20expression%20mixin%20such%20that%20the%20mixin%20is%20only%20applied%0A%20%20%20*%20if%20it%20has%20not%20already%20been%20applied%20its%20base%20argument.%20Also%20memoizes%20mixin%0A%20%20%20*%20applications.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40template%20T%0A%20%20%20*%20%40param%20%7BT%7D%20mixin%20ES6%20class%20expression%20mixin%20to%20wrap%0A%20%20%20*%20%40return%20%7BT%7D%0A%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20*%2FPolymer.dedupingMixin%3Dfunction(mixin)%7Bvar%20mixinApplications%3D%2F**%20%40type%20%7B!MixinFunction%7D%20*%2Fmixin.__mixinApplications%3Bif(!mixinApplications)%7BmixinApplications%3Dnew%20WeakMap()%3B%2F**%20%40type%20%7B!MixinFunction%7D%20*%2Fmixin.__mixinApplications%3DmixinApplications%3B%7D%2F%2F%20maintain%20a%20unique%20id%20for%20each%20mixin%0Avar%20mixinDedupeId%3DdedupeId%2B%2B%3Bfunction%20dedupingMixin(base)%7Bvar%20baseSet%3D%2F**%20%40type%20%7B!MixinFunction%7D%20*%2Fbase.__mixinSet%3Bif(baseSet%26%26baseSet%5BmixinDedupeId%5D)%7Breturn%20base%3B%7Dvar%20map%3DmixinApplications%3Bvar%20extended%3Dmap.get(base)%3Bif(!extended)%7Bextended%3D%2F**%20%40type%20%7B!Function%7D%20*%2Fmixin(base)%3Bmap.set(base%2Cextended)%3B%7D%2F%2F%20copy%20inherited%20mixin%20set%20from%20the%20extended%20class%2C%20or%20the%20base%20class%0A%2F%2F%20NOTE%3A%20we%20avoid%20use%20of%20Set%20here%20because%20some%20browser%20(IE11)%0A%2F%2F%20cannot%20extend%20a%20base%20Set%20via%20the%20constructor.%0Avar%20mixinSet%3DObject.create(%2F**%20%40type%20%7B!MixinFunction%7D%20*%2Fextended.__mixinSet%7C%7CbaseSet%7C%7Cnull)%3BmixinSet%5BmixinDedupeId%5D%3Dtrue%3B%2F**%20%40type%20%7B!MixinFunction%7D%20*%2Fextended.__mixinSet%3DmixinSet%3Breturn%20extended%3B%7Dreturn(%2F**%20%40type%20%7BT%7D%20*%2FdedupingMixin)%3B%7D%3B%2F*%20eslint-enable%20valid-jsdoc%20*%2F%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fmixin.html.js%0A",
            "resourceBytes": 1863,
            "encodedBytes": 0,
            "unusedBytes": 26
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20modules%3D%7B%7D%3Bvar%20lcModules%3D%7B%7D%3Bfunction%20setModule(id%2Cmodule)%7B%2F%2F%20store%20id%20separate%20from%20lowercased%20id%20so%20that%0A%2F%2F%20in%20all%20cases%20mixedCase%20id%20will%20stored%20distinctly%0A%2F%2F%20and%20lowercase%20version%20is%20a%20fallback%0Amodules%5Bid%5D%3DlcModules%5Bid.toLowerCase()%5D%3Dmodule%3B%7Dfunction%20findModule(id)%7Breturn%20modules%5Bid%5D%7C%7ClcModules%5Bid.toLowerCase()%5D%3B%7Dfunction%20styleOutsideTemplateCheck(inst)%7Bif(inst.querySelector('style'))%7Bconsole.warn('dom-module%20%25s%20has%20style%20outside%20template'%2Cinst.id)%3B%7D%7D%2F**%0A%20%20%20*%20The%20%60dom-module%60%20element%20registers%20the%20dom%20it%20contains%20to%20the%20name%20given%0A%20%20%20*%20by%20the%20module's%20id%20attribute.%20It%20provides%20a%20unified%20database%20of%20dom%0A%20%20%20*%20accessible%20via%20its%20static%20%60import%60%20API.%0A%20%20%20*%0A%20%20%20*%20A%20key%20use%20case%20of%20%60dom-module%60%20is%20for%20providing%20custom%20element%20%60%3Ctemplate%3E%60s%0A%20%20%20*%20via%20HTML%20imports%20that%20are%20parsed%20by%20the%20native%20HTML%20parser%2C%20that%20can%20be%0A%20%20%20*%20relocated%20during%20a%20bundling%20pass%20and%20still%20looked%20up%20by%20%60id%60.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdom-module%20id%3D%22foo%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Cimg%20src%3D%22stuff.png%22%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-module%3E%0A%20%20%20*%0A%20%20%20*%20Then%20in%20code%20in%20some%20other%20location%20that%20cannot%20access%20the%20dom-module%20above%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20let%20img%20%3D%20customElements.get('dom-module').import('foo'%2C%20'img')%3B%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40extends%20HTMLElement%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20that%20provides%20a%20registry%20of%20relocatable%20DOM%20content%0A%20%20%20*%20%20%20by%20%60id%60%20that%20is%20agnostic%20to%20bundling.%0A%20%20%20*%20%40unrestricted%0A%20%20%20*%2Fvar%20DomModule%3Dfunction(_HTMLElement)%7B_inherits(DomModule%2C_HTMLElement)%3Bfunction%20DomModule()%7B_classCallCheck(this%2CDomModule)%3Breturn%20_possibleConstructorReturn(this%2C(DomModule.__proto__%7C%7CObject.getPrototypeOf(DomModule)).apply(this%2Carguments))%3B%7D_createClass(DomModule%2C%5B%7Bkey%3A'attributeChangedCallback'%2C%2F*%20eslint-disable%20no-unused-vars%20*%2F%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20value%20of%20attribute.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Current%20value%20of%20attribute.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20namespace%20Attribute%20namespace.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fvalue%3Afunction%20attributeChangedCallback(name%2Cold%2Cvalue%2Cnamespace)%7Bif(old!%3D%3Dvalue)%7Bthis.register()%3B%7D%7D%2F*%20eslint-enable%20no-unused-args%20*%2F%2F**%0A%20%20%20%20%20*%20The%20absolute%20URL%20of%20the%20original%20location%20of%20this%20%60dom-module%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20value%20will%20differ%20from%20this%20element's%20%60ownerDocument%60%20in%20the%0A%20%20%20%20%20*%20following%20ways%3A%0A%20%20%20%20%20*%20-%20Takes%20into%20account%20any%20%60assetpath%60%20attribute%20added%20during%20bundling%0A%20%20%20%20%20*%20%20%20to%20indicate%20the%20original%20location%20relative%20to%20the%20bundled%20location%0A%20%20%20%20%20*%20-%20Uses%20the%20HTMLImports%20polyfill's%20%60importForElement%60%20API%20to%20ensure%0A%20%20%20%20%20*%20%20%20the%20path%20is%20relative%20to%20the%20import%20document's%20location%20since%0A%20%20%20%20%20*%20%20%20%60ownerDocument%60%20is%20not%20currently%20polyfilled%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'register'%2C%2F**%0A%20%20%20%20%20*%20Registers%20the%20dom-module%20at%20a%20given%20id.%20This%20method%20should%20only%20be%20called%0A%20%20%20%20%20*%20when%20a%20dom-module%20is%20imperatively%20created.%20For%0A%20%20%20%20%20*%20example%2C%20%60document.createElement('dom-module').register('foo')%60.%0A%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20id%20The%20id%20at%20which%20to%20register%20the%20dom-module.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fvalue%3Afunction%20register(id)%7Bid%3Did%7C%7Cthis.id%3Bif(id)%7B%2F%2F%20Under%20strictTemplatePolicy%2C%20reject%20and%20null%20out%20any%20re-registered%0A%2F%2F%20dom-module%20since%20it%20is%20ambiguous%20whether%20first-in%20or%20last-in%20is%20trusted%20%0Aif(Polymer.strictTemplatePolicy%26%26findModule(id)!%3D%3Dundefined)%7BsetModule(id%2Cnull)%3Bthrow%20new%20Error('strictTemplatePolicy%3A%20dom-module%20'%2Bid%2B'%20re-registered')%3B%7Dthis.id%3Did%3BsetModule(id%2Cthis)%3BstyleOutsideTemplateCheck(this)%3B%7D%7D%7D%2C%7Bkey%3A'assetpath'%2Cget%3Afunction%20get()%7B%2F%2F%20Don't%20override%20existing%20assetpath.%0Aif(!this.__assetpath)%7B%2F%2F%20note%3A%20assetpath%20set%20via%20an%20attribute%20must%20be%20relative%20to%20this%0A%2F%2F%20element's%20location%3B%20accomodate%20polyfilled%20HTMLImports%0Avar%20owner%3Dwindow.HTMLImports%26%26HTMLImports.importForElement%3FHTMLImports.importForElement(this)%7C%7Cdocument%3Athis.ownerDocument%3Bvar%20url%3DPolymer.ResolveUrl.resolveUrl(this.getAttribute('assetpath')%7C%7C''%2Cowner.baseURI)%3Bthis.__assetpath%3DPolymer.ResolveUrl.pathFromUrl(url)%3B%7Dreturn%20this.__assetpath%3B%7D%7D%5D%2C%5B%7Bkey%3A'import'%2C%2F**%0A%20%20%20%20%20*%20Retrieves%20the%20element%20specified%20by%20the%20css%20%60selector%60%20in%20the%20module%0A%20%20%20%20%20*%20registered%20by%20%60id%60.%20For%20example%2C%20this.import('foo'%2C%20'img')%3B%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20id%20The%20id%20of%20the%20dom-module%20in%20which%20to%20search.%0A%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20selector%20The%20css%20selector%20by%20which%20to%20find%20the%20element.%0A%20%20%20%20%20*%20%40return%20%7BElement%7D%20Returns%20the%20element%20which%20matches%20%60selector%60%20in%20the%0A%20%20%20%20%20*%20module%20registered%20at%20the%20specified%20%60id%60.%0A%20%20%20%20%20*%2Fvalue%3Afunction%20_import(id%2Cselector)%7Bif(id)%7Bvar%20m%3DfindModule(id)%3Bif(m%26%26selector)%7Breturn%20m.querySelector(selector)%3B%7Dreturn%20m%3B%7Dreturn%20null%3B%7D%7D%2C%7Bkey%3A'observedAttributes'%2Cget%3Afunction%20get()%7Breturn%5B'id'%5D%3B%7D%7D%5D)%3Breturn%20DomModule%3B%7D(HTMLElement)%3BDomModule.prototype%5B'modules'%5D%3Dmodules%3BcustomElements.define('dom-module'%2CDomModule)%3B%2F**%20%40const%20*%2FPolymer.DomModule%3DDomModule%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-module.html.js%0A",
            "resourceBytes": 6199,
            "encodedBytes": 0,
            "unusedBytes": 0
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Module%20with%20utilities%20for%20manipulating%20structured%20data%20path%20strings.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20with%20utilities%20for%20manipulating%20structured%20data%20path%20strings.%0A%20%20%20*%2Fvar%20Path%3D%7B%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20given%20string%20is%20a%20structured%20data%20path%20(has%20dots).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.isPath('foo.bar.baz')%20%2F%2F%20true%0A%20%20%20%20%20*%20Polymer.Path.isPath('foo')%20%20%20%20%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20string%20contained%20one%20or%20more%20dots%0A%20%20%20%20%20*%2FisPath%3Afunction%20isPath(path)%7Breturn%20path.indexOf('.')%3E%3D0%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20the%20root%20property%20name%20for%20the%20given%20path.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.root('foo.bar.baz')%20%2F%2F%20'foo'%0A%20%20%20%20%20*%20Polymer.Path.root('foo')%20%20%20%20%20%20%20%20%20%2F%2F%20'foo'%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Root%20property%20name%0A%20%20%20%20%20*%2Froot%3Afunction%20root(path)%7Bvar%20dotIndex%3Dpath.indexOf('.')%3Bif(dotIndex%3D%3D%3D-1)%7Breturn%20path%3B%7Dreturn%20path.slice(0%2CdotIndex)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Given%20%60base%60%20is%20%60foo.bar%60%2C%20%60foo%60%20is%20an%20ancestor%2C%20%60foo.bar%60%20is%20not%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20given%20path%20is%20an%20ancestor%20of%20the%20base%20path.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.isAncestor('foo.bar'%2C%20'foo')%20%20%20%20%20%20%20%20%20%2F%2F%20true%0A%20%20%20%20%20*%20Polymer.Path.isAncestor('foo.bar'%2C%20'foo.bar')%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20Polymer.Path.isAncestor('foo.bar'%2C%20'foo.bar.baz')%20%2F%2F%20false%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Path%20string%20to%20test%20against.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%20to%20test.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60path%60%20is%20an%20ancestor%20of%20%60base%60.%0A%20%20%20%20%20*%2FisAncestor%3Afunction%20isAncestor(base%2Cpath)%7B%2F%2F%20%20%20%20%20base.startsWith(path%20%2B%20'.')%3B%0Areturn%20base.indexOf(path%2B'.')%3D%3D%3D0%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Given%20%60base%60%20is%20%60foo.bar%60%2C%20%60foo.bar.baz%60%20is%20an%20descendant%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.isDescendant('foo.bar'%2C%20'foo.bar.baz')%20%2F%2F%20true%0A%20%20%20%20%20*%20Polymer.Path.isDescendant('foo.bar'%2C%20'foo.bar')%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20Polymer.Path.isDescendant('foo.bar'%2C%20'foo')%20%20%20%20%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Path%20string%20to%20test%20against.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%20to%20test.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60path%60%20is%20a%20descendant%20of%20%60base%60.%0A%20%20%20%20%20*%2FisDescendant%3Afunction%20isDescendant(base%2Cpath)%7B%2F%2F%20%20%20%20%20path.startsWith(base%20%2B%20'.')%3B%0Areturn%20path.indexOf(base%2B'.')%3D%3D%3D0%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Replaces%20a%20previous%20base%20path%20with%20a%20new%20base%20path%2C%20preserving%20the%0A%20%20%20%20%20*%20remainder%20of%20the%20path.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20User%20must%20ensure%20%60path%60%20has%20a%20prefix%20of%20%60base%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.translate('foo.bar'%2C%20'zot'%2C%20'foo.bar.baz')%20%2F%2F%20'zot.baz'%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Current%20base%20string%20to%20remove%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20newBase%20New%20base%20string%20to%20replace%20with%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20to%20translate%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Translated%20string%0A%20%20%20%20%20*%2Ftranslate%3Afunction%20translate(base%2CnewBase%2Cpath)%7Breturn%20newBase%2Bpath.slice(base.length)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Path%20string%20to%20test%20against%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%20to%20test%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60path%60%20is%20equal%20to%20%60base%60%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%2Fmatches%3Afunction%20matches(base%2Cpath)%7Breturn%20base%3D%3D%3Dpath%7C%7Cthis.isAncestor(base%2Cpath)%7C%7Cthis.isDescendant(base%2Cpath)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Converts%20array-based%20paths%20to%20flattened%20path.%20%20String-based%20paths%0A%20%20%20%20%20*%20are%20returned%20as-is.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.normalize(%5B'foo.bar'%2C%200%2C%20'baz'%5D)%20%20%2F%2F%20'foo.bar.0.baz'%0A%20%20%20%20%20*%20Polymer.Path.normalize('foo.bar.0.baz')%20%20%20%20%20%20%20%20%2F%2F%20'foo.bar.0.baz'%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Input%20path%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Flattened%20path%0A%20%20%20%20%20*%2Fnormalize%3Afunction%20normalize(path)%7Bif(Array.isArray(path))%7Bvar%20parts%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3Cpath.length%3Bi%2B%2B)%7Bvar%20args%3Dpath%5Bi%5D.toString().split('.')%3Bfor(var%20j%3D0%3Bj%3Cargs.length%3Bj%2B%2B)%7Bparts.push(args%5Bj%5D)%3B%7D%7Dreturn%20parts.join('.')%3B%7Delse%7Breturn%20path%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Splits%20a%20path%20into%20an%20array%20of%20property%20names.%20Accepts%20either%20arrays%0A%20%20%20%20%20*%20of%20path%20parts%20or%20strings.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.split(%5B'foo.bar'%2C%200%2C%20'baz'%5D)%20%20%2F%2F%20%5B'foo'%2C%20'bar'%2C%20'0'%2C%20'baz'%5D%0A%20%20%20%20%20*%20Polymer.Path.split('foo.bar.0.baz')%20%20%20%20%20%20%20%20%2F%2F%20%5B'foo'%2C%20'bar'%2C%20'0'%2C%20'baz'%5D%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Input%20path%0A%20%20%20%20%20*%20%40return%20%7B!Array%3Cstring%3E%7D%20Array%20of%20path%20parts%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20*%2Fsplit%3Afunction%20split(path)%7Bif(Array.isArray(path))%7Breturn%20this.normalize(path).split('.')%3B%7Dreturn%20path.toString().split('.')%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Reads%20a%20value%20from%20a%20path.%20%20If%20any%20sub-property%20in%20the%20path%20is%20%60undefined%60%2C%0A%20%20%20%20%20*%20this%20method%20returns%20%60undefined%60%20(will%20never%20throw.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20root%20Object%20from%20which%20to%20dereference%20path%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20read%0A%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20info%20If%20an%20object%20is%20provided%20to%20%60info%60%2C%20the%20normalized%0A%20%20%20%20%20*%20%20(flattened)%20path%20will%20be%20set%20to%20%60info.path%60.%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20at%20path%2C%20or%20%60undefined%60%20if%20the%20path%20could%20not%20be%0A%20%20%20%20%20*%20%20fully%20dereferenced.%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%2Fget%3Afunction%20get(root%2Cpath%2Cinfo)%7Bvar%20prop%3Droot%3Bvar%20parts%3Dthis.split(path)%3B%2F%2F%20Loop%20over%20path%20parts%5B0..n-1%5D%20and%20dereference%0Afor(var%20i%3D0%3Bi%3Cparts.length%3Bi%2B%2B)%7Bif(!prop)%7Breturn%3B%7Dvar%20part%3Dparts%5Bi%5D%3Bprop%3Dprop%5Bpart%5D%3B%7Dif(info)%7Binfo.path%3Dparts.join('.')%3B%7Dreturn%20prop%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Sets%20a%20value%20to%20a%20path.%20%20If%20any%20sub-property%20in%20the%20path%20is%20%60undefined%60%2C%0A%20%20%20%20%20*%20this%20method%20will%20no-op.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20root%20Object%20from%20which%20to%20dereference%20path%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20set%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20to%20path%0A%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20The%20normalized%20version%20of%20the%20input%20path%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%2Fset%3Afunction%20set(root%2Cpath%2Cvalue)%7Bvar%20prop%3Droot%3Bvar%20parts%3Dthis.split(path)%3Bvar%20last%3Dparts%5Bparts.length-1%5D%3Bif(parts.length%3E1)%7B%2F%2F%20Loop%20over%20path%20parts%5B0..n-2%5D%20and%20dereference%0Afor(var%20i%3D0%3Bi%3Cparts.length-1%3Bi%2B%2B)%7Bvar%20part%3Dparts%5Bi%5D%3Bprop%3Dprop%5Bpart%5D%3Bif(!prop)%7Breturn%3B%7D%7D%2F%2F%20Set%20value%20to%20object%20at%20end%20of%20path%0Aprop%5Blast%5D%3Dvalue%3B%7Delse%7B%2F%2F%20Simple%20property%20set%0Aprop%5Bpath%5D%3Dvalue%3B%7Dreturn%20parts.join('.')%3B%7D%7D%3B%2F**%0A%20%20%20*%20Returns%20true%20if%20the%20given%20string%20is%20a%20structured%20data%20path%20(has%20dots).%0A%20%20%20*%0A%20%20%20*%20This%20function%20is%20deprecated.%20%20Use%20%60Polymer.Path.isPath%60%20instead.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20Polymer.Path.isDeep('foo.bar.baz')%20%2F%2F%20true%0A%20%20%20*%20Polymer.Path.isDeep('foo')%20%20%20%20%20%20%20%20%20%2F%2F%20false%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40deprecated%0A%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20string%20contained%20one%20or%20more%20dots%0A%20%20%20*%2FPath.isDeep%3DPath.isPath%3BPolymer.Path%3DPath%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fpath.html.js%0A",
            "resourceBytes": 7136,
            "encodedBytes": 0,
            "unusedBytes": 1372
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20caseMap%3D%7B%7D%3Bvar%20DASH_TO_CAMEL%3D%2F-%5Ba-z%5D%2Fg%3Bvar%20CAMEL_TO_DASH%3D%2F(%5BA-Z%5D)%2Fg%3B%2F**%0A%20%20%20*%20Module%20with%20utilities%20for%20converting%20between%20%22dash-case%22%20and%20%22camelCase%22%0A%20%20%20*%20identifiers.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20that%20provides%20utilities%20for%20converting%20between%20%22dash-case%22%0A%20%20%20*%20%20%20and%20%22camelCase%22.%0A%20%20%20*%2Fvar%20CaseMap%3D%7B%2F**%0A%20%20%20%20%20*%20Converts%20%22dash-case%22%20identifier%20(e.g.%20%60foo-bar-baz%60)%20to%20%22camelCase%22%0A%20%20%20%20%20*%20(e.g.%20%60fooBarBaz%60).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.CaseMap%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20dash%20Dash-case%20identifier%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Camel-case%20representation%20of%20the%20identifier%0A%20%20%20%20%20*%2FdashToCamelCase%3Afunction%20dashToCamelCase(dash)%7Breturn%20caseMap%5Bdash%5D%7C%7C(caseMap%5Bdash%5D%3Ddash.indexOf('-')%3C0%3Fdash%3Adash.replace(DASH_TO_CAMEL%2Cfunction(m)%7Breturn%20m%5B1%5D.toUpperCase()%3B%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Converts%20%22camelCase%22%20identifier%20(e.g.%20%60fooBarBaz%60)%20to%20%22dash-case%22%0A%20%20%20%20%20*%20(e.g.%20%60foo-bar-baz%60).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.CaseMap%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20camel%20Camel-case%20identifier%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Dash-case%20representation%20of%20the%20identifier%0A%20%20%20%20%20*%2FcamelToDashCase%3Afunction%20camelToDashCase(camel)%7Breturn%20caseMap%5Bcamel%5D%7C%7C(caseMap%5Bcamel%5D%3Dcamel.replace(CAMEL_TO_DASH%2C'-%241').toLowerCase())%3B%7D%7D%3BPolymer.CaseMap%3DCaseMap%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fcase-map.html.js%0A",
            "resourceBytes": 1394,
            "encodedBytes": 0,
            "unusedBytes": 163
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20Microtask%20implemented%20using%20Mutation%20Observer%0Avar%20microtaskCurrHandle%3D0%3Bvar%20microtaskLastHandle%3D0%3Bvar%20microtaskCallbacks%3D%5B%5D%3Bvar%20microtaskNodeContent%3D0%3Bvar%20microtaskNode%3Ddocument.createTextNode('')%3Bnew%20window.MutationObserver(microtaskFlush).observe(microtaskNode%2C%7BcharacterData%3Atrue%7D)%3Bfunction%20microtaskFlush()%7Bvar%20len%3DmicrotaskCallbacks.length%3Bfor(var%20i%3D0%3Bi%3Clen%3Bi%2B%2B)%7Bvar%20cb%3DmicrotaskCallbacks%5Bi%5D%3Bif(cb)%7Btry%7Bcb()%3B%7Dcatch(e)%7BsetTimeout(function()%7Bthrow%20e%3B%7D)%3B%7D%7D%7DmicrotaskCallbacks.splice(0%2Clen)%3BmicrotaskLastHandle%2B%3Dlen%3B%7D%2F**%0A%20%20%20*%20Module%20that%20provides%20a%20number%20of%20strategies%20for%20enqueuing%20asynchronous%0A%20%20%20*%20tasks.%20%20Each%20sub-module%20provides%20a%20standard%20%60run(fn)%60%20interface%20that%20returns%20a%0A%20%20%20*%20handle%2C%20and%20a%20%60cancel(handle)%60%20interface%20for%20canceling%20async%20tasks%20before%0A%20%20%20*%20they%20run.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20that%20provides%20a%20number%20of%20strategies%20for%20enqueuing%20asynchronous%0A%20%20%20*%20tasks.%0A%20%20%20*%2FPolymer.Async%3D%7B%2F**%0A%20%20%20%20%20*%20Async%20interface%20wrapper%20around%20%60setTimeout%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20wrapper%20around%20%60setTimeout%60.%0A%20%20%20%20%20*%2FtimeOut%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20sub-module%20with%20the%20async%20interface%20providing%20the%20provided%0A%20%20%20%20%20%20%20*%20delay.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.timeOut%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20delay%20Time%20to%20wait%20before%20calling%20callbacks%20in%20ms%0A%20%20%20%20%20%20%20*%20%40return%20%7B!AsyncInterface%7D%20An%20async%20timeout%20interface%0A%20%20%20%20%20%20%20*%2Fafter%3Afunction%20after(delay)%7Breturn%7Brun%3Afunction%20run(fn)%7Breturn%20window.setTimeout(fn%2Cdelay)%3B%7D%2Ccancel%3Afunction%20cancel(handle)%7Bwindow.clearTimeout(handle)%3B%7D%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20in%20the%20next%20task.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.timeOut%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Function%7D%20fn%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20delay%20Delay%20in%20milliseconds%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(fn%2Cdelay)%7Breturn%20window.setTimeout(fn%2Cdelay)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60timeOut%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.timeOut%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bwindow.clearTimeout(handle)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Async%20interface%20wrapper%20around%20%60requestAnimationFrame%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20wrapper%20around%20%60requestAnimationFrame%60.%0A%20%20%20%20%20*%2FanimationFrame%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20at%20%60requestAnimationFrame%60%20timing.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.animationFrame%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(number)%3Avoid%7D%20fn%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(fn)%7Breturn%20window.requestAnimationFrame(fn)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60animationFrame%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.animationFrame%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bwindow.cancelAnimationFrame(handle)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Async%20interface%20wrapper%20around%20%60requestIdleCallback%60.%20%20Falls%20back%20to%0A%20%20%20%20%20*%20%60setTimeout%60%20on%20browsers%20that%20do%20not%20support%20%60requestIdleCallback%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20wrapper%20around%20%60requestIdleCallback%60.%0A%20%20%20%20%20*%2FidlePeriod%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20at%20%60requestIdleCallback%60%20timing.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.idlePeriod%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!IdleDeadline)%3Avoid%7D%20fn%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(fn)%7Breturn%20window.requestIdleCallback%3Fwindow.requestIdleCallback(fn)%3Awindow.setTimeout(fn%2C16)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60idlePeriod%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.idlePeriod%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bwindow.cancelIdleCallback%3Fwindow.cancelIdleCallback(handle)%3Awindow.clearTimeout(handle)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Async%20interface%20for%20enqueuing%20callbacks%20that%20run%20at%20microtask%20timing.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%20that%20microtask%20timing%20is%20achieved%20via%20a%20single%20%60MutationObserver%60%2C%0A%20%20%20%20%20*%20and%20thus%20callbacks%20enqueued%20with%20this%20API%20will%20all%20run%20in%20a%20single%0A%20%20%20%20%20*%20batch%2C%20and%20not%20interleaved%20with%20other%20microtasks%20such%20as%20promises.%0A%20%20%20%20%20*%20Promises%20are%20avoided%20as%20an%20implementation%20choice%20for%20the%20time%20being%0A%20%20%20%20%20*%20due%20to%20Safari%20bugs%20that%20cause%20Promises%20to%20lack%20microtask%20guarantees.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20for%20enqueuing%20callbacks%20that%20run%20at%20microtask%0A%20%20%20%20%20*%20%20%20timing.%0A%20%20%20%20%20*%2FmicroTask%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20at%20microtask%20timing.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.microTask%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Function%3D%7D%20callback%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(callback)%7BmicrotaskNode.textContent%3DmicrotaskNodeContent%2B%2B%3BmicrotaskCallbacks.push(callback)%3Breturn%20microtaskCurrHandle%2B%2B%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60microTask%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.microTask%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bvar%20idx%3Dhandle-microtaskLastHandle%3Bif(idx%3E%3D0)%7Bif(!microtaskCallbacks%5Bidx%5D)%7Bthrow%20new%20Error('invalid%20async%20handle%3A%20'%2Bhandle)%3B%7DmicrotaskCallbacks%5Bidx%5D%3Dnull%3B%7D%7D%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fasync.html.js%0A",
            "resourceBytes": 5682,
            "encodedBytes": 0,
            "unusedBytes": 1151
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%20%40const%20%7B!AsyncInterface%7D%20*%2Fvar%20microtask%3DPolymer.Async.microTask%3B%2F**%0A%20%20%20%20%20*%20Element%20class%20mixin%20that%20provides%20basic%20meta-programming%20for%20creating%20one%0A%20%20%20%20%20*%20or%20more%20property%20accessors%20(getter%2Fsetter%20pair)%20that%20enqueue%20an%20async%0A%20%20%20%20%20*%20(batched)%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20For%20basic%20usage%20of%20this%20mixin%2C%20call%20%60MyClass.createProperties(props)%60%0A%20%20%20%20%20*%20once%20at%20class%20definition%20time%20to%20create%20property%20accessors%20for%20properties%0A%20%20%20%20%20*%20named%20in%20props%2C%20implement%20%60_propertiesChanged%60%20to%20react%20as%20desired%20to%0A%20%20%20%20%20*%20property%20changes%2C%20and%20implement%20%60static%20get%20observedAttributes()%60%20and%0A%20%20%20%20%20*%20include%20lowercase%20versions%20of%20any%20property%20names%20that%20should%20be%20set%20from%0A%20%20%20%20%20*%20attributes.%20Last%2C%20call%20%60this._enableProperties()%60%20in%20the%20element's%0A%20%20%20%20%20*%20%60connectedCallback%60%20to%20enable%20the%20accessors.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40mixinFunction%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40summary%20Element%20class%20mixin%20for%20reacting%20to%20property%20changes%20from%0A%20%20%20%20%20*%20%20%20generated%20property%20accessors.%0A%20%20%20%20%20*%2FPolymer.PropertiesChanged%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesChanged%7D%0A%20%20%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20%20%20*%2Fvar%20PropertiesChanged%3Dfunction(_superClass)%7B_inherits(PropertiesChanged%2C_superClass)%3B_createClass(PropertiesChanged%2C%5B%7Bkey%3A'_createPropertyAccessor'%2C%2F%2Feslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20setter%2Fgetter%20pair%20for%20the%20named%20property%20with%20its%20own%0A%20%20%20%20%20%20%20%20%20*%20local%20storage.%20%20The%20getter%20returns%20the%20value%20in%20the%20local%20storage%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20the%20setter%20calls%20%60_setProperty%60%2C%20which%20updates%20the%20local%20storage%0A%20%20%20%20%20%20%20%20%20*%20for%20the%20property%20and%20enqueues%20a%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20on%20a%20prototype%20or%20an%20instance.%20%20Calling%0A%20%20%20%20%20%20%20%20%20*%20this%20method%20may%20overwrite%20a%20property%20value%20that%20already%20exists%20on%0A%20%20%20%20%20%20%20%20%20*%20the%20prototype%2Finstance%20by%20creating%20the%20accessor.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20readOnly%20When%20true%2C%20no%20setter%20is%20created%3B%20the%0A%20%20%20%20%20%20%20%20%20*%20%20%20protected%20%60_setProperty%60%20function%20must%20be%20used%20to%20set%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_createPropertyAccessor(property%2CreadOnly)%7Bthis._addPropertyToAttributeMap(property)%3Bif(!this.hasOwnProperty('__dataHasAccessor'))%7Bthis.__dataHasAccessor%3DObject.assign(%7B%7D%2Cthis.__dataHasAccessor)%3B%7Dif(!this.__dataHasAccessor%5Bproperty%5D)%7Bthis.__dataHasAccessor%5Bproperty%5D%3Dtrue%3Bthis._definePropertyAccessor(property%2CreadOnly)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20the%20given%20%60property%60%20to%20a%20map%20matching%20attribute%20names%0A%20%20%20%20%20%20%20%20%20*%20to%20property%20names%2C%20using%20%60attributeNameForProperty%60.%20This%20map%20is%0A%20%20%20%20%20%20%20%20%20*%20used%20when%20deserializing%20attribute%20values%20to%20properties.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addPropertyToAttributeMap'%2Cvalue%3Afunction%20_addPropertyToAttributeMap(property)%7Bif(!this.hasOwnProperty('__dataAttributes'))%7Bthis.__dataAttributes%3DObject.assign(%7B%7D%2Cthis.__dataAttributes)%3B%7Dif(!this.__dataAttributes%5Bproperty%5D)%7Bvar%20attr%3Dthis.constructor.attributeNameForProperty(property)%3Bthis.__dataAttributes%5Battr%5D%3Dproperty%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20a%20property%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20readOnly%20When%20true%2C%20no%20setter%20is%20created%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_definePropertyAccessor'%2Cvalue%3Afunction%20_definePropertyAccessor(property%2CreadOnly)%7BObject.defineProperty(this%2Cproperty%2C%7B%2F*%20eslint-disable%20valid-jsdoc%20*%2F%2F**%20%40this%20%7BPropertiesChanged%7D%20*%2Fget%3Afunction%20get()%7Breturn%20this._getProperty(property)%3B%7D%2C%2F**%20%40this%20%7BPropertiesChanged%7D%20*%2Fset%3AreadOnly%3Ffunction()%7B%7D%3Afunction(value)%7Bthis._setProperty(property%2Cvalue)%3B%7D%2F*%20eslint-enable%20*%2F%7D)%3B%7D%7D%5D%2C%5B%7Bkey%3A'createProperties'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20property%20accessors%20for%20the%20given%20property%20names.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20props%20Object%20whose%20keys%20are%20names%20of%20accessors.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20createProperties(props)%7Bvar%20proto%3Dthis.prototype%3Bfor(var%20prop%20in%20props)%7B%2F%2F%20don't%20stomp%20an%20existing%20accessor%0Aif(!(prop%20in%20proto))%7Bproto._createPropertyAccessor(prop)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20an%20attribute%20name%20that%20corresponds%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20The%20attribute%20name%20is%20the%20lowercased%20property%20name.%20Override%20to%0A%20%20%20%20%20%20%20%20%20*%20customize%20this%20mapping.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20to%20convert%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Attribute%20name%20corresponding%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeNameForProperty'%2Cvalue%3Afunction%20attributeNameForProperty(property)%7Breturn%20property.toLowerCase()%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Override%20point%20to%20provide%20a%20type%20to%20which%20to%20deserialize%20a%20value%20to%0A%20%20%20%20%20%20%20%20%20*%20a%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20property%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'typeForProperty'%2Cvalue%3Afunction%20typeForProperty(name)%7B%7D%7D%5D)%3Bfunction%20PropertiesChanged()%7B_classCallCheck(this%2CPropertiesChanged)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(PropertiesChanged.__proto__%7C%7CObject.getPrototypeOf(PropertiesChanged)).call(this))%3B_this.__dataEnabled%3Dfalse%3B_this.__dataReady%3Dfalse%3B_this.__dataInvalid%3Dfalse%3B_this.__data%3D%7B%7D%3B_this.__dataPending%3Dnull%3B_this.__dataOld%3Dnull%3B_this.__dataInstanceProps%3Dnull%3B_this.__serializing%3Dfalse%3B_this._initializeProperties()%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Lifecycle%20callback%20called%20when%20properties%20are%20enabled%20via%0A%20%20%20%20%20%20%20%20%20*%20%60_enableProperties%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20function%20to%20implement%20behavior%20that%20is%0A%20%20%20%20%20%20%20%20%20*%20dependent%20on%20the%20element%20having%20its%20property%20data%20initialized%2C%20e.g.%0A%20%20%20%20%20%20%20%20%20*%20from%20defaults%20(initialized%20from%20%60constructor%60%2C%20%60_initializeProperties%60)%2C%0A%20%20%20%20%20%20%20%20%20*%20%60attributeChangedCallback%60%2C%20or%20values%20propagated%20from%20host%20e.g.%20via%0A%20%20%20%20%20%20%20%20%20*%20bindings.%20%20%60super.ready()%60%20must%20be%20called%20to%20ensure%20the%20data%20system%0A%20%20%20%20%20%20%20%20%20*%20becomes%20enabled.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F_createClass(PropertiesChanged%2C%5B%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7Bthis.__dataReady%3Dtrue%3Bthis._flushProperties()%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Initializes%20the%20local%20storage%20for%20property%20accessors.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Provided%20as%20an%20override%20point%20for%20performing%20any%20setup%20work%20prior%0A%20%20%20%20%20%20%20%20%20*%20to%20initializing%20the%20property%20accessor%20system.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProperties'%2Cvalue%3Afunction%20_initializeProperties()%7B%2F%2F%20Capture%20instance%20properties%3B%20these%20will%20be%20set%20into%20accessors%0A%2F%2F%20during%20first%20flush.%20Don't%20set%20them%20here%2C%20since%20we%20want%0A%2F%2F%20these%20to%20overwrite%20defaults%2Fconstructor%20assignments%0Afor(var%20p%20in%20this.__dataHasAccessor)%7Bif(this.hasOwnProperty(p))%7Bthis.__dataInstanceProps%3Dthis.__dataInstanceProps%7C%7C%7B%7D%3Bthis.__dataInstanceProps%5Bp%5D%3Dthis%5Bp%5D%3Bdelete%20this%5Bp%5D%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20ready%20time%20with%20bag%20of%20instance%20properties%20that%20overwrote%0A%20%20%20%20%20%20%20%20%20*%20accessors%20when%20the%20element%20upgraded.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20default%20implementation%20sets%20these%20properties%20back%20into%20the%0A%20%20%20%20%20%20%20%20%20*%20setter%20at%20ready%20time.%20%20This%20method%20is%20provided%20as%20an%20override%0A%20%20%20%20%20%20%20%20%20*%20point%20for%20customizing%20or%20providing%20more%20efficient%20initialization.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20property%20values%20that%20were%20overwritten%0A%20%20%20%20%20%20%20%20%20*%20%20%20when%20creating%20property%20accessors.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeInstanceProperties'%2Cvalue%3Afunction%20_initializeInstanceProperties(props)%7BObject.assign(this%2Cprops)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20local%20storage%20for%20a%20property%20(via%20%60_setPendingProperty%60)%0A%20%20%20%20%20%20%20%20%20*%20and%20enqueues%20a%20%60_proeprtiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setProperty'%2Cvalue%3Afunction%20_setProperty(property%2Cvalue)%7Bif(this._setPendingProperty(property%2Cvalue))%7Bthis._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20the%20value%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20for%20the%20given%20property%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_getProperty'%2Cvalue%3Afunction%20_getProperty(property)%7Breturn%20this.__data%5Bproperty%5D%3B%7D%2F*%20eslint-disable%20no-unused-vars%20*%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20local%20storage%20for%20a%20property%2C%20records%20the%20previous%20value%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20adds%20it%20to%20the%20set%20of%20%22pending%20changes%22%20that%20will%20be%20passed%20to%20the%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20callback.%20%20This%20method%20does%20not%20enqueue%20the%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20ext%20Not%20used%20here%3B%20affordance%20for%20closure%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%20changed%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setPendingProperty'%2Cvalue%3Afunction%20_setPendingProperty(property%2Cvalue%2Cext)%7Bvar%20old%3Dthis.__data%5Bproperty%5D%3Bvar%20changed%3Dthis._shouldPropertyChange(property%2Cvalue%2Cold)%3Bif(changed)%7Bif(!this.__dataPending)%7Bthis.__dataPending%3D%7B%7D%3Bthis.__dataOld%3D%7B%7D%3B%7D%2F%2F%20Ensure%20old%20is%20captured%20from%20the%20last%20turn%0Aif(this.__dataOld%26%26!(property%20in%20this.__dataOld))%7Bthis.__dataOld%5Bproperty%5D%3Dold%3B%7Dthis.__data%5Bproperty%5D%3Dvalue%3Bthis.__dataPending%5Bproperty%5D%3Dvalue%3B%7Dreturn%20changed%3B%7D%2F*%20eslint-enable%20*%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Marks%20the%20properties%20as%20invalid%2C%20and%20enqueues%20an%20async%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_invalidateProperties'%2Cvalue%3Afunction%20_invalidateProperties()%7Bvar%20_this2%3Dthis%3Bif(!this.__dataInvalid%26%26this.__dataReady)%7Bthis.__dataInvalid%3Dtrue%3Bmicrotask.run(function()%7Bif(_this2.__dataInvalid)%7B_this2.__dataInvalid%3Dfalse%3B_this2._flushProperties()%3B%7D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Call%20to%20enable%20property%20accessor%20processing.%20Before%20this%20method%20is%0A%20%20%20%20%20%20%20%20%20*%20called%20accessor%20values%20will%20be%20set%20but%20side%20effects%20are%0A%20%20%20%20%20%20%20%20%20*%20queued.%20When%20called%2C%20any%20pending%20side%20effects%20occur%20immediately.%0A%20%20%20%20%20%20%20%20%20*%20For%20elements%2C%20generally%20%60connectedCallback%60%20is%20a%20normal%20spot%20to%20do%20so.%0A%20%20%20%20%20%20%20%20%20*%20It%20is%20safe%20to%20call%20this%20method%20multiple%20times%20as%20it%20only%20turns%20on%0A%20%20%20%20%20%20%20%20%20*%20property%20accessors%20once.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_enableProperties'%2Cvalue%3Afunction%20_enableProperties()%7Bif(!this.__dataEnabled)%7Bthis.__dataEnabled%3Dtrue%3Bif(this.__dataInstanceProps)%7Bthis._initializeInstanceProperties(this.__dataInstanceProps)%3Bthis.__dataInstanceProps%3Dnull%3B%7Dthis.ready()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Calls%20the%20%60_propertiesChanged%60%20callback%20with%20the%20current%20set%20of%0A%20%20%20%20%20%20%20%20%20*%20pending%20changes%20(and%20old%20values%20recorded%20when%20pending%20changes%20were%0A%20%20%20%20%20%20%20%20%20*%20set)%2C%20and%20resets%20the%20pending%20set%20of%20changes.%20Generally%2C%20this%20method%0A%20%20%20%20%20%20%20%20%20*%20should%20not%20be%20called%20in%20user%20code.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_flushProperties'%2Cvalue%3Afunction%20_flushProperties()%7Bvar%20props%3Dthis.__data%3Bvar%20changedProps%3Dthis.__dataPending%3Bvar%20old%3Dthis.__dataOld%3Bif(this._shouldPropertiesChange(props%2CchangedProps%2Cold))%7Bthis.__dataPending%3Dnull%3Bthis.__dataOld%3Dnull%3Bthis._propertiesChanged(props%2CchangedProps%2Cold)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20in%20%60_flushProperties%60%20to%20determine%20if%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20should%20be%20called.%20The%20default%20implementation%20returns%20true%20if%0A%20%20%20%20%20%20%20%20%20*%20properties%20are%20pending.%20Override%20to%20customize%20when%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20is%20called.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20changedProps%20is%20truthy%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_shouldPropertiesChange'%2Cvalue%3Afunction%20_shouldPropertiesChange(currentProps%2CchangedProps%2ColdProps)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Areturn%20Boolean(changedProps)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Callback%20called%20when%20any%20properties%20with%20accessors%20created%20via%0A%20%20%20%20%20%20%20%20%20*%20%60_createPropertyAccessor%60%20have%20been%20set.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propertiesChanged'%2Cvalue%3Afunction%20_propertiesChanged(currentProps%2CchangedProps%2ColdProps)%7B%7D%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Method%20called%20to%20determine%20whether%20a%20property%20value%20should%20be%0A%20%20%20%20%20%20%20%20%20*%20considered%20as%20a%20change%20and%20cause%20the%20%60_propertiesChanged%60%20callback%0A%20%20%20%20%20%20%20%20%20*%20to%20be%20enqueued.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20default%20implementation%20returns%20%60true%60%20if%20a%20strict%20equality%0A%20%20%20%20%20%20%20%20%20*%20check%20fails.%20The%20method%20always%20returns%20false%20for%20%60NaN%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Override%20this%20method%20to%20e.g.%20provide%20stricter%20checking%20for%0A%20%20%20%20%20%20%20%20%20*%20Objects%2FArrays%20when%20using%20immutable%20patterns.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20%20%20%20%20*%20%20%20and%20enqueue%20a%20%60_proeprtiesChanged%60%20callback%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_shouldPropertyChange'%2Cvalue%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn(%2F%2F%20Strict%20equality%20check%0Aold!%3D%3Dvalue%26%26(%2F%2F%20This%20ensures%20(old%3D%3DNaN%2C%20value%3D%3DNaN)%20always%20returns%20false%0Aold%3D%3D%3Dold%7C%7Cvalue%3D%3D%3Dvalue))%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Implements%20native%20Custom%20Elements%20%60attributeChangedCallback%60%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20an%20attribute%20value%20to%20a%20property%20via%20%60_attributeToProperty%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute%20that%20changed%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20New%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20namespace%20Attribute%20namespace.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChangedCallback'%2Cvalue%3Afunction%20attributeChangedCallback(name%2Cold%2Cvalue%2Cnamespace)%7Bif(old!%3D%3Dvalue)%7Bthis._attributeToProperty(name%2Cvalue)%3B%7Dif(_get(PropertiesChanged.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesChanged.prototype)%2C'attributeChangedCallback'%2Cthis))%7B_get(PropertiesChanged.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesChanged.prototype)%2C'attributeChangedCallback'%2Cthis).call(this%2Cname%2Cold%2Cvalue%2Cnamespace)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Deserializes%20an%20attribute%20to%20its%20associated%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20calls%20the%20%60_deserializeValue%60%20method%20to%20convert%20the%20string%20to%0A%20%20%20%20%20%20%20%20%20*%20a%20typed%20value.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Name%20of%20attribute%20to%20deserialize.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20of%20the%20attribute.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20type%20type%20to%20deserialize%20to%2C%20defaults%20to%20the%20value%0A%20%20%20%20%20%20%20%20%20*%20returned%20from%20%60typeForProperty%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_attributeToProperty'%2Cvalue%3Afunction%20_attributeToProperty(attribute%2Cvalue%2Ctype)%7Bif(!this.__serializing)%7Bvar%20map%3Dthis.__dataAttributes%3Bvar%20property%3Dmap%26%26map%5Battribute%5D%7C%7Cattribute%3Bthis%5Bproperty%5D%3Dthis._deserializeValue(value%2Ctype%7C%7Cthis.constructor.typeForProperty(property))%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Serializes%20a%20property%20to%20its%20associated%20attribute.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20Closure%20can't%20figure%20out%20%60this%60%20is%20an%20element.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%20to%20reflect.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20attribute%20Attribute%20name%20to%20reflect%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Property%20value%20to%20refect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propertyToAttribute'%2Cvalue%3Afunction%20_propertyToAttribute(property%2Cattribute%2Cvalue)%7Bthis.__serializing%3Dtrue%3Bvalue%3Darguments.length%3C3%3Fthis%5Bproperty%5D%3Avalue%3Bthis._valueToNodeAttribute(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis%2Cvalue%2Cattribute%7C%7Cthis.constructor.attributeNameForProperty(property))%3Bthis.__serializing%3Dfalse%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20a%20typed%20value%20to%20an%20HTML%20attribute%20on%20a%20node.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20calls%20the%20%60_serializeValue%60%20method%20to%20convert%20the%20typed%0A%20%20%20%20%20%20%20%20%20*%20value%20to%20a%20string.%20%20If%20the%20%60_serializeValue%60%20method%20returns%20%60undefined%60%2C%0A%20%20%20%20%20%20%20%20%20*%20the%20attribute%20will%20be%20removed%20(this%20is%20the%20default%20for%20boolean%0A%20%20%20%20%20%20%20%20%20*%20type%20%60false%60).%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20set%20attribute%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20serialize.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Attribute%20name%20to%20serialize%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_valueToNodeAttribute'%2Cvalue%3Afunction%20_valueToNodeAttribute(node%2Cvalue%2Cattribute)%7Bvar%20str%3Dthis._serializeValue(value)%3Bif(str%3D%3D%3Dundefined)%7Bnode.removeAttribute(attribute)%3B%7Delse%7Bnode.setAttribute(attribute%2Cstr)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Converts%20a%20typed%20JavaScript%20value%20to%20a%20string.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20is%20called%20when%20setting%20JS%20property%20values%20to%0A%20%20%20%20%20%20%20%20%20*%20HTML%20attributes.%20%20Users%20may%20override%20this%20method%20to%20provide%0A%20%20%20%20%20%20%20%20%20*%20serialization%20for%20custom%20types.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Property%20value%20to%20serialize.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20String%20serialized%20from%20the%20provided%0A%20%20%20%20%20%20%20%20%20*%20property%20%20value.%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_serializeValue'%2Cvalue%3Afunction%20_serializeValue(value)%7Bswitch(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%7Bcase'boolean'%3Areturn%20value%3F''%3Aundefined%3Bdefault%3Areturn%20value!%3Dnull%3Fvalue.toString()%3Aundefined%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Converts%20a%20string%20to%20a%20typed%20JavaScript%20value.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20is%20called%20when%20reading%20HTML%20attribute%20values%20to%0A%20%20%20%20%20%20%20%20%20*%20JS%20properties.%20%20Users%20may%20override%20this%20method%20to%20provide%0A%20%20%20%20%20%20%20%20%20*%20deserialization%20for%20custom%20%60type%60s.%20Types%20for%20%60Boolean%60%2C%20%60String%60%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20%60Number%60%20convert%20attributes%20to%20the%20expected%20types.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Value%20to%20deserialize.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20type%20Type%20to%20deserialize%20the%20string%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Typed%20value%20deserialized%20from%20the%20provided%20string.%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_deserializeValue'%2Cvalue%3Afunction%20_deserializeValue(value%2Ctype)%7Bswitch(type)%7Bcase%20Boolean%3Areturn%20value!%3D%3Dnull%3Bcase%20Number%3Areturn%20Number(value)%3Bdefault%3Areturn%20value%3B%7D%7D%7D%5D)%3Breturn%20PropertiesChanged%3B%7D(superClass)%3Breturn%20PropertiesChanged%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperties-changed.html.js%0A",
            "resourceBytes": 20501,
            "encodedBytes": 0,
            "unusedBytes": 3400
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20caseMap%3DPolymer.CaseMap%3B%2F%2F%20Save%20map%20of%20native%20properties%3B%20this%20forms%20a%20blacklist%20or%20properties%0A%2F%2F%20that%20won't%20have%20their%20values%20%22saved%22%20by%20%60saveAccessorValue%60%2C%20since%0A%2F%2F%20reading%20from%20an%20HTMLElement%20accessor%20from%20the%20context%20of%20a%20prototype%20throws%0Avar%20nativeProperties%3D%7B%7D%3Bvar%20proto%3DHTMLElement.prototype%3Bwhile(proto)%7Bvar%20props%3DObject.getOwnPropertyNames(proto)%3Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7BnativeProperties%5Bprops%5Bi%5D%5D%3Dtrue%3B%7Dproto%3DObject.getPrototypeOf(proto)%3B%7D%2F**%0A%20%20%20*%20Used%20to%20save%20the%20value%20of%20a%20property%20that%20will%20be%20overridden%20with%0A%20%20%20*%20an%20accessor.%20If%20the%20%60model%60%20is%20a%20prototype%2C%20the%20values%20will%20be%20saved%0A%20%20%20*%20in%20%60__dataProto%60%2C%20and%20it's%20up%20to%20the%20user%20(or%20downstream%20mixin)%20to%0A%20%20%20*%20decide%20how%2Fwhen%20to%20set%20these%20values%20back%20into%20the%20accessors.%0A%20%20%20*%20If%20%60model%60%20is%20already%20an%20instance%20(it%20has%20a%20%60__data%60%20property)%2C%20then%0A%20%20%20*%20the%20value%20will%20be%20set%20as%20a%20pending%20property%2C%20meaning%20the%20user%20should%0A%20%20%20*%20call%20%60_invalidateProperties%60%20or%20%60_flushProperties%60%20to%20take%20effect%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20saveAccessorValue(model%2Cproperty)%7B%2F%2F%20Don't%20read%2Fstore%20value%20for%20any%20native%20properties%20since%20they%20could%20throw%0Aif(!nativeProperties%5Bproperty%5D)%7Bvar%20value%3Dmodel%5Bproperty%5D%3Bif(value!%3D%3Dundefined)%7Bif(model.__data)%7B%2F%2F%20Adding%20accessor%20to%20instance%3B%20update%20the%20property%0A%2F%2F%20It%20is%20the%20user's%20responsibility%20to%20call%20_flushProperties%0Amodel._setPendingProperty(property%2Cvalue)%3B%7Delse%7B%2F%2F%20Adding%20accessor%20to%20proto%3B%20save%20proto's%20value%20for%20instance-time%20use%0Aif(!model.__dataProto)%7Bmodel.__dataProto%3D%7B%7D%3B%7Delse%20if(!model.hasOwnProperty(JSCompiler_renameProperty('__dataProto'%2Cmodel)))%7Bmodel.__dataProto%3DObject.create(model.__dataProto)%3B%7Dmodel.__dataProto%5Bproperty%5D%3Dvalue%3B%7D%7D%7D%7D%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20basic%20meta-programming%20for%20creating%20one%0A%20%20%20*%20or%20more%20property%20accessors%20(getter%2Fsetter%20pair)%20that%20enqueue%20an%20async%0A%20%20%20*%20(batched)%20%60_propertiesChanged%60%20callback.%0A%20%20%20*%0A%20%20%20*%20For%20basic%20usage%20of%20this%20mixin%3A%0A%20%20%20*%20%0A%20%20%20*%20-%20%20%20Declare%20attributes%20to%20observe%20via%20the%20standard%20%60static%20get%20observedAttributes()%60.%20Use%0A%20%20%20*%20%20%20%20%20%60dash-case%60%20attribute%20names%20to%20represent%20%60camelCase%60%20property%20names.%20%0A%20%20%20*%20-%20%20%20Implement%20the%20%60_propertiesChanged%60%20callback%20on%20the%20class.%0A%20%20%20*%20-%20%20%20Call%20%60MyClass.createPropertiesForAttributes()%60%20**once**%20on%20the%20class%20to%20generate%20%0A%20%20%20*%20%20%20%20%20property%20accessors%20for%20each%20observed%20attribute.%20This%20must%20be%20called%20before%20the%20first%20%0A%20%20%20*%20%20%20%20%20instance%20is%20created%2C%20for%20example%2C%20by%20calling%20it%20before%20calling%20%60customElements.define%60.%0A%20%20%20*%20%20%20%20%20It%20can%20also%20be%20called%20lazily%20from%20the%20element's%20%60constructor%60%2C%20as%20long%20as%20it's%20guarded%20so%0A%20%20%20*%20%20%20%20%20that%20the%20call%20is%20only%20made%20once%2C%20when%20the%20first%20instance%20is%20created.%0A%20%20%20*%20-%20%20%20Call%20%60this._enableProperties()%60%20in%20the%20element's%20%60connectedCallback%60%20to%20enable%20%0A%20%20%20*%20%20%20%20%20the%20accessors.%0A%20%20%20*%0A%20%20%20*%20Any%20%60observedAttributes%60%20will%20automatically%20be%0A%20%20%20*%20deserialized%20via%20%60attributeChangedCallback%60%20and%20set%20to%20the%20associated%0A%20%20%20*%20property%20using%20%60dash-case%60-to-%60camelCase%60%20convention.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertiesChanged%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20for%20reacting%20to%20property%20changes%20from%0A%20%20%20*%20%20%20generated%20property%20accessors.%0A%20%20%20*%2FPolymer.PropertyAccessors%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesChanged%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20base%3DPolymer.PropertiesChanged(superClass)%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20PropertyAccessors%3Dfunction(_base)%7B_inherits(PropertyAccessors%2C_base)%3Bfunction%20PropertyAccessors()%7B_classCallCheck(this%2CPropertyAccessors)%3Breturn%20_possibleConstructorReturn(this%2C(PropertyAccessors.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors)).apply(this%2Carguments))%3B%7D_createClass(PropertyAccessors%2C%5B%7Bkey%3A'_initializeProperties'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20PropertiesChanged%20implementation%20to%20initialize%20values%20for%0A%20%20%20%20%20%20%20*%20accessors%20created%20for%20values%20that%20already%20existed%20on%20the%20element%0A%20%20%20%20%20%20%20*%20prototype.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_initializeProperties()%7Bif(this.__dataProto)%7Bthis._initializeProtoProperties(this.__dataProto)%3Bthis.__dataProto%3Dnull%3B%7D_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20at%20instance%20time%20with%20bag%20of%20properties%20that%20were%20overwritten%0A%20%20%20%20%20%20%20*%20by%20accessors%20on%20the%20prototype%20when%20accessors%20were%20created.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20sets%20these%20properties%20back%20into%20the%0A%20%20%20%20%20%20%20*%20setter%20at%20instance%20time.%20%20This%20method%20is%20provided%20as%20an%20override%0A%20%20%20%20%20%20%20*%20point%20for%20customizing%20or%20providing%20more%20efficient%20initialization.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20property%20values%20that%20were%20overwritten%0A%20%20%20%20%20%20%20*%20%20%20when%20creating%20property%20accessors.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProtoProperties'%2Cvalue%3Afunction%20_initializeProtoProperties(props)%7Bfor(var%20p%20in%20props)%7Bthis._setProperty(p%2Cprops%5Bp%5D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Ensures%20the%20element%20has%20the%20given%20attribute.%20If%20it%20does%20not%2C%0A%20%20%20%20%20%20%20*%20assigns%20the%20given%20value%20to%20the%20attribute.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20Closure%20can't%20figure%20out%20%60this%60%20is%20infact%20an%20element%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Name%20of%20attribute%20to%20ensure%20is%20set.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20of%20the%20attribute.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_ensureAttribute'%2Cvalue%3Afunction%20_ensureAttribute(attribute%2Cvalue)%7Bvar%20el%3D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis%3Bif(!el.hasAttribute(attribute))%7Bthis._valueToNodeAttribute(el%2Cvalue%2Cattribute)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20PropertiesChanged%20implemention%20to%20serialize%20objects%20as%20JSON.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Property%20value%20to%20serialize.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20String%20serialized%20from%20the%20provided%20property%20value.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_serializeValue'%2Cvalue%3Afunction%20_serializeValue(value)%7B%2F*%20eslint-disable%20no-fallthrough%20*%2Fswitch(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%7Bcase'object'%3Aif(value%20instanceof%20Date)%7Breturn%20value.toString()%3B%7Delse%20if(value)%7Btry%7Breturn%20JSON.stringify(value)%3B%7Dcatch(x)%7Breturn''%3B%7D%7Ddefault%3Areturn%20_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_serializeValue'%2Cthis).call(this%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Converts%20a%20string%20to%20a%20typed%20JavaScript%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20is%20called%20by%20Polymer%20when%20reading%20HTML%20attribute%20values%20to%0A%20%20%20%20%20%20%20*%20JS%20properties.%20%20Users%20may%20override%20this%20method%20on%20Polymer%20element%0A%20%20%20%20%20%20%20*%20prototypes%20to%20provide%20deserialization%20for%20custom%20%60type%60s.%20%20Note%2C%0A%20%20%20%20%20%20%20*%20the%20%60type%60%20argument%20is%20the%20value%20of%20the%20%60type%60%20field%20provided%20in%20the%0A%20%20%20%20%20%20%20*%20%60properties%60%20configuration%20object%20for%20a%20given%20property%2C%20and%20is%0A%20%20%20%20%20%20%20*%20by%20convention%20the%20constructor%20for%20the%20type%20to%20deserialize.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Attribute%20value%20to%20deserialize.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20type%20Type%20to%20deserialize%20the%20string%20to.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Typed%20value%20deserialized%20from%20the%20provided%20string.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_deserializeValue'%2Cvalue%3Afunction%20_deserializeValue(value%2Ctype)%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7B*%7D%0A%20%20%20%20%20%20%20%20%20*%2Fvar%20outValue%3Dvoid%200%3Bswitch(type)%7Bcase%20Object%3Atry%7BoutValue%3DJSON.parse(%2F**%20%40type%20%7Bstring%7D%20*%2Fvalue)%3B%7Dcatch(x)%7B%2F%2F%20allow%20non-JSON%20literals%20like%20Strings%20and%20Numbers%0AoutValue%3Dvalue%3B%7Dbreak%3Bcase%20Array%3Atry%7BoutValue%3DJSON.parse(%2F**%20%40type%20%7Bstring%7D%20*%2Fvalue)%3B%7Dcatch(x)%7BoutValue%3Dnull%3Bconsole.warn('Polymer%3A%3AAttributes%3A%20couldn%5C't%20decode%20Array%20as%20JSON%3A%20'%2Bvalue)%3B%7Dbreak%3Bcase%20Date%3AoutValue%3DisNaN(value)%3FString(value)%3ANumber(value)%3BoutValue%3Dnew%20Date(outValue)%3Bbreak%3Bdefault%3AoutValue%3D_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_deserializeValue'%2Cthis).call(this%2Cvalue%2Ctype)%3Bbreak%3B%7Dreturn%20outValue%3B%7D%2F*%20eslint-enable%20no-fallthrough%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20PropertiesChanged%20implementation%20to%20save%20existing%20prototype%0A%20%20%20%20%20%20%20*%20property%20value%20so%20that%20it%20can%20be%20reset.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20readOnly%20When%20true%2C%20no%20setter%20is%20created%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20When%20calling%20on%20a%20prototype%2C%20any%20overwritten%20values%20are%20saved%20in%0A%20%20%20%20%20%20%20*%20%60__dataProto%60%2C%20and%20it%20is%20up%20to%20the%20subclasser%20to%20decide%20how%2Fwhen%0A%20%20%20%20%20%20%20*%20to%20set%20those%20properties%20back%20into%20the%20accessor.%20%20When%20calling%20on%20an%0A%20%20%20%20%20%20%20*%20instance%2C%20the%20overwritten%20value%20is%20set%20via%20%60_setPendingProperty%60%2C%0A%20%20%20%20%20%20%20*%20and%20the%20user%20should%20call%20%60_invalidateProperties%60%20or%20%60_flushProperties%60%0A%20%20%20%20%20%20%20*%20for%20the%20values%20to%20take%20effect.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_definePropertyAccessor'%2Cvalue%3Afunction%20_definePropertyAccessor(property%2CreadOnly)%7BsaveAccessorValue(this%2Cproperty)%3B_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_definePropertyAccessor'%2Cthis).call(this%2Cproperty%2CreadOnly)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20this%20library%20created%20an%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20accessor%20was%20created%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasAccessor'%2Cvalue%3Afunction%20_hasAccessor(property)%7Breturn%20this.__dataHasAccessor%26%26this.__dataHasAccessor%5Bproperty%5D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20specified%20property%20has%20a%20pending%20change.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20property%20has%20a%20pending%20change%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_isPropertyPending'%2Cvalue%3Afunction%20_isPropertyPending(prop)%7Breturn%20Boolean(this.__dataPending%26%26prop%20in%20this.__dataPending)%3B%7D%7D%5D%2C%5B%7Bkey%3A'createPropertiesForAttributes'%2C%2F**%0A%20%20%20%20%20%20%20*%20Generates%20property%20accessors%20for%20all%20attributes%20in%20the%20standard%0A%20%20%20%20%20%20%20*%20static%20%60observedAttributes%60%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Attribute%20names%20are%20mapped%20to%20property%20names%20using%20the%20%60dash-case%60%20to%0A%20%20%20%20%20%20%20*%20%60camelCase%60%20convention%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20createPropertiesForAttributes()%7Bvar%20a%24%3Dthis.observedAttributes%3Bfor(var%20_i%3D0%3B_i%3Ca%24.length%3B_i%2B%2B)%7Bthis.prototype._createPropertyAccessor(caseMap.dashToCamelCase(a%24%5B_i%5D))%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20an%20attribute%20name%20that%20corresponds%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20*%20By%20default%2C%20converts%20camel%20to%20dash%20case%2C%20e.g.%20%60fooBar%60%20to%20%60foo-bar%60.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20to%20convert%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Attribute%20name%20corresponding%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeNameForProperty'%2Cvalue%3Afunction%20attributeNameForProperty(property)%7Breturn%20caseMap.camelToDashCase(property)%3B%7D%7D%5D)%3Breturn%20PropertyAccessors%3B%7D(base)%3Breturn%20PropertyAccessors%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperty-accessors.html.js%0A",
            "resourceBytes": 12872,
            "encodedBytes": 0,
            "unusedBytes": 2397
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20walker%3Ddocument.createTreeWalker(document%2CNodeFilter.SHOW_ALL%2Cnull%2Cfalse)%3B%2F%2F%201.x%20backwards-compatible%20auto-wrapper%20for%20template%20type%20extensions%0A%2F%2F%20This%20is%20a%20clear%20layering%20violation%20and%20gives%20favored-nation%20status%20to%0A%2F%2F%20dom-if%20and%20dom-repeat%20templates.%20%20This%20is%20a%20conceit%20we're%20choosing%20to%20keep%0A%2F%2F%20a.)%20to%20ease%201.x%20backwards-compatibility%20due%20to%20loss%20of%20%60is%60%2C%20and%0A%2F%2F%20b.)%20to%20maintain%20if%2Frepeat%20capability%20in%20parser-constrained%20elements%0A%2F%2F%20%20%20%20%20(e.g.%20table%2C%20select)%20in%20lieu%20of%20native%20CE%20type%20extensions%20without%0A%2F%2F%20%20%20%20%20massive%20new%20invention%20in%20this%20space%20(e.g.%20directive%20system)%0Avar%20templateExtensions%3D%7B'dom-if'%3Atrue%2C'dom-repeat'%3Atrue%7D%3Bfunction%20wrapTemplateExtension(node)%7Bvar%20is%3Dnode.getAttribute('is')%3Bif(is%26%26templateExtensions%5Bis%5D)%7Bvar%20t%3Dnode%3Bt.removeAttribute('is')%3Bnode%3Dt.ownerDocument.createElement(is)%3Bt.parentNode.replaceChild(node%2Ct)%3Bnode.appendChild(t)%3Bwhile(t.attributes.length)%7Bnode.setAttribute(t.attributes%5B0%5D.name%2Ct.attributes%5B0%5D.value)%3Bt.removeAttribute(t.attributes%5B0%5D.name)%3B%7D%7Dreturn%20node%3B%7Dfunction%20findTemplateNode(root%2CnodeInfo)%7B%2F%2F%20recursively%20ascend%20tree%20until%20we%20hit%20root%0Avar%20parent%3DnodeInfo.parentInfo%26%26findTemplateNode(root%2CnodeInfo.parentInfo)%3B%2F%2F%20unwind%20the%20stack%2C%20returning%20the%20indexed%20node%20at%20each%20level%0Aif(parent)%7B%2F%2F%20note%3A%20marginally%20faster%20than%20indexing%20via%20childNodes%0A%2F%2F%20(http%3A%2F%2Fjsperf.com%2Fchildnodes-lookup)%0Awalker.currentNode%3Dparent%3Bfor(var%20n%3Dwalker.firstChild()%2Ci%3D0%3Bn%3Bn%3Dwalker.nextSibling())%7Bif(nodeInfo.parentIndex%3D%3D%3Di%2B%2B)%7Breturn%20n%3B%7D%7D%7Delse%7Breturn%20root%3B%7D%7D%2F%2F%20construct%20%60%24%60%20map%20(from%20id%20annotations)%0Afunction%20applyIdToMap(inst%2Cmap%2Cnode%2CnodeInfo)%7Bif(nodeInfo.id)%7Bmap%5BnodeInfo.id%5D%3Dnode%3B%7D%7D%2F%2F%20install%20event%20listeners%20(from%20event%20annotations)%0Afunction%20applyEventListener(inst%2Cnode%2CnodeInfo)%7Bif(nodeInfo.events%26%26nodeInfo.events.length)%7Bfor(var%20j%3D0%2Ce%24%3DnodeInfo.events%2Ce%3Bj%3Ce%24.length%26%26(e%3De%24%5Bj%5D)%3Bj%2B%2B)%7Binst._addMethodEventListenerToNode(node%2Ce.name%2Ce.value%2Cinst)%3B%7D%7D%7D%2F%2F%20push%20configuration%20references%20at%20configure%20time%0Afunction%20applyTemplateContent(inst%2Cnode%2CnodeInfo)%7Bif(nodeInfo.templateInfo)%7Bnode._templateInfo%3DnodeInfo.templateInfo%3B%7D%7Dfunction%20createNodeEventHandler(context%2CeventName%2CmethodName)%7B%2F%2F%20Instances%20can%20optionally%20have%20a%20_methodHost%20which%20allows%20redirecting%20where%0A%2F%2F%20to%20find%20methods.%20Currently%20used%20by%20%60templatize%60.%0Acontext%3Dcontext._methodHost%7C%7Ccontext%3Bvar%20handler%3Dfunction%20handler(e)%7Bif(context%5BmethodName%5D)%7Bcontext%5BmethodName%5D(e%2Ce.detail)%3B%7Delse%7Bconsole.warn('listener%20method%20%60'%2BmethodName%2B'%60%20not%20defined')%3B%7D%7D%3Breturn%20handler%3B%7D%2F**%0A%20%20%20*%20Element%20mixin%20that%20provides%20basic%20template%20parsing%20and%20stamping%2C%20including%0A%20%20%20*%20the%20following%20template-related%20features%20for%20stamped%20templates%3A%0A%20%20%20*%0A%20%20%20*%20-%20Declarative%20event%20listeners%20(%60on-eventname%3D%22listener%22%60)%0A%20%20%20*%20-%20Map%20of%20node%20id's%20to%20stamped%20node%20instances%20(%60this.%24.id%60)%0A%20%20%20*%20-%20Nested%20template%20content%20caching%2Fremoval%20and%20re-installation%20(performance%0A%20%20%20*%20%20%20optimization)%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20basic%20template%20parsing%20and%20stamping%0A%20%20%20*%2FPolymer.TemplateStamp%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_TemplateStamp%7D%0A%20%20%20%20%20*%2Fvar%20TemplateStamp%3Dfunction(_superClass)%7B_inherits(TemplateStamp%2C_superClass)%3Bfunction%20TemplateStamp()%7B_classCallCheck(this%2CTemplateStamp)%3Breturn%20_possibleConstructorReturn(this%2C(TemplateStamp.__proto__%7C%7CObject.getPrototypeOf(TemplateStamp)).apply(this%2Carguments))%3B%7D_createClass(TemplateStamp%2C%5B%7Bkey%3A'_stampTemplate'%2C%2F**%0A%20%20%20%20%20%20%20*%20Clones%20the%20provided%20template%20content%20and%20returns%20a%20document%20fragment%0A%20%20%20%20%20%20%20*%20containing%20the%20cloned%20dom.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20template%20is%20parsed%20(once%20and%20memoized)%20using%20this%20library's%0A%20%20%20%20%20%20%20*%20template%20parsing%20features%2C%20and%20provides%20the%20following%20value-added%0A%20%20%20%20%20%20%20*%20features%3A%0A%20%20%20%20%20%20%20*%20*%20Adds%20declarative%20event%20listeners%20for%20%60on-event%3D%22handler%22%60%20attributes%0A%20%20%20%20%20%20%20*%20*%20Generates%20an%20%22id%20map%22%20for%20all%20nodes%20with%20id's%20under%20%60%24%60%20on%20returned%0A%20%20%20%20%20%20%20*%20%20%20document%20fragment%0A%20%20%20%20%20%20%20*%20*%20Passes%20template%20info%20including%20%60content%60%20back%20to%20templates%20as%0A%20%20%20%20%20%20%20*%20%20%20%60_templateInfo%60%20(a%20performance%20optimization%20to%20avoid%20deep%20template%0A%20%20%20%20%20%20%20*%20%20%20cloning)%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20the%20memoized%20template%20parsing%20process%20is%20destructive%20to%20the%0A%20%20%20%20%20%20%20*%20template%3A%20attributes%20for%20bindings%20and%20declarative%20event%20listeners%20are%0A%20%20%20%20%20%20%20*%20removed%20after%20being%20noted%20in%20notes%2C%20and%20any%20nested%20%60%3Ctemplate%3E.content%60%0A%20%20%20%20%20%20%20*%20is%20removed%20and%20stored%20in%20notes%20as%20well.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20stamp%0A%20%20%20%20%20%20%20*%20%40return%20%7B!StampedTemplate%7D%20Cloned%20template%20content%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_stampTemplate(template)%7B%2F%2F%20Polyfill%20support%3A%20bootstrap%20the%20template%20if%20it%20has%20not%20already%20been%0Aif(template%26%26!template.content%26%26window.HTMLTemplateElement%26%26HTMLTemplateElement.decorate)%7BHTMLTemplateElement.decorate(template)%3B%7Dvar%20templateInfo%3Dthis.constructor._parseTemplate(template)%3Bvar%20nodeInfo%3DtemplateInfo.nodeInfoList%3Bvar%20content%3DtemplateInfo.content%7C%7Ctemplate.content%3Bvar%20dom%3D%2F**%20%40type%20%7BDocumentFragment%7D%20*%2Fdocument.importNode(content%2Ctrue)%3B%2F%2F%20NOTE%3A%20ShadyDom%20optimization%20indicating%20there%20is%20an%20insertion%20point%0Adom.__noInsertionPoint%3D!templateInfo.hasInsertionPoint%3Bvar%20nodes%3Ddom.nodeList%3Dnew%20Array(nodeInfo.length)%3Bdom.%24%3D%7B%7D%3Bfor(var%20i%3D0%2Cl%3DnodeInfo.length%2Cinfo%3Bi%3Cl%26%26(info%3DnodeInfo%5Bi%5D)%3Bi%2B%2B)%7Bvar%20node%3Dnodes%5Bi%5D%3DfindTemplateNode(dom%2Cinfo)%3BapplyIdToMap(this%2Cdom.%24%2Cnode%2Cinfo)%3BapplyTemplateContent(this%2Cnode%2Cinfo)%3BapplyEventListener(this%2Cnode%2Cinfo)%3B%7Ddom%3D%2F**%20%40type%20%7B!StampedTemplate%7D%20*%2Fdom%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Areturn%20dom%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20an%20event%20listener%20by%20method%20name%20for%20the%20event%20provided.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20generates%20a%20handler%20function%20that%20looks%20up%20the%20method%0A%20%20%20%20%20%20%20*%20name%20at%20handling%20time.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20listener%20on%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Name%20of%20method%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20context%20Context%20the%20method%20will%20be%20called%20on%20(defaults%0A%20%20%20%20%20%20%20*%20%20%20to%20%60node%60)%0A%20%20%20%20%20%20%20*%20%40return%20%7BFunction%7D%20Generated%20handler%20function%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addMethodEventListenerToNode'%2Cvalue%3Afunction%20_addMethodEventListenerToNode(node%2CeventName%2CmethodName%2Ccontext)%7Bcontext%3Dcontext%7C%7Cnode%3Bvar%20handler%3DcreateNodeEventHandler(context%2CeventName%2CmethodName)%3Bthis._addEventListenerToNode(node%2CeventName%2Chandler)%3Breturn%20handler%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20point%20for%20adding%20custom%20or%20simulated%20event%20handling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20event%20listener%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20add%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addEventListenerToNode'%2Cvalue%3Afunction%20_addEventListenerToNode(node%2CeventName%2Chandler)%7Bnode.addEventListener(eventName%2Chandler)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20point%20for%20adding%20custom%20or%20simulated%20event%20handling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20remove%20event%20listener%20from%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20remove%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removeEventListenerFromNode'%2Cvalue%3Afunction%20_removeEventListenerFromNode(node%2CeventName%2Chandler)%7Bnode.removeEventListener(eventName%2Chandler)%3B%7D%7D%5D%2C%5B%7Bkey%3A'_parseTemplate'%2C%2F**%0A%20%20%20%20%20%20%20*%20Scans%20a%20template%20to%20produce%20template%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Template-specific%20metadata%20are%20stored%20in%20the%20object%20returned%2C%20and%20node-%0A%20%20%20%20%20%20%20*%20specific%20metadata%20are%20stored%20in%20objects%20in%20its%20flattened%20%60nodeInfoList%60%0A%20%20%20%20%20%20%20*%20array.%20%20Only%20nodes%20in%20the%20template%20that%20were%20parsed%20as%20nodes%20of%0A%20%20%20%20%20%20%20*%20interest%20contain%20an%20object%20in%20%60nodeInfoList%60.%20%20Each%20%60nodeInfo%60%20object%0A%20%20%20%20%20%20%20*%20contains%20an%20%60index%60%20(%60childNodes%60%20index%20in%20parent)%20and%20optionally%0A%20%20%20%20%20%20%20*%20%60parent%60%2C%20which%20points%20to%20node%20info%20of%20its%20parent%20(including%20its%20index).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20template%20metadata%20object%20returned%20from%20this%20method%20has%20the%20following%0A%20%20%20%20%20%20%20*%20structure%20(many%20fields%20optional)%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60%60%60js%0A%20%20%20%20%20%20%20*%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Flattened%20list%20of%20node%20metadata%20(for%20nodes%20that%20generated%20metadata)%0A%20%20%20%20%20%20%20*%20%20%20%20%20nodeInfoList%3A%20%5B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20%60id%60%20attribute%20for%20any%20nodes%20with%20id's%20for%20generating%20%60%24%60%20map%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20id%3A%20%7Bstring%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20%60on-event%3D%22handler%22%60%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20events%3A%20%5B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20name%3A%20%7Bstring%7D%2C%20%20%20%2F%2F%20event%20name%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%7Bstring%7D%2C%20%20%2F%2F%20handler%20method%20name%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20...%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20Notes%20when%20the%20template%20contained%20a%20%60%3Cslot%3E%60%20for%20shady%20DOM%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20optimization%20purposes%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20hasInsertionPoint%3A%20%7Bboolean%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20For%20nested%20%60%3Ctemplate%3E%60%60%20nodes%2C%20nested%20template%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20templateInfo%3A%20%7Bobject%7D%2C%20%2F%2F%20nested%20template%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20Metadata%20to%20allow%20efficient%20retrieval%20of%20instanced%20node%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20corresponding%20to%20this%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20parentInfo%3A%20%7Bnumber%7D%2C%20%20%20%2F%2F%20reference%20to%20parent%20nodeInfo%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20parentIndex%3A%20%7Bnumber%7D%2C%20%20%2F%2F%20index%20in%20parent's%20%60childNodes%60%20collection%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20infoIndex%3A%20%7Bnumber%7D%2C%20%20%20%20%2F%2F%20index%20of%20this%20%60nodeInfo%60%20in%20%60templateInfo.nodeInfoList%60%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20...%0A%20%20%20%20%20%20%20*%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20When%20true%2C%20the%20template%20had%20the%20%60strip-whitespace%60%20attribute%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20or%20was%20nested%20in%20a%20template%20with%20that%20setting%0A%20%20%20%20%20%20%20*%20%20%20%20%20stripWhitespace%3A%20%7Bboolean%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20For%20nested%20templates%2C%20nested%20template%20content%20is%20moved%20into%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20a%20document%20fragment%20stored%20here%3B%20this%20is%20an%20optimization%20to%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20avoid%20the%20cost%20of%20nested%20template%20cloning%0A%20%20%20%20%20%20%20*%20%20%20%20%20content%3A%20%7BDocumentFragment%7D%0A%20%20%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20kicks%20off%20a%20recursive%20treewalk%20as%20follows%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20%20%20*%20%20%20%20_parseTemplate%20%3C---------------------%2B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20_parseTemplateContent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20_parseTemplateNode%20%20%3C------------%7C--%2B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20_parseTemplateNestedTemplate%20--%2B%20%20%7C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20_parseTemplateChildNodes%20---------%2B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20_parseTemplateNodeAttributes%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20_parseTemplateNodeAttribute%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20These%20methods%20may%20be%20overridden%20to%20add%20custom%20metadata%20about%20templates%0A%20%20%20%20%20%20%20*%20to%20either%20%60templateInfo%60%20or%20%60nodeInfo%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20this%20method%20may%20be%20destructive%20to%20the%20template%2C%20in%20that%0A%20%20%20%20%20%20%20*%20e.g.%20event%20annotations%20may%20be%20removed%20after%20being%20noted%20in%20the%0A%20%20%20%20%20%20%20*%20template%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%3D%7D%20outerTemplateInfo%20Template%20metadata%20from%20the%20outer%0A%20%20%20%20%20%20%20*%20%20%20template%2C%20for%20parsing%20nested%20templates%0A%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Parsed%20template%20metadata%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_parseTemplate(template%2CouterTemplateInfo)%7B%2F%2F%20since%20a%20template%20may%20be%20re-used%2C%20memo-ize%20metadata%0Aif(!template._templateInfo)%7Bvar%20templateInfo%3Dtemplate._templateInfo%3D%7B%7D%3BtemplateInfo.nodeInfoList%3D%5B%5D%3BtemplateInfo.stripWhiteSpace%3DPolymer.legacyOptimizations%7C%7CouterTemplateInfo%26%26outerTemplateInfo.stripWhiteSpace%7C%7Ctemplate.hasAttribute('strip-whitespace')%3Bthis._parseTemplateContent(template%2CtemplateInfo%2C%7Bparent%3Anull%7D)%3B%7Dreturn%20template._templateInfo%3B%7D%7D%2C%7Bkey%3A'_parseTemplateContent'%2Cvalue%3Afunction%20_parseTemplateContent(template%2CtemplateInfo%2CnodeInfo)%7Breturn%20this._parseTemplateNode(template.content%2CtemplateInfo%2CnodeInfo)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20node%20and%20adds%20template%20and%20node%20metadata%20based%20on%0A%20%20%20%20%20%20%20*%20the%20current%20node%2C%20and%20its%20%60childNodes%60%20and%20%60attributes%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20may%20be%20overridden%20to%20add%20custom%20node%20or%20template%20specific%0A%20%20%20%20%20%20%20*%20metadata%20based%20on%20this%20node.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7B!TemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNode'%2Cvalue%3Afunction%20_parseTemplateNode(node%2CtemplateInfo%2CnodeInfo)%7Bvar%20noted%3Dvoid%200%3Bvar%20element%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%3Bif(element.localName%3D%3D'template'%26%26!element.hasAttribute('preserve-content'))%7Bnoted%3Dthis._parseTemplateNestedTemplate(element%2CtemplateInfo%2CnodeInfo)%7C%7Cnoted%3B%7Delse%20if(element.localName%3D%3D%3D'slot')%7B%2F%2F%20For%20ShadyDom%20optimization%2C%20indicating%20there%20is%20an%20insertion%20point%0AtemplateInfo.hasInsertionPoint%3Dtrue%3B%7Dwalker.currentNode%3Delement%3Bif(walker.firstChild())%7Bnoted%3Dthis._parseTemplateChildNodes(element%2CtemplateInfo%2CnodeInfo)%7C%7Cnoted%3B%7Dif(element.hasAttributes%26%26element.hasAttributes())%7Bnoted%3Dthis._parseTemplateNodeAttributes(element%2CtemplateInfo%2CnodeInfo)%7C%7Cnoted%3B%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20child%20nodes%20for%20the%20given%20root%20node.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20also%20wraps%20whitelisted%20legacy%20template%20extensions%0A%20%20%20%20%20%20%20*%20(%60is%3D%22dom-if%22%60%20and%20%60is%3D%22dom-repeat%22%60)%20with%20their%20equivalent%20element%0A%20%20%20%20%20%20%20*%20wrappers%2C%20collapses%20text%20nodes%2C%20and%20strips%20whitespace%20from%20the%20template%0A%20%20%20%20%20%20%20*%20if%20the%20%60templateInfo.stripWhitespace%60%20setting%20was%20provided.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20root%20Root%20node%20whose%20%60childNodes%60%20will%20be%20parsed%0A%20%20%20%20%20%20%20*%20%40param%20%7B!TemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateChildNodes'%2Cvalue%3Afunction%20_parseTemplateChildNodes(root%2CtemplateInfo%2CnodeInfo)%7Bif(root.localName%3D%3D%3D'script'%7C%7Croot.localName%3D%3D%3D'style')%7Breturn%3B%7Dwalker.currentNode%3Droot%3Bfor(var%20node%3Dwalker.firstChild()%2CparentIndex%3D0%2Cnext%3Bnode%3Bnode%3Dnext)%7B%2F%2F%20Wrap%20templates%0Aif(node.localName%3D%3D'template')%7Bnode%3DwrapTemplateExtension(node)%3B%7D%2F%2F%20collapse%20adjacent%20textNodes%3A%20fixes%20an%20IE%20issue%20that%20can%20cause%0A%2F%2F%20text%20nodes%20to%20be%20inexplicably%20split%20%3D(%0A%2F%2F%20note%20that%20root.normalize()%20should%20work%20but%20does%20not%20so%20we%20do%20this%0A%2F%2F%20manually.%0Awalker.currentNode%3Dnode%3Bnext%3Dwalker.nextSibling()%3Bif(node.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bvar%2F**%20Node%20*%2Fn%3Dnext%3Bwhile(n%26%26n.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bnode.textContent%2B%3Dn.textContent%3Bnext%3Dwalker.nextSibling()%3Broot.removeChild(n)%3Bn%3Dnext%3B%7D%2F%2F%20optionally%20strip%20whitespace%0Aif(templateInfo.stripWhiteSpace%26%26!node.textContent.trim())%7Broot.removeChild(node)%3Bcontinue%3B%7D%7Dvar%20childInfo%3D%7BparentIndex%3AparentIndex%2CparentInfo%3AnodeInfo%7D%3Bif(this._parseTemplateNode(node%2CtemplateInfo%2CchildInfo))%7BchildInfo.infoIndex%3DtemplateInfo.nodeInfoList.push(%2F**%20%40type%20%7B!NodeInfo%7D%20*%2FchildInfo)-1%3B%7D%2F%2F%20Increment%20if%20not%20removed%0Awalker.currentNode%3Dnode%3Bif(walker.parentNode())%7BparentIndex%2B%2B%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20content%20for%20the%20given%20nested%20%60%3Ctemplate%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Nested%20template%20info%20is%20stored%20as%20%60templateInfo%60%20in%20the%20current%20node's%0A%20%20%20%20%20%20%20*%20%60nodeInfo%60.%20%60template.content%60%20is%20removed%20and%20stored%20in%20%60templateInfo%60.%0A%20%20%20%20%20%20%20*%20It%20will%20then%20be%20the%20responsibility%20of%20the%20host%20to%20set%20it%20back%20to%20the%0A%20%20%20%20%20%20%20*%20template%20and%20for%20users%20stamping%20nested%20templates%20to%20use%20the%0A%20%20%20%20%20%20%20*%20%60_contentForTemplate%60%20method%20to%20retrieve%20the%20content%20for%20this%20template%0A%20%20%20%20%20%20%20*%20(an%20optimization%20to%20avoid%20the%20cost%20of%20cloning%20nested%20template%20content).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20node%20Node%20to%20parse%20(a%20%3Ctemplate%3E)%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20outerTemplateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%20%20that%20includes%20the%20template%20%60node%60%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNestedTemplate'%2Cvalue%3Afunction%20_parseTemplateNestedTemplate(node%2CouterTemplateInfo%2CnodeInfo)%7Bvar%20templateInfo%3Dthis._parseTemplate(node%2CouterTemplateInfo)%3Bvar%20content%3DtemplateInfo.content%3Dnode.content.ownerDocument.createDocumentFragment()%3Bcontent.appendChild(node.content)%3BnodeInfo.templateInfo%3DtemplateInfo%3Breturn%20true%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20node%20attributes%20and%20adds%20node%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20for%20nodes%20of%20interest.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNodeAttributes'%2Cvalue%3Afunction%20_parseTemplateNodeAttributes(node%2CtemplateInfo%2CnodeInfo)%7B%2F%2F%20Make%20copy%20of%20original%20attribute%20list%2C%20since%20the%20order%20may%20change%0A%2F%2F%20as%20attributes%20are%20added%20and%20removed%0Avar%20noted%3Dfalse%3Bvar%20attrs%3DArray.from(node.attributes)%3Bfor(var%20i%3Dattrs.length-1%2Ca%3Ba%3Dattrs%5Bi%5D%3Bi--)%7Bnoted%3Dthis._parseTemplateNodeAttribute(node%2CtemplateInfo%2CnodeInfo%2Ca.name%2Ca.value)%7C%7Cnoted%3B%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20a%20single%20template%20node%20attribute%20and%20adds%20node%20metadata%20to%0A%20%20%20%20%20%20%20*%20%60nodeInfo%60%20for%20attributes%20of%20interest.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20implementation%20adds%20metadata%20for%20%60on-event%3D%22handler%22%60%20attributes%0A%20%20%20%20%20%20%20*%20and%20%60id%60%20attributes.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7B!TemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Attribute%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Attribute%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNodeAttribute'%2Cvalue%3Afunction%20_parseTemplateNodeAttribute(node%2CtemplateInfo%2CnodeInfo%2Cname%2Cvalue)%7B%2F%2F%20events%20(on-*)%0Aif(name.slice(0%2C3)%3D%3D%3D'on-')%7Bnode.removeAttribute(name)%3BnodeInfo.events%3DnodeInfo.events%7C%7C%5B%5D%3BnodeInfo.events.push(%7Bname%3Aname.slice(3)%2Cvalue%3Avalue%7D)%3Breturn%20true%3B%7D%2F%2F%20static%20id%0Aelse%20if(name%3D%3D%3D'id')%7BnodeInfo.id%3Dvalue%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20%60content%60%20document%20fragment%20for%20a%20given%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20For%20nested%20templates%2C%20Polymer%20performs%20an%20optimization%20to%20cache%20nested%0A%20%20%20%20%20%20%20*%20template%20content%20to%20avoid%20the%20cost%20of%20cloning%20deeply%20nested%20templates.%0A%20%20%20%20%20%20%20*%20This%20method%20retrieves%20the%20cached%20content%20for%20a%20given%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20template%20Template%20to%20retrieve%20%60content%60%20for%0A%20%20%20%20%20%20%20*%20%40return%20%7BDocumentFragment%7D%20Content%20fragment%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_contentForTemplate'%2Cvalue%3Afunction%20_contentForTemplate(template)%7Bvar%20templateInfo%3D%2F**%20%40type%20%7BHTMLTemplateElementWithInfo%7D%20*%2Ftemplate._templateInfo%3Breturn%20templateInfo%26%26templateInfo.content%7C%7Ctemplate.content%3B%7D%7D%5D)%3Breturn%20TemplateStamp%3B%7D(superClass)%3Breturn%20TemplateStamp%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Ftemplate-stamp.html.js%0A",
            "resourceBytes": 19930,
            "encodedBytes": 0,
            "unusedBytes": 2975
          },
          {
            "name": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "resourceBytes": 64968,
            "encodedBytes": 18019,
            "unusedBytes": 15104
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%20%40const%20%7BObject%7D%20*%2Fvar%20CaseMap%3DPolymer.CaseMap%3B%2F%2F%20Monotonically%20increasing%20unique%20ID%20used%20for%20de-duping%20effects%20triggered%0A%2F%2F%20from%20multiple%20properties%20in%20the%20same%20turn%0Avar%20dedupeId%3D0%3B%2F**%0A%20%20%20*%20Property%20effect%20types%3B%20effects%20are%20stored%20on%20the%20prototype%20using%20these%20keys%0A%20%20%20*%20%40enum%20%7Bstring%7D%0A%20%20%20*%2Fvar%20TYPES%3D%7BCOMPUTE%3A'__computeEffects'%2CREFLECT%3A'__reflectEffects'%2CNOTIFY%3A'__notifyEffects'%2CPROPAGATE%3A'__propagateEffects'%2COBSERVE%3A'__observeEffects'%2CREAD_ONLY%3A'__readOnly'%7D%3B%2F**%20%40const%20%7BRegExp%7D%20*%2Fvar%20capitalAttributeRegex%3D%2F%5BA-Z%5D%2F%3B%2F**%0A%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20*%20name%3A%20(string%20%7C%20undefined)%2C%0A%20%20%20*%20structured%3A%20(boolean%20%7C%20undefined)%2C%0A%20%20%20*%20wildcard%3A%20(boolean%20%7C%20undefined)%0A%20%20%20*%20%7D%7D%0A%20%20%20*%2Fvar%20DataTrigger%3Dvoid%200%3B%2F%2Feslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20*%20info%3A%20%3F%2C%0A%20%20%20*%20trigger%3A%20(!DataTrigger%20%7C%20undefined)%2C%0A%20%20%20*%20fn%3A%20(!Function%20%7C%20undefined)%0A%20%20%20*%20%7D%7D%0A%20%20%20*%2Fvar%20DataEffect%3Dvoid%200%3B%2F%2Feslint-disable-line%20no-unused-vars%0Avar%20PropertyEffectsType%3Dvoid%200%3B%2F%2Feslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20*%20Ensures%20that%20the%20model%20has%20an%20own-property%20map%20of%20effects%20for%20the%20given%20type.%0A%20%20%20*%20The%20model%20may%20be%20a%20prototype%20or%20an%20instance.%0A%20%20%20*%0A%20%20%20*%20Property%20effects%20are%20stored%20as%20arrays%20of%20effects%20by%20property%20in%20a%20map%2C%0A%20%20%20*%20by%20named%20type%20on%20the%20model.%20e.g.%0A%20%20%20*%0A%20%20%20*%20%20%20__computeEffects%3A%20%7B%0A%20%20%20*%20%20%20%20%20foo%3A%20%5B%20...%20%5D%2C%0A%20%20%20*%20%20%20%20%20bar%3A%20%5B%20...%20%5D%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20If%20the%20model%20does%20not%20yet%20have%20an%20effect%20map%20for%20the%20type%2C%20one%20is%20created%0A%20%20%20*%20and%20returned.%20%20If%20it%20does%2C%20but%20it%20is%20not%20an%20own%20property%20(i.e.%20the%0A%20%20%20*%20prototype%20had%20effects)%2C%20the%20the%20map%20is%20deeply%20cloned%20and%20the%20copy%20is%0A%20%20%20*%20set%20on%20the%20model%20and%20returned%2C%20ready%20for%20new%20effects%20to%20be%20added.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7Bstring%7D%20type%20Property%20effect%20type%0A%20%20%20*%20%40return%20%7BObject%7D%20The%20own-property%20map%20of%20effects%20for%20the%20given%20type%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20ensureOwnEffectMap(model%2Ctype)%7Bvar%20effects%3Dmodel%5Btype%5D%3Bif(!effects)%7Beffects%3Dmodel%5Btype%5D%3D%7B%7D%3B%7Delse%20if(!model.hasOwnProperty(type))%7Beffects%3Dmodel%5Btype%5D%3DObject.create(model%5Btype%5D)%3Bfor(var%20p%20in%20effects)%7Bvar%20protoFx%3Deffects%5Bp%5D%3Bvar%20instFx%3Deffects%5Bp%5D%3DArray(protoFx.length)%3Bfor(var%20i%3D0%3Bi%3CprotoFx.length%3Bi%2B%2B)%7BinstFx%5Bi%5D%3DprotoFx%5Bi%5D%3B%7D%7D%7Dreturn%20effects%3B%7D%2F%2F%20--%20effects%20----------------------------------------------%0A%2F**%0A%20%20%20*%20Runs%20all%20effects%20of%20a%20given%20type%20for%20the%20given%20set%20of%20property%20changes%0A%20%20%20*%20on%20an%20instance.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20effects%20Object%20map%20of%20property-to-Array%20of%20effects%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%3D%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7B*%3D%7D%20extraArgs%20Additional%20metadata%20to%20pass%20to%20effect%20function%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20effect%20ran%20for%20this%20property%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runEffects(inst%2Ceffects%2Cprops%2ColdProps%2ChasPaths%2CextraArgs)%7Bif(effects)%7Bvar%20ran%3Dfalse%3Bvar%20id%3DdedupeId%2B%2B%3Bfor(var%20prop%20in%20props)%7Bif(runEffectsForProperty(inst%2Ceffects%2Cid%2Cprop%2Cprops%2ColdProps%2ChasPaths%2CextraArgs))%7Bran%3Dtrue%3B%7D%7Dreturn%20ran%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20*%20Runs%20a%20list%20of%20effects%20for%20a%20given%20property.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20effects%20Object%20map%20of%20property-to-Array%20of%20effects%0A%20%20%20*%20%40param%20%7Bnumber%7D%20dedupeId%20Counter%20used%20for%20de-duping%20effects%0A%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Name%20of%20changed%20property%0A%20%20%20*%20%40param%20%7B*%7D%20props%20Changed%20properties%0A%20%20%20*%20%40param%20%7B*%7D%20oldProps%20Old%20properties%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7B*%3D%7D%20extraArgs%20Additional%20metadata%20to%20pass%20to%20effect%20function%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20effect%20ran%20for%20this%20property%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runEffectsForProperty(inst%2Ceffects%2CdedupeId%2Cprop%2Cprops%2ColdProps%2ChasPaths%2CextraArgs)%7Bvar%20ran%3Dfalse%3Bvar%20rootProperty%3DhasPaths%3FPolymer.Path.root(prop)%3Aprop%3Bvar%20fxs%3Deffects%5BrootProperty%5D%3Bif(fxs)%7Bfor(var%20i%3D0%2Cl%3Dfxs.length%2Cfx%3Bi%3Cl%26%26(fx%3Dfxs%5Bi%5D)%3Bi%2B%2B)%7Bif((!fx.info%7C%7Cfx.info.lastRun!%3D%3DdedupeId)%26%26(!hasPaths%7C%7CpathMatchesTrigger(prop%2Cfx.trigger)))%7Bif(fx.info)%7Bfx.info.lastRun%3DdedupeId%3B%7Dfx.fn(inst%2Cprop%2Cprops%2ColdProps%2Cfx.info%2ChasPaths%2CextraArgs)%3Bran%3Dtrue%3B%7D%7D%7Dreturn%20ran%3B%7D%2F**%0A%20%20%20*%20Determines%20whether%20a%20property%2Fpath%20that%20has%20changed%20matches%20the%20trigger%0A%20%20%20*%20criteria%20for%20an%20effect.%20%20A%20trigger%20is%20a%20descriptor%20with%20the%20following%0A%20%20%20*%20structure%2C%20which%20matches%20the%20descriptors%20returned%20from%20%60parseArg%60.%0A%20%20%20*%20e.g.%20for%20%60foo.bar.*%60%3A%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20trigger%3A%20%7B%0A%20%20%20*%20%20%20name%3A%20'a.b'%2C%0A%20%20%20*%20%20%20structured%3A%20true%2C%0A%20%20%20*%20%20%20wildcard%3A%20true%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20If%20no%20trigger%20is%20given%2C%20the%20path%20is%20deemed%20to%20match.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20or%20property%20that%20changed%0A%20%20%20*%20%40param%20%7BDataTrigger%7D%20trigger%20Descriptor%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20path%20matched%20the%20trigger%0A%20%20%20*%2Ffunction%20pathMatchesTrigger(path%2Ctrigger)%7Bif(trigger)%7Bvar%20triggerPath%3Dtrigger.name%3Breturn%20triggerPath%3D%3Dpath%7C%7Ctrigger.structured%26%26Polymer.Path.isAncestor(triggerPath%2Cpath)%7C%7Ctrigger.wildcard%26%26Polymer.Path.isDescendant(triggerPath%2Cpath)%3B%7Delse%7Breturn%20true%3B%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22observer%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Calls%20the%20method%20with%20%60info.methodName%60%20on%20the%20instance%2C%20passing%20the%0A%20%20%20*%20new%20and%20old%20values.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runObserverEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7Bvar%20fn%3Dtypeof%20info.method%3D%3D%3D%22string%22%3Finst%5Binfo.method%5D%3Ainfo.method%3Bvar%20changedProp%3Dinfo.property%3Bif(fn)%7Bfn.call(inst%2Cinst.__data%5BchangedProp%5D%2ColdProps%5BchangedProp%5D)%3B%7Delse%20if(!info.dynamicFn)%7Bconsole.warn('observer%20method%20%60'%2Binfo.method%2B'%60%20not%20defined')%3B%7D%7D%2F**%0A%20%20%20*%20Runs%20%22notify%22%20effects%20for%20a%20set%20of%20changed%20properties.%0A%20%20%20*%0A%20%20%20*%20This%20method%20differs%20from%20the%20generic%20%60runEffects%60%20method%20in%20that%20it%0A%20%20%20*%20will%20dispatch%20path%20notification%20events%20in%20the%20case%20that%20the%20property%0A%20%20%20*%20changed%20was%20a%20path%20and%20the%20root%20property%20for%20that%20path%20didn't%20have%20a%0A%20%20%20*%20%22notify%22%20effect.%20%20This%20is%20to%20maintain%201.0%20behavior%20that%20did%20not%20require%0A%20%20%20*%20%60notify%3A%20true%60%20to%20ensure%20object%20sub-property%20notifications%20were%0A%20%20%20*%20sent.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20notifyProps%20Bag%20of%20properties%20to%20notify%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runNotifyEffects(inst%2CnotifyProps%2Cprops%2ColdProps%2ChasPaths)%7B%2F%2F%20Notify%0Avar%20fxs%3Dinst%5BTYPES.NOTIFY%5D%3Bvar%20notified%3Dvoid%200%3Bvar%20id%3DdedupeId%2B%2B%3B%2F%2F%20Try%20normal%20notify%20effects%3B%20if%20none%2C%20fall%20back%20to%20try%20path%20notification%0Afor(var%20prop%20in%20notifyProps)%7Bif(notifyProps%5Bprop%5D)%7Bif(fxs%26%26runEffectsForProperty(inst%2Cfxs%2Cid%2Cprop%2Cprops%2ColdProps%2ChasPaths))%7Bnotified%3Dtrue%3B%7Delse%20if(hasPaths%26%26notifyPath(inst%2Cprop%2Cprops))%7Bnotified%3Dtrue%3B%7D%7D%7D%2F%2F%20Flush%20host%20if%20we%20actually%20notified%20and%20host%20was%20batching%0A%2F%2F%20And%20the%20host%20has%20already%20initialized%20clients%3B%20this%20prevents%0A%2F%2F%20an%20issue%20with%20a%20host%20observing%20data%20changes%20before%20clients%20are%20ready.%0Avar%20host%3Dvoid%200%3Bif(notified%26%26(host%3Dinst.__dataHost)%26%26host._invalidateProperties)%7Bhost._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20*%20Dispatches%20%7Bproperty%7D-changed%20events%20with%20path%20information%20in%20the%20detail%0A%20%20%20*%20object%20to%20indicate%20a%20sub-path%20of%20the%20property%20was%20changed.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20element%20from%20which%20to%20fire%20the%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20that%20was%20changed%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20path%20was%20notified%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20notifyPath(inst%2Cpath%2Cprops)%7Bvar%20rootProperty%3DPolymer.Path.root(path)%3Bif(rootProperty!%3D%3Dpath)%7Bvar%20eventName%3DPolymer.CaseMap.camelToDashCase(rootProperty)%2B'-changed'%3BdispatchNotifyEvent(inst%2CeventName%2Cprops%5Bpath%5D%2Cpath)%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20*%20Dispatches%20%7Bproperty%7D-changed%20events%20to%20indicate%20a%20property%20(or%20path)%0A%20%20%20*%20changed.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20element%20from%20which%20to%20fire%20the%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20The%20name%20of%20the%20event%20to%20send%20('%7Bproperty%7D-changed')%0A%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20of%20the%20changed%20property%0A%20%20%20*%20%40param%20%7Bstring%20%7C%20null%20%7C%20undefined%7D%20path%20If%20a%20sub-path%20of%20this%20property%20changed%2C%20the%20path%0A%20%20%20*%20%20%20that%20changed%20(optional).%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20*%2Ffunction%20dispatchNotifyEvent(inst%2CeventName%2Cvalue%2Cpath)%7Bvar%20detail%3D%7Bvalue%3Avalue%2CqueueProperty%3Atrue%7D%3Bif(path)%7Bdetail.path%3Dpath%3B%7D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Finst.dispatchEvent(new%20CustomEvent(eventName%2C%7Bdetail%3Adetail%7D))%3B%7D%2F**%0A%20%20%20*%20Implements%20the%20%22notify%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Dispatches%20a%20non-bubbling%20event%20named%20%60info.eventName%60%20on%20the%20instance%0A%20%20%20*%20with%20a%20detail%20object%20containing%20the%20new%20%60value%60.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runNotifyEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo%2ChasPaths)%7Bvar%20rootProperty%3DhasPaths%3FPolymer.Path.root(property)%3Aproperty%3Bvar%20path%3DrootProperty!%3Dproperty%3Fproperty%3Anull%3Bvar%20value%3Dpath%3FPolymer.Path.get(inst%2Cpath)%3Ainst.__data%5Bproperty%5D%3Bif(path%26%26value%3D%3D%3Dundefined)%7Bvalue%3Dprops%5Bproperty%5D%3B%2F%2F%20specifically%20for%20.splices%0A%7DdispatchNotifyEvent(inst%2Cinfo.eventName%2Cvalue%2Cpath)%3B%7D%2F**%0A%20%20%20*%20Handler%20function%20for%202-way%20notification%20events.%20Receives%20context%0A%20%20%20*%20information%20captured%20in%20the%20%60addNotifyListener%60%20closure%20from%20the%0A%20%20%20*%20%60__notifyListeners%60%20metadata.%0A%20%20%20*%0A%20%20%20*%20Sets%20the%20value%20of%20the%20notified%20property%20to%20the%20host%20property%20or%20path.%20%20If%0A%20%20%20*%20the%20event%20contained%20path%20information%2C%20translate%20that%20path%20to%20the%20host%0A%20%20%20*%20scope's%20name%20for%20that%20path%20first.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BCustomEvent%7D%20event%20Notification%20event%20(e.g.%20'%3Cproperty%3E-changed')%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Host%20element%20instance%20handling%20the%20notification%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20fromProp%20Child%20element%20property%20that%20was%20bound%0A%20%20%20*%20%40param%20%7Bstring%7D%20toPath%20Host%20property%2Fpath%20that%20was%20bound%0A%20%20%20*%20%40param%20%7Bboolean%7D%20negate%20Whether%20the%20binding%20was%20negated%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20handleNotification(event%2Cinst%2CfromProp%2CtoPath%2Cnegate)%7Bvar%20value%3Dvoid%200%3Bvar%20detail%3D%2F**%20%40type%20%7BObject%7D%20*%2Fevent.detail%3Bvar%20fromPath%3Ddetail%26%26detail.path%3Bif(fromPath)%7BtoPath%3DPolymer.Path.translate(fromProp%2CtoPath%2CfromPath)%3Bvalue%3Ddetail%26%26detail.value%3B%7Delse%7Bvalue%3Devent.currentTarget%5BfromProp%5D%3B%7Dvalue%3Dnegate%3F!value%3Avalue%3Bif(!inst%5BTYPES.READ_ONLY%5D%7C%7C!inst%5BTYPES.READ_ONLY%5D%5BtoPath%5D)%7Bif(inst._setPendingPropertyOrPath(toPath%2Cvalue%2Ctrue%2CBoolean(fromPath))%26%26(!detail%7C%7C!detail.queueProperty))%7Binst._invalidateProperties()%3B%7D%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22reflect%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Sets%20the%20attribute%20named%20%60info.attrName%60%20to%20the%20given%20property%20value.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runReflectEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7Bvar%20value%3Dinst.__data%5Bproperty%5D%3Bif(Polymer.sanitizeDOMValue)%7Bvalue%3DPolymer.sanitizeDOMValue(value%2Cinfo.attrName%2C'attribute'%2C%2F**%20%40type%20%7BNode%7D%20*%2Finst)%3B%7Dinst._propertyToAttribute(property%2Cinfo.attrName%2Cvalue)%3B%7D%2F**%0A%20%20%20*%20Runs%20%22computed%22%20effects%20for%20a%20set%20of%20changed%20properties.%0A%20%20%20*%0A%20%20%20*%20This%20method%20differs%20from%20the%20generic%20%60runEffects%60%20method%20in%20that%20it%0A%20%20%20*%20continues%20to%20run%20computed%20effects%20based%20on%20the%20output%20of%20each%20pass%20until%0A%20%20%20*%20there%20are%20no%20more%20newly%20computed%20properties.%20%20This%20ensures%20that%20all%0A%20%20%20*%20properties%20that%20will%20be%20computed%20by%20the%20initial%20set%20of%20changes%20are%0A%20%20%20*%20computed%20before%20other%20effects%20(binding%20propagation%2C%20observers%2C%20and%20notify)%0A%20%20%20*%20run.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20changed%20properties%0A%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runComputedEffects(inst%2CchangedProps%2ColdProps%2ChasPaths)%7Bvar%20computeEffects%3Dinst%5BTYPES.COMPUTE%5D%3Bif(computeEffects)%7Bvar%20inputProps%3DchangedProps%3Bwhile(runEffects(inst%2CcomputeEffects%2CinputProps%2ColdProps%2ChasPaths))%7BObject.assign(oldProps%2Cinst.__dataOld)%3BObject.assign(changedProps%2Cinst.__dataPending)%3BinputProps%3Dinst.__dataPending%3Binst.__dataPending%3Dnull%3B%7D%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22computed%20property%22%20effect%20by%20running%20the%20method%20with%20the%0A%20%20%20*%20values%20of%20the%20arguments%20specified%20in%20the%20%60info%60%20object%20and%20setting%20the%0A%20%20%20*%20return%20value%20to%20the%20computed%20property%20specified.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runComputedEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7Bvar%20result%3DrunMethodEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%3Bvar%20computedProp%3Dinfo.methodInfo%3Bif(inst.__dataHasAccessor%26%26inst.__dataHasAccessor%5BcomputedProp%5D)%7Binst._setPendingProperty(computedProp%2Cresult%2Ctrue)%3B%7Delse%7Binst%5BcomputedProp%5D%3Dresult%3B%7D%7D%2F**%0A%20%20%20*%20Computes%20path%20changes%20based%20on%20path%20links%20set%20up%20using%20the%20%60linkPaths%60%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20whose%20props%20are%20changing%0A%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3C(string%7Cnumber)%3E%7D%20path%20Path%20that%20has%20changed%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20changed%20path%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20computeLinkedPaths(inst%2Cpath%2Cvalue)%7Bvar%20links%3Dinst.__dataLinkedPaths%3Bif(links)%7Bvar%20link%3Dvoid%200%3Bfor(var%20a%20in%20links)%7Bvar%20b%3Dlinks%5Ba%5D%3Bif(Polymer.Path.isDescendant(a%2Cpath))%7Blink%3DPolymer.Path.translate(a%2Cb%2Cpath)%3Binst._setPendingPropertyOrPath(link%2Cvalue%2Ctrue%2Ctrue)%3B%7Delse%20if(Polymer.Path.isDescendant(b%2Cpath))%7Blink%3DPolymer.Path.translate(b%2Ca%2Cpath)%3Binst._setPendingPropertyOrPath(link%2Cvalue%2Ctrue%2Ctrue)%3B%7D%7D%7D%7D%2F%2F%20--%20bindings%20----------------------------------------------%0A%2F**%0A%20%20%20*%20Adds%20binding%20metadata%20to%20the%20current%20%60nodeInfo%60%2C%20and%20binding%20effects%0A%20%20%20*%20for%20all%20part%20dependencies%20to%20%60templateInfo%60.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BFunction%7D%20constructor%20Class%20that%20%60_parseTemplate%60%20is%20currently%0A%20%20%20*%20%20%20running%20on%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20*%20%40param%20%7Bstring%7D%20kind%20Binding%20kind%2C%20either%20'property'%2C%20'attribute'%2C%20or%20'text'%0A%20%20%20*%20%40param%20%7Bstring%7D%20target%20Target%20property%20name%0A%20%20%20*%20%40param%20%7B!Array%3C!BindingPart%3E%7D%20parts%20Array%20of%20binding%20part%20metadata%0A%20%20%20*%20%40param%20%7Bstring%3D%7D%20literal%20Literal%20text%20surrounding%20binding%20parts%20(specified%0A%20%20%20*%20%20%20only%20for%20'property'%20bindings%2C%20since%20these%20must%20be%20initialized%20as%20part%0A%20%20%20*%20%20%20of%20boot-up)%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20addBinding(constructor%2CtemplateInfo%2CnodeInfo%2Ckind%2Ctarget%2Cparts%2Cliteral)%7B%2F%2F%20Create%20binding%20metadata%20and%20add%20to%20nodeInfo%0AnodeInfo.bindings%3DnodeInfo.bindings%7C%7C%5B%5D%3Bvar%2F**%20Binding%20*%2Fbinding%3D%7Bkind%3Akind%2Ctarget%3Atarget%2Cparts%3Aparts%2Cliteral%3Aliteral%2CisCompound%3Aparts.length!%3D%3D1%7D%3BnodeInfo.bindings.push(binding)%3B%2F%2F%20Add%20listener%20info%20to%20binding%20metadata%0Aif(shouldAddListener(binding))%7Bvar%20_binding%24parts%24%3Dbinding.parts%5B0%5D%2Cevent%3D_binding%24parts%24.event%2Cnegate%3D_binding%24parts%24.negate%3Bbinding.listenerEvent%3Devent%7C%7CCaseMap.camelToDashCase(target)%2B'-changed'%3Bbinding.listenerNegate%3Dnegate%3B%7D%2F%2F%20Add%20%22propagate%22%20property%20effects%20to%20templateInfo%0Avar%20index%3DtemplateInfo.nodeInfoList.length%3Bfor(var%20i%3D0%3Bi%3Cbinding.parts.length%3Bi%2B%2B)%7Bvar%20part%3Dbinding.parts%5Bi%5D%3Bpart.compoundIndex%3Di%3BaddEffectForBindingPart(constructor%2CtemplateInfo%2Cbinding%2Cpart%2Cindex)%3B%7D%7D%2F**%0A%20%20%20*%20Adds%20property%20effects%20to%20the%20given%20%60templateInfo%60%20for%20the%20given%20binding%0A%20%20%20*%20part.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BFunction%7D%20constructor%20Class%20that%20%60_parseTemplate%60%20is%20currently%0A%20%20%20*%20%20%20running%20on%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40param%20%7Bnumber%7D%20index%20Index%20into%20%60nodeInfoList%60%20for%20this%20node%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2Ffunction%20addEffectForBindingPart(constructor%2CtemplateInfo%2Cbinding%2Cpart%2Cindex)%7Bif(!part.literal)%7Bif(binding.kind%3D%3D%3D'attribute'%26%26binding.target%5B0%5D%3D%3D%3D'-')%7Bconsole.warn('Cannot%20set%20attribute%20'%2Bbinding.target%2B'%20because%20%22-%22%20is%20not%20a%20valid%20attribute%20starting%20character')%3B%7Delse%7Bvar%20dependencies%3Dpart.dependencies%3Bvar%20info%3D%7Bindex%3Aindex%2Cbinding%3Abinding%2Cpart%3Apart%2Cevaluator%3Aconstructor%7D%3Bfor(var%20j%3D0%3Bj%3Cdependencies.length%3Bj%2B%2B)%7Bvar%20trigger%3Ddependencies%5Bj%5D%3Bif(typeof%20trigger%3D%3D'string')%7Btrigger%3DparseArg(trigger)%3Btrigger.wildcard%3Dtrue%3B%7Dconstructor._addTemplatePropertyEffect(templateInfo%2Ctrigger.rootProperty%2C%7Bfn%3ArunBindingEffect%2Cinfo%3Ainfo%2Ctrigger%3Atrigger%7D)%3B%7D%7D%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22binding%22%20(property%2Fpath%20binding)%20effect.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20binding%20syntax%20is%20overridable%20via%20%60_parseBindings%60%20and%0A%20%20%20*%20%60_evaluateBinding%60.%20%20This%20method%20will%20call%20%60_evaluateBinding%60%20for%20any%0A%20%20%20*%20non-literal%20parts%20returned%20from%20%60_parseBindings%60.%20%20However%2C%0A%20%20%20*%20there%20is%20no%20support%20for%20_path_%20bindings%20via%20custom%20binding%20parts%2C%0A%20%20%20*%20as%20this%20is%20specific%20to%20Polymer's%20path%20binding%20syntax.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7BArray%7D%20nodeList%20List%20of%20nodes%20associated%20with%20%60nodeInfoList%60%20template%0A%20%20%20*%20%20%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runBindingEffect(inst%2Cpath%2Cprops%2ColdProps%2Cinfo%2ChasPaths%2CnodeList)%7Bvar%20node%3DnodeList%5Binfo.index%5D%3Bvar%20binding%3Dinfo.binding%3Bvar%20part%3Dinfo.part%3B%2F%2F%20Subpath%20notification%3A%20transform%20path%20and%20set%20to%20client%0A%2F%2F%20e.g.%3A%20foo%3D%22%7B%7Bobj.sub%7D%7D%22%2C%20path%3A%20'obj.sub.prop'%2C%20set%20'foo.prop'%3Dobj.sub.prop%0Aif(hasPaths%26%26part.source%26%26path.length%3Epart.source.length%26%26binding.kind%3D%3D'property'%26%26!binding.isCompound%26%26node.__isPropertyEffectsClient%26%26node.__dataHasAccessor%26%26node.__dataHasAccessor%5Bbinding.target%5D)%7Bvar%20value%3Dprops%5Bpath%5D%3Bpath%3DPolymer.Path.translate(part.source%2Cbinding.target%2Cpath)%3Bif(node._setPendingPropertyOrPath(path%2Cvalue%2Cfalse%2Ctrue))%7Binst._enqueueClient(node)%3B%7D%7Delse%7Bvar%20_value%3Dinfo.evaluator._evaluateBinding(inst%2Cpart%2Cpath%2Cprops%2ColdProps%2ChasPaths)%3B%2F%2F%20Propagate%20value%20to%20child%0AapplyBindingValue(inst%2Cnode%2Cbinding%2Cpart%2C_value)%3B%7D%7D%2F**%0A%20%20%20*%20Sets%20the%20value%20for%20an%20%22binding%22%20(binding)%20effect%20to%20a%20node%2C%0A%20%20%20*%20either%20as%20a%20property%20or%20attribute.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20owning%20the%20binding%20effect%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Target%20node%20for%20binding%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20applyBindingValue(inst%2Cnode%2Cbinding%2Cpart%2Cvalue)%7Bvalue%3DcomputeBindingValue(node%2Cvalue%2Cbinding%2Cpart)%3Bif(Polymer.sanitizeDOMValue)%7Bvalue%3DPolymer.sanitizeDOMValue(value%2Cbinding.target%2Cbinding.kind%2Cnode)%3B%7Dif(binding.kind%3D%3D'attribute')%7B%2F%2F%20Attribute%20binding%0Ainst._valueToNodeAttribute(%2F**%20%40type%20%7BElement%7D%20*%2Fnode%2Cvalue%2Cbinding.target)%3B%7Delse%7B%2F%2F%20Property%20binding%0Avar%20prop%3Dbinding.target%3Bif(node.__isPropertyEffectsClient%26%26node.__dataHasAccessor%26%26node.__dataHasAccessor%5Bprop%5D)%7Bif(!node%5BTYPES.READ_ONLY%5D%7C%7C!node%5BTYPES.READ_ONLY%5D%5Bprop%5D)%7Bif(node._setPendingProperty(prop%2Cvalue))%7Binst._enqueueClient(node)%3B%7D%7D%7Delse%7Binst._setUnmanagedPropertyToNode(node%2Cprop%2Cvalue)%3B%7D%7D%7D%2F**%0A%20%20%20*%20Transforms%20an%20%22binding%22%20effect%20value%20based%20on%20compound%20%26%20negation%0A%20%20%20*%20effect%20metadata%2C%20as%20well%20as%20handling%20for%20special-case%20properties%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20the%20value%20will%20be%20set%20to%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40return%20%7B*%7D%20Transformed%20value%20to%20set%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20computeBindingValue(node%2Cvalue%2Cbinding%2Cpart)%7Bif(binding.isCompound)%7Bvar%20storage%3Dnode.__dataCompoundStorage%5Bbinding.target%5D%3Bstorage%5Bpart.compoundIndex%5D%3Dvalue%3Bvalue%3Dstorage.join('')%3B%7Dif(binding.kind!%3D%3D'attribute')%7B%2F%2F%20Some%20browsers%20serialize%20%60undefined%60%20to%20%60%22undefined%22%60%0Aif(binding.target%3D%3D%3D'textContent'%7C%7Cbinding.target%3D%3D%3D'value'%26%26(node.localName%3D%3D%3D'input'%7C%7Cnode.localName%3D%3D%3D'textarea'))%7Bvalue%3Dvalue%3D%3Dundefined%3F''%3Avalue%3B%7D%7Dreturn%20value%3B%7D%2F**%0A%20%20%20*%20Returns%20true%20if%20a%20binding's%20metadata%20meets%20all%20the%20requirements%20to%20allow%0A%20%20%20*%202-way%20binding%2C%20and%20therefore%20a%20%60%3Cproperty%3E-changed%60%20event%20listener%20should%20be%0A%20%20%20*%20added%3A%0A%20%20%20*%20-%20used%20curly%20braces%0A%20%20%20*%20-%20is%20a%20property%20(not%20attribute)%20binding%0A%20%20%20*%20-%20is%20not%20a%20textContent%20binding%0A%20%20%20*%20-%20is%20not%20compound%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%202-way%20listener%20should%20be%20added%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20shouldAddListener(binding)%7Breturn%20Boolean(binding.target)%26%26binding.kind!%3D'attribute'%26%26binding.kind!%3D'text'%26%26!binding.isCompound%26%26binding.parts%5B0%5D.mode%3D%3D%3D'%7B'%3B%7D%2F**%0A%20%20%20*%20Setup%20compound%20binding%20storage%20structures%2C%20notify%20listeners%2C%20and%20dataHost%0A%20%20%20*%20references%20onto%20the%20bound%20nodeList.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20that%20bas%20been%20previously%20bound%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20setupBindings(inst%2CtemplateInfo)%7B%2F%2F%20Setup%20compound%20storage%2C%20dataHost%2C%20and%20notify%20listeners%0Avar%20nodeList%3DtemplateInfo.nodeList%2CnodeInfoList%3DtemplateInfo.nodeInfoList%3Bif(nodeInfoList.length)%7Bfor(var%20i%3D0%3Bi%3CnodeInfoList.length%3Bi%2B%2B)%7Bvar%20info%3DnodeInfoList%5Bi%5D%3Bvar%20node%3DnodeList%5Bi%5D%3Bvar%20bindings%3Dinfo.bindings%3Bif(bindings)%7Bfor(var%20_i%3D0%3B_i%3Cbindings.length%3B_i%2B%2B)%7Bvar%20binding%3Dbindings%5B_i%5D%3BsetupCompoundStorage(node%2Cbinding)%3BaddNotifyListener(node%2Cinst%2Cbinding)%3B%7D%7Dnode.__dataHost%3Dinst%3B%7D%7D%7D%2F**%0A%20%20%20*%20Initializes%20%60__dataCompoundStorage%60%20local%20storage%20on%20a%20bound%20node%20with%0A%20%20%20*%20initial%20literal%20data%20for%20compound%20bindings%2C%20and%20sets%20the%20joined%0A%20%20%20*%20literal%20parts%20to%20the%20bound%20property.%0A%20%20%20*%0A%20%20%20*%20When%20changes%20to%20compound%20parts%20occur%2C%20they%20are%20first%20set%20into%20the%20compound%0A%20%20%20*%20storage%20array%20for%20that%20property%2C%20and%20then%20the%20array%20is%20joined%20to%20result%20in%0A%20%20%20*%20the%20final%20value%20set%20to%20the%20property%2Fattribute.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Bound%20node%20to%20initialize%0A%20%20%20*%20%40param%20%7BBinding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20setupCompoundStorage(node%2Cbinding)%7Bif(binding.isCompound)%7B%2F%2F%20Create%20compound%20storage%20map%0Avar%20storage%3Dnode.__dataCompoundStorage%7C%7C(node.__dataCompoundStorage%3D%7B%7D)%3Bvar%20parts%3Dbinding.parts%3B%2F%2F%20Copy%20literals%20from%20parts%20into%20storage%20for%20this%20binding%0Avar%20literals%3Dnew%20Array(parts.length)%3Bfor(var%20j%3D0%3Bj%3Cparts.length%3Bj%2B%2B)%7Bliterals%5Bj%5D%3Dparts%5Bj%5D.literal%3B%7Dvar%20target%3Dbinding.target%3Bstorage%5Btarget%5D%3Dliterals%3B%2F%2F%20Configure%20properties%20with%20their%20literal%20parts%0Aif(binding.literal%26%26binding.kind%3D%3D'property')%7Bnode%5Btarget%5D%3Dbinding.literal%3B%7D%7D%7D%2F**%0A%20%20%20*%20Adds%20a%202-way%20binding%20notification%20event%20listener%20to%20the%20node%20specified%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20node%20Child%20element%20to%20add%20listener%20to%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Host%20element%20instance%20to%20handle%20notification%20event%0A%20%20%20*%20%40param%20%7BBinding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20addNotifyListener(node%2Cinst%2Cbinding)%7Bif(binding.listenerEvent)%7Bvar%20part%3Dbinding.parts%5B0%5D%3Bnode.addEventListener(binding.listenerEvent%2Cfunction(e)%7BhandleNotification(e%2Cinst%2Cbinding.target%2Cpart.source%2Cpart.negate)%3B%7D)%3B%7D%7D%2F%2F%20--%20for%20method-based%20effects%20(complexObserver%20%26%20computed)%20--------------%0A%2F**%0A%20%20%20*%20Adds%20property%20effects%20for%20each%20argument%20in%20the%20method%20signature%20(and%0A%20%20%20*%20optionally%2C%20for%20the%20method%20name%20if%20%60dynamic%60%20is%20true)%20that%20calls%20the%0A%20%20%20*%20provided%20effect%20function.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BElement%20%7C%20Object%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7B!MethodSignature%7D%20sig%20Method%20signature%20metadata%0A%20%20%20*%20%40param%20%7Bstring%7D%20type%20Type%20of%20property%20effect%20to%20add%0A%20%20%20*%20%40param%20%7BFunction%7D%20effectFn%20Function%20to%20run%20when%20arguments%20change%0A%20%20%20*%20%40param%20%7B*%3D%7D%20methodInfo%20Effect-specific%20information%20to%20be%20included%20in%0A%20%20%20*%20%20%20method%20effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%20whether%0A%20%20%20*%20%20%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%20Note%2C%0A%20%20%20*%20%20%20defaults%20to%20true%20if%20the%20signature%20is%20static%20(sig.static%20is%20true).%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20createMethodEffect(model%2Csig%2Ctype%2CeffectFn%2CmethodInfo%2CdynamicFn)%7BdynamicFn%3Dsig.static%7C%7CdynamicFn%26%26((typeof%20dynamicFn%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(dynamicFn))!%3D%3D'object'%7C%7CdynamicFn%5Bsig.methodName%5D)%3Bvar%20info%3D%7BmethodName%3Asig.methodName%2Cargs%3Asig.args%2CmethodInfo%3AmethodInfo%2CdynamicFn%3AdynamicFn%7D%3Bfor(var%20i%3D0%2Carg%3Bi%3Csig.args.length%26%26(arg%3Dsig.args%5Bi%5D)%3Bi%2B%2B)%7Bif(!arg.literal)%7Bmodel._addPropertyEffect(arg.rootProperty%2Ctype%2C%7Bfn%3AeffectFn%2Cinfo%3Ainfo%2Ctrigger%3Aarg%7D)%3B%7D%7Dif(dynamicFn)%7Bmodel._addPropertyEffect(sig.methodName%2Ctype%2C%7Bfn%3AeffectFn%2Cinfo%3Ainfo%7D)%3B%7D%7D%2F**%0A%20%20%20*%20Calls%20a%20method%20with%20arguments%20marshaled%20from%20properties%20on%20the%20instance%0A%20%20%20*%20based%20on%20the%20method%20signature%20contained%20in%20the%20effect%20metadata.%0A%20%20%20*%0A%20%20%20*%20Multi-property%20observers%2C%20computed%20properties%2C%20and%20inline%20computing%0A%20%20%20*%20functions%20call%20this%20function%20to%20invoke%20the%20method%2C%20then%20use%20the%20return%0A%20%20%20*%20value%20accordingly.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7B*%7D%20Returns%20the%20return%20value%20from%20the%20method%20invocation%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runMethodEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7B%2F%2F%20Instances%20can%20optionally%20have%20a%20_methodHost%20which%20allows%20redirecting%20where%0A%2F%2F%20to%20find%20methods.%20Currently%20used%20by%20%60templatize%60.%0Avar%20context%3Dinst._methodHost%7C%7Cinst%3Bvar%20fn%3Dcontext%5Binfo.methodName%5D%3Bif(fn)%7Bvar%20args%3Dinst._marshalArgs(info.args%2Cproperty%2Cprops)%3Breturn%20fn.apply(context%2Cargs)%3B%7Delse%20if(!info.dynamicFn)%7Bconsole.warn('method%20%60'%2Binfo.methodName%2B'%60%20not%20defined')%3B%7D%7Dvar%20emptyArray%3D%5B%5D%3B%2F%2F%20Regular%20expressions%20used%20for%20binding%0Avar%20IDENT%3D'(%3F%3A'%2B'%5Ba-zA-Z_%24%5D%5B%5C%5Cw.%3A%24%5C%5C-*%5D*'%2B')'%3Bvar%20NUMBER%3D'(%3F%3A'%2B'%5B-%2B%5D%3F%5B0-9%5D*%5C%5C.%3F%5B0-9%5D%2B(%3F%3A%5BeE%5D%5B-%2B%5D%3F%5B0-9%5D%2B)%3F'%2B')'%3Bvar%20SQUOTE_STRING%3D'(%3F%3A'%2B'%5C'(%3F%3A%5B%5E%5C'%5C%5C%5C%5C%5D%7C%5C%5C%5C%5C.)*%5C''%2B')'%3Bvar%20DQUOTE_STRING%3D'(%3F%3A'%2B'%22(%3F%3A%5B%5E%22%5C%5C%5C%5C%5D%7C%5C%5C%5C%5C.)*%22'%2B')'%3Bvar%20STRING%3D'(%3F%3A'%2BSQUOTE_STRING%2B'%7C'%2BDQUOTE_STRING%2B')'%3Bvar%20ARGUMENT%3D'(%3F%3A('%2BIDENT%2B'%7C'%2BNUMBER%2B'%7C'%2BSTRING%2B')%5C%5Cs*'%2B')'%3Bvar%20ARGUMENTS%3D'(%3F%3A'%2BARGUMENT%2B'(%3F%3A%2C%5C%5Cs*'%2BARGUMENT%2B')*'%2B')'%3Bvar%20ARGUMENT_LIST%3D'(%3F%3A'%2B'%5C%5C(%5C%5Cs*'%2B'(%3F%3A'%2BARGUMENTS%2B'%3F'%2B')'%2B'%5C%5C)%5C%5Cs*'%2B')'%3Bvar%20BINDING%3D'('%2BIDENT%2B'%5C%5Cs*'%2BARGUMENT_LIST%2B'%3F'%2B')'%3B%2F%2F%20Group%203%0Avar%20OPEN_BRACKET%3D'(%5C%5C%5B%5C%5C%5B%7C%7B%7B)'%2B'%5C%5Cs*'%3Bvar%20CLOSE_BRACKET%3D'(%3F%3A%5D%5D%7C%7D%7D)'%3Bvar%20NEGATE%3D'(%3F%3A(!)%5C%5Cs*)%3F'%3B%2F%2F%20Group%202%0Avar%20EXPRESSION%3DOPEN_BRACKET%2BNEGATE%2BBINDING%2BCLOSE_BRACKET%3Bvar%20bindingRegex%3Dnew%20RegExp(EXPRESSION%2C%22g%22)%3B%2F**%0A%20%20%20*%20Create%20a%20string%20from%20binding%20parts%20of%20all%20the%20literal%20parts%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%3CBindingPart%3E%7D%20parts%20All%20parts%20to%20stringify%0A%20%20%20*%20%40return%20%7Bstring%7D%20String%20made%20from%20the%20literal%20parts%0A%20%20%20*%2Ffunction%20literalFromParts(parts)%7Bvar%20s%3D''%3Bfor(var%20i%3D0%3Bi%3Cparts.length%3Bi%2B%2B)%7Bvar%20literal%3Dparts%5Bi%5D.literal%3Bs%2B%3Dliteral%7C%7C''%3B%7Dreturn%20s%3B%7D%2F**%0A%20%20%20*%20Parses%20an%20expression%20string%20for%20a%20method%20signature%2C%20and%20returns%20a%20metadata%0A%20%20%20*%20describing%20the%20method%20in%20terms%20of%20%60methodName%60%2C%20%60static%60%20(whether%20all%20the%0A%20%20%20*%20arguments%20are%20literals)%2C%20and%20an%20array%20of%20%60args%60%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20expression%20The%20expression%20to%20parse%0A%20%20%20*%20%40return%20%7B%3FMethodSignature%7D%20The%20method%20metadata%20object%20if%20a%20method%20expression%20was%0A%20%20%20*%20%20%20found%2C%20otherwise%20%60undefined%60%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20parseMethod(expression)%7B%2F%2F%20tries%20to%20match%20valid%20javascript%20property%20names%0Avar%20m%3Dexpression.match(%2F(%5B%5E%5Cs%5D%2B%3F)%5C((%5B%5Cs%5CS%5D*)%5C)%2F)%3Bif(m)%7Bvar%20methodName%3Dm%5B1%5D%3Bvar%20sig%3D%7BmethodName%3AmethodName%2Cstatic%3Atrue%2Cargs%3AemptyArray%7D%3Bif(m%5B2%5D.trim())%7B%2F%2F%20replace%20escaped%20commas%20with%20comma%20entity%2C%20split%20on%20un-escaped%20commas%0Avar%20args%3Dm%5B2%5D.replace(%2F%5C%5C%2C%2Fg%2C'%26comma%3B').split('%2C')%3Breturn%20parseArgs(args%2Csig)%3B%7Delse%7Breturn%20sig%3B%7D%7Dreturn%20null%3B%7D%2F**%0A%20%20%20*%20Parses%20an%20array%20of%20arguments%20and%20sets%20the%20%60args%60%20property%20of%20the%20supplied%0A%20%20%20*%20signature%20metadata%20object.%20Sets%20the%20%60static%60%20property%20to%20false%20if%20any%0A%20%20%20*%20argument%20is%20a%20non-literal.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%3Cstring%3E%7D%20argList%20Array%20of%20argument%20names%0A%20%20%20*%20%40param%20%7B!MethodSignature%7D%20sig%20Method%20signature%20metadata%20object%0A%20%20%20*%20%40return%20%7B!MethodSignature%7D%20The%20updated%20signature%20metadata%20object%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20parseArgs(argList%2Csig)%7Bsig.args%3DargList.map(function(rawArg)%7Bvar%20arg%3DparseArg(rawArg)%3Bif(!arg.literal)%7Bsig.static%3Dfalse%3B%7Dreturn%20arg%3B%7D%2Cthis)%3Breturn%20sig%3B%7D%2F**%0A%20%20%20*%20Parses%20an%20individual%20argument%2C%20and%20returns%20an%20argument%20metadata%20object%0A%20%20%20*%20with%20the%20following%20fields%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%7B%0A%20%20%20*%20%20%20%20%20value%3A%20'prop'%2C%20%20%20%20%20%20%20%20%2F%2F%20property%2Fpath%20or%20literal%20value%0A%20%20%20*%20%20%20%20%20literal%3A%20false%2C%20%20%20%20%20%20%20%2F%2F%20whether%20argument%20is%20a%20literal%0A%20%20%20*%20%20%20%20%20structured%3A%20false%2C%20%20%20%20%2F%2F%20whether%20the%20property%20is%20a%20path%0A%20%20%20*%20%20%20%20%20rootProperty%3A%20'prop'%2C%20%2F%2F%20the%20root%20property%20of%20the%20path%0A%20%20%20*%20%20%20%20%20wildcard%3A%20false%20%20%20%20%20%20%20%2F%2F%20whether%20the%20argument%20was%20a%20wildcard%20'.*'%20path%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20rawArg%20The%20string%20value%20of%20the%20argument%0A%20%20%20*%20%40return%20%7B!MethodArg%7D%20Argument%20metadata%20object%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20parseArg(rawArg)%7B%2F%2F%20clean%20up%20whitespace%0Avar%20arg%3DrawArg.trim()%2F%2F%20replace%20comma%20entity%20with%20comma%0A.replace(%2F%26comma%3B%2Fg%2C'%2C')%2F%2F%20repair%20extra%20escape%20sequences%3B%20note%20only%20commas%20strictly%20need%0A%2F%2F%20escaping%2C%20but%20we%20allow%20any%20other%20char%20to%20be%20escaped%20since%20its%0A%2F%2F%20likely%20users%20will%20do%20this%0A.replace(%2F%5C%5C(.)%2Fg%2C'%5C%241')%3B%2F%2F%20basic%20argument%20descriptor%0Avar%20a%3D%7Bname%3Aarg%2Cvalue%3A''%2Cliteral%3Afalse%7D%3B%2F%2F%20detect%20literal%20value%20(must%20be%20String%20or%20Number)%0Avar%20fc%3Darg%5B0%5D%3Bif(fc%3D%3D%3D'-')%7Bfc%3Darg%5B1%5D%3B%7Dif(fc%3E%3D'0'%26%26fc%3C%3D'9')%7Bfc%3D'%23'%3B%7Dswitch(fc)%7Bcase%22'%22%3Acase'%22'%3Aa.value%3Darg.slice(1%2C-1)%3Ba.literal%3Dtrue%3Bbreak%3Bcase'%23'%3Aa.value%3DNumber(arg)%3Ba.literal%3Dtrue%3Bbreak%3B%7D%2F%2F%20if%20not%20literal%2C%20look%20for%20structured%20path%0Aif(!a.literal)%7Ba.rootProperty%3DPolymer.Path.root(arg)%3B%2F%2F%20detect%20structured%20path%20(has%20dots)%0Aa.structured%3DPolymer.Path.isPath(arg)%3Bif(a.structured)%7Ba.wildcard%3Darg.slice(-2)%3D%3D'.*'%3Bif(a.wildcard)%7Ba.name%3Darg.slice(0%2C-2)%3B%7D%7D%7Dreturn%20a%3B%7D%2F%2F%20data%20api%0A%2F**%0A%20%20%20*%20Sends%20array%20splice%20notifications%20(%60.splices%60%20and%20%60.length%60)%0A%20%20%20*%0A%20%20%20*%20Note%3A%20this%20implementation%20only%20accepts%20normalized%20paths%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20to%20send%20notifications%20to%0A%20%20%20*%20%40param%20%7BArray%7D%20array%20The%20array%20the%20mutations%20occurred%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20to%20the%20array%20that%20was%20mutated%0A%20%20%20*%20%40param%20%7BArray%7D%20splices%20Array%20of%20splice%20records%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20_notifySplices(inst%2Carray%2Cpath%2Csplices)%7Bvar%20splicesPath%3Dpath%2B'.splices'%3Binst.notifyPath(splicesPath%2C%7BindexSplices%3Asplices%7D)%3Binst.notifyPath(path%2B'.length'%2Carray.length)%3B%2F%2F%20Null%20here%20to%20allow%20potentially%20large%20splice%20records%20to%20be%20GC'ed.%0Ainst.__data%5BsplicesPath%5D%3D%7BindexSplices%3Anull%7D%3B%7D%2F**%0A%20%20%20*%20Creates%20a%20splice%20record%20and%20sends%20an%20array%20splice%20notification%20for%0A%20%20%20*%20the%20described%20mutation%0A%20%20%20*%0A%20%20%20*%20Note%3A%20this%20implementation%20only%20accepts%20normalized%20paths%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20to%20send%20notifications%20to%0A%20%20%20*%20%40param%20%7BArray%7D%20array%20The%20array%20the%20mutations%20occurred%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20to%20the%20array%20that%20was%20mutated%0A%20%20%20*%20%40param%20%7Bnumber%7D%20index%20Index%20at%20which%20the%20array%20mutation%20occurred%0A%20%20%20*%20%40param%20%7Bnumber%7D%20addedCount%20Number%20of%20added%20items%0A%20%20%20*%20%40param%20%7BArray%7D%20removed%20Array%20of%20removed%20items%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20notifySplice(inst%2Carray%2Cpath%2Cindex%2CaddedCount%2Cremoved)%7B_notifySplices(inst%2Carray%2Cpath%2C%5B%7Bindex%3Aindex%2CaddedCount%3AaddedCount%2Cremoved%3Aremoved%2Cobject%3Aarray%2Ctype%3A'splice'%7D%5D)%3B%7D%2F**%0A%20%20%20*%20Returns%20an%20upper-cased%20version%20of%20the%20string.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%20String%20to%20uppercase%0A%20%20%20*%20%40return%20%7Bstring%7D%20Uppercased%20string%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20upper(name)%7Breturn%20name%5B0%5D.toUpperCase()%2Bname.substring(1)%3B%7D%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20meta-programming%20for%20Polymer's%20template%0A%20%20%20*%20binding%20and%20data%20observation%20(collectively%2C%20%22property%20effects%22)%20system.%0A%20%20%20*%0A%20%20%20*%20This%20mixin%20uses%20provides%20the%20following%20key%20static%20methods%20for%20adding%0A%20%20%20*%20property%20effects%20to%20an%20element%20class%3A%0A%20%20%20*%20-%20%60addPropertyEffect%60%0A%20%20%20*%20-%20%60createPropertyObserver%60%0A%20%20%20*%20-%20%60createMethodObserver%60%0A%20%20%20*%20-%20%60createNotifyingProperty%60%0A%20%20%20*%20-%20%60createReadOnlyProperty%60%0A%20%20%20*%20-%20%60createReflectedProperty%60%0A%20%20%20*%20-%20%60createComputedProperty%60%0A%20%20%20*%20-%20%60bindTemplate%60%0A%20%20%20*%0A%20%20%20*%20Each%20method%20creates%20one%20or%20more%20property%20accessors%2C%20along%20with%20metadata%0A%20%20%20*%20used%20by%20this%20mixin's%20implementation%20of%20%60_propertiesChanged%60%20to%20perform%0A%20%20%20*%20the%20property%20effects.%0A%20%20%20*%0A%20%20%20*%20Underscored%20versions%20of%20the%20above%20methods%20also%20exist%20on%20the%20element%0A%20%20%20*%20prototype%20for%20adding%20property%20effects%20on%20instances%20at%20runtime.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20this%20mixin%20overrides%20several%20%60PropertyAccessors%60%20methods%2C%20in%0A%20%20%20*%20many%20cases%20to%20maintain%20guarantees%20provided%20by%20the%20Polymer%201.x%20features%3B%0A%20%20%20*%20notably%20it%20changes%20property%20accessors%20to%20be%20synchronous%20by%20default%0A%20%20%20*%20whereas%20the%20default%20when%20using%20%60PropertyAccessors%60%20standalone%20is%20to%20be%0A%20%20%20*%20async%20by%20default.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.TemplateStamp%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertyAccessors%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20meta-programming%20for%20Polymer's%0A%20%20%20*%20template%20binding%20and%20data%20observation%20system.%0A%20%20%20*%2FPolymer.PropertyEffects%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_TemplateStamp%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20propertyEffectsBase%3DPolymer.TemplateStamp(Polymer.PropertyAccessors(superClass))%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40extends%20%7BpropertyEffectsBase%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20PropertyEffects%3Dfunction(_propertyEffectsBase)%7B_inherits(PropertyEffects%2C_propertyEffectsBase)%3Bfunction%20PropertyEffects()%7B_classCallCheck(this%2CPropertyEffects)%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F%2F%2F%20Used%20to%20identify%20users%20of%20this%20mixin%2C%20ala%20instanceof%0Avar%20_this%3D_possibleConstructorReturn(this%2C(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)).call(this))%3B_this.__isPropertyEffectsClient%3Dtrue%3B%2F**%20%40type%20%7Bnumber%7D%20*%2F%2F%2F%20NOTE%3A%20used%20to%20track%20re-entrant%20calls%20to%20%60_flushProperties%60%0A%2F%2F%20path%20changes%20dirty%20check%20against%20%60__dataTemp%60%20only%20during%20one%20%22turn%22%0A%2F%2F%20and%20are%20cleared%20when%20%60__dataCounter%60%20returns%20to%200.%0A_this.__dataCounter%3D0%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F_this.__dataClientsReady%3B%2F**%20%40type%20%7BArray%7D%20*%2F_this.__dataPendingClients%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__dataToNotify%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__dataLinkedPaths%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F_this.__dataHasPaths%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__dataCompoundStorage%3B%2F**%20%40type%20%7BPolymer_PropertyEffects%7D%20*%2F_this.__dataHost%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__dataTemp%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F_this.__dataClientsInitialized%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__data%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__dataPending%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__dataOld%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__computeEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__reflectEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__notifyEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__propagateEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__observeEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__readOnly%3B%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2F_this.__templateInfo%3Breturn%20_this%3B%7D_createClass(PropertyEffects%2C%5B%7Bkey%3A'_initializeProperties'%2C%2F**%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_initializeProperties()%7B_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3BhostStack.registerHost(this)%3Bthis.__dataClientsReady%3Dfalse%3Bthis.__dataPendingClients%3Dnull%3Bthis.__dataToNotify%3Dnull%3Bthis.__dataLinkedPaths%3Dnull%3Bthis.__dataHasPaths%3Dfalse%3B%2F%2F%20May%20be%20set%20on%20instance%20prior%20to%20upgrade%0Athis.__dataCompoundStorage%3Dthis.__dataCompoundStorage%7C%7Cnull%3Bthis.__dataHost%3Dthis.__dataHost%7C%7Cnull%3Bthis.__dataTemp%3D%7B%7D%3Bthis.__dataClientsInitialized%3Dfalse%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyAccessors%60%20implementation%20to%20provide%20a%0A%20%20%20%20%20%20%20*%20more%20efficient%20implementation%20of%20initializing%20properties%20from%0A%20%20%20%20%20%20%20*%20the%20prototype%20on%20the%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20initialize%20on%20the%20prototype%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProtoProperties'%2Cvalue%3Afunction%20_initializeProtoProperties(props)%7Bthis.__data%3DObject.create(props)%3Bthis.__dataPending%3DObject.create(props)%3Bthis.__dataOld%3D%7B%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyAccessors%60%20implementation%20to%20avoid%20setting%0A%20%20%20%20%20%20%20*%20%60_setProperty%60's%20%60shouldNotify%3A%20true%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20initialize%20on%20the%20instance%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeInstanceProperties'%2Cvalue%3Afunction%20_initializeInstanceProperties(props)%7Bvar%20readOnly%3Dthis%5BTYPES.READ_ONLY%5D%3Bfor(var%20prop%20in%20props)%7Bif(!readOnly%7C%7C!readOnly%5Bprop%5D)%7Bthis.__dataPending%3Dthis.__dataPending%7C%7C%7B%7D%3Bthis.__dataOld%3Dthis.__dataOld%7C%7C%7B%7D%3Bthis.__data%5Bprop%5D%3Dthis.__dataPending%5Bprop%5D%3Dprops%5Bprop%5D%3B%7D%7D%7D%2F%2F%20Prototype%20setup%20----------------------------------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60addPropertyEffect%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addPropertyEffect'%2Cvalue%3Afunction%20_addPropertyEffect(property%2Ctype%2Ceffect)%7Bthis._createPropertyAccessor(property%2Ctype%3D%3DTYPES.READ_ONLY)%3B%2F%2F%20effects%20are%20accumulated%20into%20arrays%20per%20property%20based%20on%20type%0Avar%20effects%3DensureOwnEffectMap(this%2Ctype)%5Bproperty%5D%3Bif(!effects)%7Beffects%3Dthis%5Btype%5D%5Bproperty%5D%3D%5B%5D%3B%7Deffects.push(effect)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20the%20given%20property%20effect.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20the%20effect%20was%20associated%20with%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%20to%20remove%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removePropertyEffect'%2Cvalue%3Afunction%20_removePropertyEffect(property%2Ctype%2Ceffect)%7Bvar%20effects%3DensureOwnEffectMap(this%2Ctype)%5Bproperty%5D%3Bvar%20idx%3Deffects.indexOf(effect)%3Bif(idx%3E%3D0)%7Beffects.splice(idx%2C1)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20property%20effect%0A%20%20%20%20%20%20%20*%20of%20a%20certain%20type.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasPropertyEffect'%2Cvalue%3Afunction%20_hasPropertyEffect(property%2Ctype)%7Bvar%20effects%3Dthis%5Btype%5D%3Breturn%20Boolean(effects%26%26effects%5Bproperty%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22read%20only%22%0A%20%20%20%20%20%20%20*%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasReadOnlyEffect'%2Cvalue%3Afunction%20_hasReadOnlyEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.READ_ONLY)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22notify%22%0A%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasNotifyEffect'%2Cvalue%3Afunction%20_hasNotifyEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.NOTIFY)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22reflect%20to%20attribute%22%0A%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasReflectEffect'%2Cvalue%3Afunction%20_hasReflectEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.REFLECT)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22computed%22%0A%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasComputedEffect'%2Cvalue%3Afunction%20_hasComputedEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.COMPUTE)%3B%7D%2F%2F%20Runtime%20----------------------------------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Sets%20a%20pending%20property%20or%20path.%20%20If%20the%20root%20property%20of%20the%20path%20in%0A%20%20%20%20%20%20%20*%20question%20had%20no%20accessor%2C%20the%20path%20is%20set%2C%20otherwise%20it%20is%20enqueued%0A%20%20%20%20%20%20%20*%20via%20%60_setPendingProperty%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20function%20isolates%20relatively%20expensive%20functionality%20necessary%0A%20%20%20%20%20%20%20*%20for%20the%20public%20API%20(%60set%60%2C%20%60setProperties%60%2C%20%60notifyPath%60%2C%20and%20property%0A%20%20%20%20%20%20%20*%20change%20listeners%20via%20%7B%7B...%7D%7D%20bindings)%2C%20such%20that%20it%20is%20only%20done%0A%20%20%20%20%20%20%20*%20when%20paths%20enter%20the%20system%2C%20and%20not%20at%20every%20propagation%20step.%20%20It%0A%20%20%20%20%20%20%20*%20also%20sets%20a%20%60__dataHasPaths%60%20flag%20on%20the%20instance%20which%20is%20used%20to%0A%20%20%20%20%20%20%20*%20fast-path%20slower%20path-matching%20code%20in%20the%20property%20effects%20host%20paths.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60path%60%20can%20be%20a%20path%20string%20or%20array%20of%20path%20parts%20as%20accepted%20by%20the%0A%20%20%20%20%20%20%20*%20public%20API.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cnumber%7Cstring%3E%7D%20path%20Path%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20shouldNotify%20Set%20to%20true%20if%20this%20change%20should%0A%20%20%20%20%20%20%20*%20%20cause%20a%20property%20notification%20event%20dispatch%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20isPathNotification%20If%20the%20path%20being%20set%20is%20a%20path%0A%20%20%20%20%20%20%20*%20%20%20notification%20of%20an%20already%20changed%20value%2C%20as%20opposed%20to%20a%20request%0A%20%20%20%20%20%20%20*%20%20%20to%20set%20and%20notify%20the%20change.%20%20In%20the%20latter%20%60false%60%20case%2C%20a%20dirty%0A%20%20%20%20%20%20%20*%20%20%20check%20is%20performed%20and%20then%20the%20value%20is%20set%20to%20the%20path%20before%0A%20%20%20%20%20%20%20*%20%20%20enqueuing%20the%20pending%20property%20change.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%2Fpath%20was%20enqueued%20in%0A%20%20%20%20%20%20%20*%20%20%20the%20pending%20changes%20bag.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setPendingPropertyOrPath'%2Cvalue%3Afunction%20_setPendingPropertyOrPath(path%2Cvalue%2CshouldNotify%2CisPathNotification)%7Bif(isPathNotification%7C%7CPolymer.Path.root(Array.isArray(path)%3Fpath%5B0%5D%3Apath)!%3D%3Dpath)%7B%2F%2F%20Dirty%20check%20changes%20being%20set%20to%20a%20path%20against%20the%20actual%20object%2C%0A%2F%2F%20since%20this%20is%20the%20entry%20point%20for%20paths%20into%20the%20system%3B%20from%20here%0A%2F%2F%20the%20only%20dirty%20checks%20are%20against%20the%20%60__dataTemp%60%20cache%20to%20prevent%0A%2F%2F%20duplicate%20work%20in%20the%20same%20turn%20only.%20Note%2C%20if%20this%20was%20a%20notification%0A%2F%2F%20of%20a%20change%20already%20set%20to%20a%20path%20(isPathNotification%3A%20true)%2C%0A%2F%2F%20we%20always%20let%20the%20change%20through%20and%20skip%20the%20%60set%60%20since%20it%20was%0A%2F%2F%20already%20dirty%20checked%20at%20the%20point%20of%20entry%20and%20the%20underlying%0A%2F%2F%20object%20has%20already%20been%20updated%0Aif(!isPathNotification)%7Bvar%20old%3DPolymer.Path.get(this%2Cpath)%3Bpath%3D%2F**%20%40type%20%7Bstring%7D%20*%2FPolymer.Path.set(this%2Cpath%2Cvalue)%3B%2F%2F%20Use%20property-accessor's%20simpler%20dirty%20check%0Aif(!path%7C%7C!_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_shouldPropertyChange'%2Cthis).call(this%2Cpath%2Cvalue%2Cold))%7Breturn%20false%3B%7D%7Dthis.__dataHasPaths%3Dtrue%3Bif(this._setPendingProperty(%2F**%40type%7Bstring%7D*%2Fpath%2Cvalue%2CshouldNotify))%7BcomputeLinkedPaths(this%2Cpath%2Cvalue)%3Breturn%20true%3B%7D%7Delse%7Bif(this.__dataHasAccessor%26%26this.__dataHasAccessor%5Bpath%5D)%7Breturn%20this._setPendingProperty(%2F**%40type%7Bstring%7D*%2Fpath%2Cvalue%2CshouldNotify)%3B%7Delse%7Bthis%5Bpath%5D%3Dvalue%3B%7D%7Dreturn%20false%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Applies%20a%20value%20to%20a%20non-Polymer%20element%2Fnode's%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20implementation%20makes%20a%20best-effort%20at%20binding%20interop%3A%0A%20%20%20%20%20%20%20*%20Some%20native%20element%20properties%20have%20side-effects%20when%0A%20%20%20%20%20%20%20*%20re-setting%20the%20same%20value%20(e.g.%20setting%20%60%3Cinput%3E.value%60%20resets%20the%0A%20%20%20%20%20%20%20*%20cursor%20position)%2C%20so%20we%20do%20a%20dirty-check%20before%20setting%20the%20value.%0A%20%20%20%20%20%20%20*%20However%2C%20for%20better%20interop%20with%20non-Polymer%20custom%20elements%20that%0A%20%20%20%20%20%20%20*%20accept%20objects%2C%20we%20explicitly%20re-set%20object%20changes%20coming%20from%20the%0A%20%20%20%20%20%20%20*%20Polymer%20world%20(which%20may%20include%20deep%20object%20changes%20without%20the%0A%20%20%20%20%20%20%20*%20top%20reference%20changing)%2C%20erring%20on%20the%20side%20of%20providing%20more%0A%20%20%20%20%20%20%20*%20information.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20method%20to%20provide%20alternate%20approaches.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20The%20node%20to%20set%20a%20property%20on%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20The%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20to%20set%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setUnmanagedPropertyToNode'%2Cvalue%3Afunction%20_setUnmanagedPropertyToNode(node%2Cprop%2Cvalue)%7B%2F%2F%20It%20is%20a%20judgment%20call%20that%20resetting%20primitives%20is%0A%2F%2F%20%22bad%22%20and%20resettings%20objects%20is%20also%20%22good%22%3B%20alternatively%20we%20could%0A%2F%2F%20implement%20a%20whitelist%20of%20tag%20%26%20property%20values%20that%20should%20never%0A%2F%2F%20be%20reset%20(e.g.%20%3Cinput%3E.value%20%26%26%20%3Cselect%3E.value)%0Aif(value!%3D%3Dnode%5Bprop%5D%7C%7C(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%3D%3D'object')%7Bnode%5Bprop%5D%3Dvalue%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20%60PropertiesChanged%60%20implementation%20to%20introduce%20special%0A%20%20%20%20%20%20%20*%20dirty%20check%20logic%20depending%20on%20the%20property%20%26%20value%20being%20set%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%201.%20Any%20value%20set%20to%20a%20path%20(e.g.%20'obj.prop'%3A%2042%20or%20'obj.prop'%3A%20%7B...%7D)%0A%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__dataTemp%60%2C%20dirty%20checked%20against%20%60__dataTemp%60%0A%20%20%20%20%20%20%20*%202.%20Object%20set%20to%20simple%20property%20(e.g.%20'prop'%3A%20%7B...%7D)%0A%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__dataTemp%60%20and%20%60__data%60%2C%20dirty%20checked%20against%0A%20%20%20%20%20%20%20*%20%20%20%20%60__dataTemp%60%20by%20default%20implementation%20of%20%60_shouldPropertyChange%60%0A%20%20%20%20%20%20%20*%203.%20Primitive%20value%20set%20to%20simple%20property%20(e.g.%20'prop'%3A%2042)%0A%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__data%60%2C%20dirty%20checked%20against%20%60__data%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20dirty-check%20is%20important%20to%20prevent%20cycles%20due%20to%20two-way%0A%20%20%20%20%20%20%20*%20notification%2C%20but%20paths%20and%20objects%20are%20only%20dirty%20checked%20against%20any%0A%20%20%20%20%20%20%20*%20previous%20value%20set%20during%20this%20turn%20via%20a%20%22temporary%20cache%22%20that%20is%0A%20%20%20%20%20%20%20*%20cleared%20when%20the%20last%20%60_propertiesChanged%60%20exits.%20This%20is%20so%3A%0A%20%20%20%20%20%20%20*%20a.%20any%20cached%20array%20paths%20(e.g.%20'array.3.prop')%20may%20be%20invalidated%0A%20%20%20%20%20%20%20*%20%20%20%20due%20to%20array%20mutations%20like%20shift%2Funshift%2Fsplice%3B%20this%20is%20fine%0A%20%20%20%20%20%20%20*%20%20%20%20since%20path%20changes%20are%20dirty-checked%20at%20user%20entry%20points%20like%20%60set%60%0A%20%20%20%20%20%20%20*%20b.%20dirty-checking%20for%20objects%20only%20lasts%20one%20turn%20to%20allow%20the%20user%0A%20%20%20%20%20%20%20*%20%20%20%20to%20mutate%20the%20object%20in-place%20and%20re-set%20it%20with%20the%20same%20identity%0A%20%20%20%20%20%20%20*%20%20%20%20and%20have%20all%20sub-properties%20re-propagated%20in%20a%20subsequent%20turn.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20temp%20cache%20is%20not%20necessarily%20sufficient%20to%20prevent%20invalid%20array%0A%20%20%20%20%20%20%20*%20paths%2C%20since%20a%20splice%20can%20happen%20during%20the%20same%20turn%20(with%20pathological%0A%20%20%20%20%20%20%20*%20user%20code)%3B%20we%20could%20introduce%20a%20%22fixup%22%20for%20temporarily%20cached%20array%0A%20%20%20%20%20%20%20*%20paths%20if%20needed%3A%20https%3A%2F%2Fgithub.com%2FPolymer%2Fpolymer%2Fissues%2F4227%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20shouldNotify%20True%20if%20property%20should%20fire%20notification%0A%20%20%20%20%20%20%20*%20%20%20event%20(applies%20only%20for%20%60notify%3A%20true%60%20properties)%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%20changed%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setPendingProperty'%2Cvalue%3Afunction%20_setPendingProperty(property%2Cvalue%2CshouldNotify)%7Bvar%20isPath%3Dthis.__dataHasPaths%26%26Polymer.Path.isPath(property)%3Bvar%20prevProps%3DisPath%3Fthis.__dataTemp%3Athis.__data%3Bif(this._shouldPropertyChange(property%2Cvalue%2CprevProps%5Bproperty%5D))%7Bif(!this.__dataPending)%7Bthis.__dataPending%3D%7B%7D%3Bthis.__dataOld%3D%7B%7D%3B%7D%2F%2F%20Ensure%20old%20is%20captured%20from%20the%20last%20turn%0Aif(!(property%20in%20this.__dataOld))%7Bthis.__dataOld%5Bproperty%5D%3Dthis.__data%5Bproperty%5D%3B%7D%2F%2F%20Paths%20are%20stored%20in%20temporary%20cache%20(cleared%20at%20end%20of%20turn)%2C%0A%2F%2F%20which%20is%20used%20for%20dirty-checking%2C%20all%20others%20stored%20in%20__data%0Aif(isPath)%7Bthis.__dataTemp%5Bproperty%5D%3Dvalue%3B%7Delse%7Bthis.__data%5Bproperty%5D%3Dvalue%3B%7D%2F%2F%20All%20changes%20go%20into%20pending%20property%20bag%2C%20passed%20to%20_propertiesChanged%0Athis.__dataPending%5Bproperty%5D%3Dvalue%3B%2F%2F%20Track%20properties%20that%20should%20notify%20separately%0Aif(isPath%7C%7Cthis%5BTYPES.NOTIFY%5D%26%26this%5BTYPES.NOTIFY%5D%5Bproperty%5D)%7Bthis.__dataToNotify%3Dthis.__dataToNotify%7C%7C%7B%7D%3Bthis.__dataToNotify%5Bproperty%5D%3DshouldNotify%3B%7Dreturn%20true%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20base%20implementation%20to%20ensure%20all%20accessors%20set%20%60shouldNotify%60%0A%20%20%20%20%20%20%20*%20to%20true%2C%20for%20per-property%20notification%20tracking.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setProperty'%2Cvalue%3Afunction%20_setProperty(property%2Cvalue)%7Bif(this._setPendingProperty(property%2Cvalue%2Ctrue))%7Bthis._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessor%60's%20default%20async%20queuing%20of%0A%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%3A%20if%20%60__dataReady%60%20is%20false%20(has%20not%20yet%20been%0A%20%20%20%20%20%20%20*%20manually%20flushed)%2C%20the%20function%20no-ops%3B%20otherwise%20flushes%0A%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20synchronously.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_invalidateProperties'%2Cvalue%3Afunction%20_invalidateProperties()%7Bif(this.__dataReady)%7Bthis._flushProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20the%20given%20client%20on%20a%20list%20of%20pending%20clients%2C%20whose%0A%20%20%20%20%20%20%20*%20pending%20property%20changes%20can%20later%20be%20flushed%20via%20a%20call%20to%0A%20%20%20%20%20%20%20*%20%60_flushClients%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20client%20PropertyEffects%20client%20to%20enqueue%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_enqueueClient'%2Cvalue%3Afunction%20_enqueueClient(client)%7Bthis.__dataPendingClients%3Dthis.__dataPendingClients%7C%7C%5B%5D%3Bif(client!%3D%3Dthis)%7Bthis.__dataPendingClients.push(client)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20superclass%20implementation.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_flushProperties'%2Cvalue%3Afunction%20_flushProperties()%7Bthis.__dataCounter%2B%2B%3B_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_flushProperties'%2Cthis).call(this)%3Bthis.__dataCounter--%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Flushes%20any%20clients%20previously%20enqueued%20via%20%60_enqueueClient%60%2C%20causing%0A%20%20%20%20%20%20%20*%20their%20%60_flushProperties%60%20method%20to%20run.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_flushClients'%2Cvalue%3Afunction%20_flushClients()%7Bif(!this.__dataClientsReady)%7Bthis.__dataClientsReady%3Dtrue%3Bthis._readyClients()%3B%2F%2F%20Override%20point%20where%20accessors%20are%20turned%20on%3B%20importantly%2C%0A%2F%2F%20this%20is%20after%20clients%20have%20fully%20readied%2C%20providing%20a%20guarantee%0A%2F%2F%20that%20any%20property%20effects%20occur%20only%20after%20all%20clients%20are%20ready.%0Athis.__dataReady%3Dtrue%3B%7Delse%7Bthis.__enableOrFlushClients()%3B%7D%7D%2F%2F%20NOTE%3A%20We%20ensure%20clients%20either%20enable%20or%20flush%20as%20appropriate.%20This%0A%2F%2F%20handles%20two%20corner%20cases%3A%0A%2F%2F%20(1)%20clients%20flush%20properly%20when%20connected%2Fenabled%20before%20the%20host%0A%2F%2F%20enables%3B%20e.g.%0A%2F%2F%20%20%20(a)%20Templatize%20stamps%20with%20no%20properties%20and%20does%20not%20flush%20and%0A%2F%2F%20%20%20(b)%20the%20instance%20is%20inserted%20into%20dom%20and%0A%2F%2F%20%20%20(c)%20then%20the%20instance%20flushes.%0A%2F%2F%20(2)%20clients%20enable%20properly%20when%20not%20connected%2Fenabled%20when%20the%20host%0A%2F%2F%20flushes%3B%20e.g.%0A%2F%2F%20%20%20(a)%20a%20template%20is%20runtime%20stamped%20and%20not%20yet%20connected%2Fenabled%0A%2F%2F%20%20%20(b)%20a%20host%20sets%20a%20property%2C%20causing%20stamped%20dom%20to%20flush%0A%2F%2F%20%20%20(c)%20the%20stamped%20dom%20enables.%0A%7D%2C%7Bkey%3A'__enableOrFlushClients'%2Cvalue%3Afunction%20__enableOrFlushClients()%7Bvar%20clients%3Dthis.__dataPendingClients%3Bif(clients)%7Bthis.__dataPendingClients%3Dnull%3Bfor(var%20i%3D0%3Bi%3Cclients.length%3Bi%2B%2B)%7Bvar%20client%3Dclients%5Bi%5D%3Bif(!client.__dataEnabled)%7Bclient._enableProperties()%3B%7Delse%20if(client.__dataPending)%7Bclient._flushProperties()%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Perform%20any%20initial%20setup%20on%20client%20dom.%20Called%20before%20the%20first%0A%20%20%20%20%20%20%20*%20%60_flushProperties%60%20call%20on%20client%20dom%20and%20before%20any%20element%0A%20%20%20%20%20%20%20*%20observers%20are%20called.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_readyClients'%2Cvalue%3Afunction%20_readyClients()%7Bthis.__enableOrFlushClients()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Sets%20a%20bag%20of%20property%20changes%20to%20this%20instance%2C%20and%0A%20%20%20%20%20%20%20*%20synchronously%20processes%20all%20effects%20of%20the%20properties%20as%20a%20batch.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Property%20names%20must%20be%20simple%20properties%2C%20not%20paths.%20%20Batched%0A%20%20%20%20%20%20%20*%20path%20propagation%20is%20not%20supported.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20one%20or%20more%20key-value%20pairs%20whose%20key%20is%0A%20%20%20%20%20%20%20*%20%20%20a%20property%20and%20value%20is%20the%20new%20value%20to%20set%20for%20that%20property.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20setReadOnly%20When%20true%2C%20any%20private%20values%20set%20in%0A%20%20%20%20%20%20%20*%20%20%20%60props%60%20will%20be%20set.%20By%20default%2C%20%60setProperties%60%20will%20not%20set%0A%20%20%20%20%20%20%20*%20%20%20%60readOnly%3A%20true%60%20root%20properties.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'setProperties'%2Cvalue%3Afunction%20setProperties(props%2CsetReadOnly)%7Bfor(var%20path%20in%20props)%7Bif(setReadOnly%7C%7C!this%5BTYPES.READ_ONLY%5D%7C%7C!this%5BTYPES.READ_ONLY%5D%5Bpath%5D)%7B%2F%2FTODO(kschaaf)%3A%20explicitly%20disallow%20paths%20in%20setProperty%3F%0A%2F%2F%20wildcard%20observers%20currently%20only%20pass%20the%20first%20changed%20path%0A%2F%2F%20in%20the%20%60info%60%20object%2C%20and%20you%20could%20do%20some%20odd%20things%20batching%0A%2F%2F%20paths%2C%20e.g.%20%7B'foo.bar'%3A%20%7B...%7D%2C%20'foo'%3A%20null%7D%0Athis._setPendingPropertyOrPath(path%2Cprops%5Bpath%5D%2Ctrue)%3B%7D%7Dthis._invalidateProperties()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessors%60%20so%20that%20property%20accessor%0A%20%20%20%20%20%20%20*%20side%20effects%20are%20not%20enabled%20until%20after%20client%20dom%20is%20fully%20ready.%0A%20%20%20%20%20%20%20*%20Also%20calls%20%60_flushClients%60%20callback%20to%20ensure%20client%20dom%20is%20enabled%0A%20%20%20%20%20%20%20*%20that%20was%20not%20enabled%20as%20a%20result%20of%20flushing%20properties.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7B%2F%2F%20It%20is%20important%20that%20%60super.ready()%60%20is%20not%20called%20here%20as%20it%0A%2F%2F%20immediately%20turns%20on%20accessors.%20Instead%2C%20we%20wait%20until%20%60readyClients%60%0A%2F%2F%20to%20enable%20accessors%20to%20provide%20a%20guarantee%20that%20clients%20are%20ready%0A%2F%2F%20before%20processing%20any%20accessors%20side%20effects.%0Athis._flushProperties()%3B%2F%2F%20If%20no%20data%20was%20pending%2C%20%60_flushProperties%60%20will%20not%20%60flushClients%60%0A%2F%2F%20so%20ensure%20this%20is%20done.%0Aif(!this.__dataClientsReady)%7Bthis._flushClients()%3B%7D%2F%2F%20Before%20ready%2C%20client%20notifications%20do%20not%20trigger%20_flushProperties.%0A%2F%2F%20Therefore%20a%20flush%20is%20necessary%20here%20if%20data%20has%20been%20set.%0Aif(this.__dataPending)%7Bthis._flushProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Implements%20%60PropertyAccessors%60's%20properties%20changed%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Runs%20each%20class%20of%20effects%20for%20the%20batch%20of%20changed%20properties%20in%0A%20%20%20%20%20%20%20*%20a%20specific%20order%20(compute%2C%20propagate%2C%20reflect%2C%20observe%2C%20notify).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propertiesChanged'%2Cvalue%3Afunction%20_propertiesChanged(currentProps%2CchangedProps%2ColdProps)%7B%2F%2F%20----------------------------%0A%2F%2F%20let%20c%20%3D%20Object.getOwnPropertyNames(changedProps%20%7C%7C%20%7B%7D)%3B%0A%2F%2F%20window.debug%20%26%26%20console.group(this.localName%20%2B%20'%23'%20%2B%20this.id%20%2B%20'%3A%20'%20%2B%20c)%3B%0A%2F%2F%20if%20(window.debug)%20%7B%20debugger%3B%20%7D%0A%2F%2F%20----------------------------%0Avar%20hasPaths%3Dthis.__dataHasPaths%3Bthis.__dataHasPaths%3Dfalse%3B%2F%2F%20Compute%20properties%0ArunComputedEffects(this%2CchangedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Clear%20notify%20properties%20prior%20to%20possible%20reentry%20(propagate%2C%20observe)%2C%0A%2F%2F%20but%20after%20computing%20effects%20have%20a%20chance%20to%20add%20to%20them%0Avar%20notifyProps%3Dthis.__dataToNotify%3Bthis.__dataToNotify%3Dnull%3B%2F%2F%20Propagate%20properties%20to%20clients%0Athis._propagatePropertyChanges(changedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Flush%20clients%0Athis._flushClients()%3B%2F%2F%20Reflect%20properties%0ArunEffects(this%2Cthis%5BTYPES.REFLECT%5D%2CchangedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Observe%20properties%0ArunEffects(this%2Cthis%5BTYPES.OBSERVE%5D%2CchangedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Notify%20properties%20to%20host%0Aif(notifyProps)%7BrunNotifyEffects(this%2CnotifyProps%2CchangedProps%2ColdProps%2ChasPaths)%3B%7D%2F%2F%20Clear%20temporary%20cache%20at%20end%20of%20turn%0Aif(this.__dataCounter%3D%3D1)%7Bthis.__dataTemp%3D%7B%7D%3B%7D%2F%2F%20----------------------------%0A%2F%2F%20window.debug%20%26%26%20console.groupEnd(this.localName%20%2B%20'%23'%20%2B%20this.id%20%2B%20'%3A%20'%20%2B%20c)%3B%0A%2F%2F%20----------------------------%0A%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20to%20propagate%20any%20property%20changes%20to%20stamped%20template%20nodes%0A%20%20%20%20%20%20%20*%20managed%20by%20this%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20changedProps%20Bag%20of%20changed%20properties%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propagatePropertyChanges'%2Cvalue%3Afunction%20_propagatePropertyChanges(changedProps%2ColdProps%2ChasPaths)%7Bif(this%5BTYPES.PROPAGATE%5D)%7BrunEffects(this%2Cthis%5BTYPES.PROPAGATE%5D%2CchangedProps%2ColdProps%2ChasPaths)%3B%7Dvar%20templateInfo%3Dthis.__templateInfo%3Bwhile(templateInfo)%7BrunEffects(this%2CtemplateInfo.propertyEffects%2CchangedProps%2ColdProps%2ChasPaths%2CtemplateInfo.nodeList)%3BtemplateInfo%3DtemplateInfo.nextTemplateInfo%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Aliases%20one%20data%20path%20as%20another%2C%20such%20that%20path%20notifications%20from%20one%0A%20%20%20%20%20%20%20*%20are%20routed%20to%20the%20other.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20to%20Target%20path%20to%20link.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20from%20Source%20path%20to%20link.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'linkPaths'%2Cvalue%3Afunction%20linkPaths(to%2Cfrom)%7Bto%3DPolymer.Path.normalize(to)%3Bfrom%3DPolymer.Path.normalize(from)%3Bthis.__dataLinkedPaths%3Dthis.__dataLinkedPaths%7C%7C%7B%7D%3Bthis.__dataLinkedPaths%5Bto%5D%3Dfrom%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20a%20data%20path%20alias%20previously%20established%20with%20%60_linkPaths%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20the%20path%20to%20unlink%20should%20be%20the%20target%20(%60to%60)%20used%20when%0A%20%20%20%20%20%20%20*%20linking%20the%20paths.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Target%20path%20to%20unlink.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unlinkPaths'%2Cvalue%3Afunction%20unlinkPaths(path)%7Bpath%3DPolymer.Path.normalize(path)%3Bif(this.__dataLinkedPaths)%7Bdelete%20this.__dataLinkedPaths%5Bpath%5D%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Notify%20that%20an%20array%20has%20changed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.items%20%3D%20%5B%20%7Bname%3A%20'Jim'%7D%2C%20%7Bname%3A%20'Todd'%7D%2C%20%7Bname%3A%20'Bill'%7D%20%5D%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20...%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.items.splice(1%2C%201%2C%20%7Bname%3A%20'Sam'%7D)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.items.push(%7Bname%3A%20'Bob'%7D)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.notifySplices('items'%2C%20%5B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%20index%3A%201%2C%20removed%3A%20%5B%7Bname%3A%20'Todd'%7D%5D%2C%20addedCount%3A%201%2C%20object%3A%20this.items%2C%20type%3A%20'splice'%20%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%20index%3A%203%2C%20removed%3A%20%5B%5D%2C%20addedCount%3A%201%2C%20object%3A%20this.items%2C%20type%3A%20'splice'%7D%0A%20%20%20%20%20%20%20*%20%20%20%20%20%5D)%3B%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20that%20should%20be%20notified.%0A%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20splices%20Array%20of%20splice%20records%20indicating%20ordered%0A%20%20%20%20%20%20%20*%20%20%20changes%20that%20occurred%20to%20the%20array.%20Each%20record%20should%20have%20the%0A%20%20%20%20%20%20%20*%20%20%20following%20fields%3A%0A%20%20%20%20%20%20%20*%20%20%20%20*%20index%3A%20index%20at%20which%20the%20change%20occurred%0A%20%20%20%20%20%20%20*%20%20%20%20*%20removed%3A%20array%20of%20items%20that%20were%20removed%20from%20this%20index%0A%20%20%20%20%20%20%20*%20%20%20%20*%20addedCount%3A%20number%20of%20new%20items%20added%20at%20this%20index%0A%20%20%20%20%20%20%20*%20%20%20%20*%20object%3A%20a%20reference%20to%20the%20array%20in%20question%0A%20%20%20%20%20%20%20*%20%20%20%20*%20type%3A%20the%20string%20literal%20'splice'%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20Note%20that%20splice%20records%20_must_%20be%20normalized%20such%20that%20they%20are%0A%20%20%20%20%20%20%20*%20%20%20reported%20in%20index%20order%20(raw%20results%20from%20%60Object.observe%60%20are%20not%0A%20%20%20%20%20%20%20*%20%20%20ordered%20and%20must%20be%20normalized%2Fmerged%20before%20notifying).%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'notifySplices'%2Cvalue%3Afunction%20notifySplices(path%2Csplices)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3B_notifySplices(this%2Carray%2Cinfo.path%2Csplices)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20reading%20a%20value%20from%20a%20path.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20if%20any%20part%20in%20the%20path%20is%20undefined%2C%20this%20method%20returns%0A%20%20%20%20%20%20%20*%20%60undefined%60%20(this%20method%20does%20not%20throw%20when%20dereferencing%20undefined%0A%20%20%20%20%20%20%20*%20paths).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B(string%7C!Array%3C(string%7Cnumber)%3E)%7D%20path%20Path%20to%20the%20value%0A%20%20%20%20%20%20%20*%20%20%20to%20read.%20%20The%20path%20may%20be%20specified%20as%20a%20string%20(e.g.%20%60foo.bar.baz%60)%0A%20%20%20%20%20%20%20*%20%20%20or%20an%20array%20of%20path%20parts%20(e.g.%20%60%5B'foo.bar'%2C%20'baz'%5D%60).%20%20Note%20that%0A%20%20%20%20%20%20%20*%20%20%20bracketed%20expressions%20are%20not%20supported%3B%20string-based%20path%20parts%0A%20%20%20%20%20%20%20*%20%20%20*must*%20be%20separated%20by%20dots.%20%20Note%20that%20when%20dereferencing%20array%0A%20%20%20%20%20%20%20*%20%20%20indices%2C%20the%20index%20may%20be%20used%20as%20a%20dotted%20part%20directly%0A%20%20%20%20%20%20%20*%20%20%20(e.g.%20%60users.12.name%60%20or%20%60%5B'users'%2C%2012%2C%20'name'%5D%60).%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20root%20Root%20object%20from%20which%20the%20path%20is%20evaluated.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20at%20the%20path%2C%20or%20%60undefined%60%20if%20any%20part%20of%20the%20path%0A%20%20%20%20%20%20%20*%20%20%20is%20undefined.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'get'%2Cvalue%3Afunction%20get(path%2Croot)%7Breturn%20Polymer.Path.get(root%7C%7Cthis%2Cpath)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20setting%20a%20value%20to%20a%20path%20and%20notifying%20any%0A%20%20%20%20%20%20%20*%20elements%20bound%20to%20the%20same%20path.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20if%20any%20part%20in%20the%20path%20except%20for%20the%20last%20is%20undefined%2C%0A%20%20%20%20%20%20%20*%20this%20method%20does%20nothing%20(this%20method%20does%20not%20throw%20when%0A%20%20%20%20%20%20%20*%20dereferencing%20undefined%20paths).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B(string%7C!Array%3C(string%7Cnumber)%3E)%7D%20path%20Path%20to%20the%20value%0A%20%20%20%20%20%20%20*%20%20%20to%20write.%20%20The%20path%20may%20be%20specified%20as%20a%20string%20(e.g.%20%60'foo.bar.baz'%60)%0A%20%20%20%20%20%20%20*%20%20%20or%20an%20array%20of%20path%20parts%20(e.g.%20%60%5B'foo.bar'%2C%20'baz'%5D%60).%20%20Note%20that%0A%20%20%20%20%20%20%20*%20%20%20bracketed%20expressions%20are%20not%20supported%3B%20string-based%20path%20parts%0A%20%20%20%20%20%20%20*%20%20%20*must*%20be%20separated%20by%20dots.%20%20Note%20that%20when%20dereferencing%20array%0A%20%20%20%20%20%20%20*%20%20%20indices%2C%20the%20index%20may%20be%20used%20as%20a%20dotted%20part%20directly%0A%20%20%20%20%20%20%20*%20%20%20(e.g.%20%60'users.12.name'%60%20or%20%60%5B'users'%2C%2012%2C%20'name'%5D%60).%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20at%20the%20specified%20path.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20root%20Root%20object%20from%20which%20the%20path%20is%20evaluated.%0A%20%20%20%20%20%20%20*%20%20%20When%20specified%2C%20no%20notification%20will%20occur.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'set'%2Cvalue%3Afunction%20set(path%2Cvalue%2Croot)%7Bif(root)%7BPolymer.Path.set(root%2Cpath%2Cvalue)%3B%7Delse%7Bif(!this%5BTYPES.READ_ONLY%5D%7C%7C!this%5BTYPES.READ_ONLY%5D%5B%2F**%20%40type%20%7Bstring%7D%20*%2Fpath%5D)%7Bif(this._setPendingPropertyOrPath(path%2Cvalue%2Ctrue))%7Bthis._invalidateProperties()%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20items%20onto%20the%20end%20of%20the%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.push%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20push%20onto%20array%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20New%20length%20of%20the%20array.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'push'%2Cvalue%3Afunction%20push(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bvar%20len%3Darray.length%3Bfor(var%20_len%3Darguments.length%2Citems%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bitems%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dvar%20ret%3Darray.push.apply(array%2Citems)%3Bif(items.length)%7BnotifySplice(this%2Carray%2Cinfo.path%2Clen%2Citems.length%2C%5B%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20the%20end%20of%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.pop%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20that%20was%20removed.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'pop'%2Cvalue%3Afunction%20pop(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bvar%20hadLength%3DBoolean(array.length)%3Bvar%20ret%3Darray.pop()%3Bif(hadLength)%7BnotifySplice(this%2Carray%2Cinfo.path%2Carray.length%2C0%2C%5Bret%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Starting%20from%20the%20start%20index%20specified%2C%20removes%200%20or%20more%20items%0A%20%20%20%20%20%20%20*%20from%20the%20array%20and%20inserts%200%20or%20more%20new%20items%20in%20their%20place.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.splice%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20start%20Index%20from%20which%20to%20start%20removing%2Finserting.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20deleteCount%20Number%20of%20items%20to%20remove.%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20insert%20into%20array.%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20of%20removed%20items.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'splice'%2Cvalue%3Afunction%20splice(path%2Cstart%2CdeleteCount)%7Bfor(var%20_len2%3Darguments.length%2Citems%3DArray(_len2%3E3%3F_len2-3%3A0)%2C_key2%3D3%3B_key2%3C_len2%3B_key2%2B%2B)%7Bitems%5B_key2-3%5D%3Darguments%5B_key2%5D%3B%7Dvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3B%2F%2F%20Normalize%20fancy%20native%20splice%20handling%20of%20crazy%20start%20values%0Aif(start%3C0)%7Bstart%3Darray.length-Math.floor(-start)%3B%7Delse%20if(start)%7Bstart%3DMath.floor(start)%3B%7D%2F%2F%20array.splice%20does%20different%20things%20based%20on%20the%20number%20of%20arguments%0A%2F%2F%20you%20pass%20in.%20Therefore%2C%20array.splice(0)%20and%20array.splice(0%2C%20undefined)%0A%2F%2F%20do%20different%20things.%20In%20the%20former%2C%20the%20whole%20array%20is%20cleared.%20In%20the%0A%2F%2F%20latter%2C%20no%20items%20are%20removed.%0A%2F%2F%20This%20means%20that%20we%20need%20to%20detect%20whether%201.%20one%20of%20the%20arguments%0A%2F%2F%20is%20actually%20passed%20in%20and%20then%202.%20determine%20how%20many%20arguments%0A%2F%2F%20we%20should%20pass%20on%20to%20the%20native%20array.splice%0A%2F%2F%0Avar%20ret%3Dvoid%200%3B%2F%2F%20Omit%20any%20additional%20arguments%20if%20they%20were%20not%20passed%20in%0Aif(arguments.length%3D%3D%3D2)%7Bret%3Darray.splice(start)%3B%2F%2F%20Either%20start%20was%20undefined%20and%20the%20others%20were%20defined%2C%20but%20in%20this%0A%2F%2F%20case%20we%20can%20safely%20pass%20on%20all%20arguments%0A%2F%2F%0A%2F%2F%20Note%3A%20this%20includes%20the%20case%20where%20none%20of%20the%20arguments%20were%20passed%20in%2C%0A%2F%2F%20e.g.%20this.splice('array').%20However%2C%20if%20both%20start%20and%20deleteCount%0A%2F%2F%20are%20undefined%2C%20array.splice%20will%20not%20modify%20the%20array%20(as%20expected)%0A%7Delse%7Bret%3Darray.splice.apply(array%2C%5Bstart%2CdeleteCount%5D.concat(items))%3B%7D%2F%2F%20At%20the%20end%2C%20check%20whether%20any%20items%20were%20passed%20in%20(e.g.%20insertions)%0A%2F%2F%20or%20if%20the%20return%20array%20contains%20items%20(e.g.%20deletions).%0A%2F%2F%20Only%20notify%20if%20items%20were%20added%20or%20deleted.%0Aif(items.length%7C%7Cret.length)%7BnotifySplice(this%2Carray%2Cinfo.path%2Cstart%2Citems.length%2Cret)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20the%20beginning%20of%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.pop%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20that%20was%20removed.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'shift'%2Cvalue%3Afunction%20shift(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bvar%20hadLength%3DBoolean(array.length)%3Bvar%20ret%3Darray.shift()%3Bif(hadLength)%7BnotifySplice(this%2Carray%2Cinfo.path%2C0%2C0%2C%5Bret%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20items%20onto%20the%20beginning%20of%20the%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.push%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20insert%20info%20array%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20New%20length%20of%20the%20array.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unshift'%2Cvalue%3Afunction%20unshift(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bfor(var%20_len3%3Darguments.length%2Citems%3DArray(_len3%3E1%3F_len3-1%3A0)%2C_key3%3D1%3B_key3%3C_len3%3B_key3%2B%2B)%7Bitems%5B_key3-1%5D%3Darguments%5B_key3%5D%3B%7Dvar%20ret%3Darray.unshift.apply(array%2Citems)%3Bif(items.length)%7BnotifySplice(this%2Carray%2Cinfo.path%2C0%2Citems.length%2C%5B%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Notify%20that%20a%20path%20has%20changed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.item.user.name%20%3D%20'Bob'%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.notifyPath('item.user.name')%3B%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20that%20should%20be%20notified.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Value%20at%20the%20path%20(optional).%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'notifyPath'%2Cvalue%3Afunction%20notifyPath(path%2Cvalue)%7B%2F**%20%40type%20%7Bstring%7D%20*%2Fvar%20propPath%3Dvoid%200%3Bif(arguments.length%3D%3D1)%7B%2F%2F%20Get%20value%20if%20not%20supplied%0Avar%20info%3D%7Bpath%3A''%7D%3Bvalue%3DPolymer.Path.get(this%2Cpath%2Cinfo)%3BpropPath%3Dinfo.path%3B%7Delse%20if(Array.isArray(path))%7B%2F%2F%20Normalize%20path%20if%20needed%0ApropPath%3DPolymer.Path.normalize(path)%3B%7Delse%7BpropPath%3D%2F**%20%40type%7Bstring%7D%20*%2Fpath%3B%7Dif(this._setPendingPropertyOrPath(propPath%2Cvalue%2Ctrue%2Ctrue))%7Bthis._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createReadOnlyProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20protectedSetter%20Creates%20a%20custom%20protected%20setter%0A%20%20%20%20%20%20%20*%20%20%20when%20%60true%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createReadOnlyProperty'%2Cvalue%3Afunction%20_createReadOnlyProperty(property%2CprotectedSetter)%7Bthis._addPropertyEffect(property%2CTYPES.READ_ONLY)%3Bif(protectedSetter)%7Bthis%5B'_set'%2Bupper(property)%5D%3D%2F**%20%40this%20%7BPropertyEffects%7D%20*%2Ffunction(value)%7Bthis._setProperty(property%2Cvalue)%3B%7D%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createPropertyObserver%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7Cfunction(*%2C*)%7D%20method%20Function%20or%20name%20of%20observer%20method%20to%20call%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20dynamicFn%20Whether%20the%20method%20name%20should%20be%20included%20as%0A%20%20%20%20%20%20%20*%20%20%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createPropertyObserver'%2Cvalue%3Afunction%20_createPropertyObserver(property%2Cmethod%2CdynamicFn)%7Bvar%20info%3D%7Bproperty%3Aproperty%2Cmethod%3Amethod%2CdynamicFn%3ABoolean(dynamicFn)%7D%3Bthis._addPropertyEffect(property%2CTYPES.OBSERVE%2C%7Bfn%3ArunObserverEffect%2Cinfo%3Ainfo%2Ctrigger%3A%7Bname%3Aproperty%7D%7D)%3Bif(dynamicFn)%7Bthis._addPropertyEffect(%2F**%20%40type%20%7Bstring%7D%20*%2Fmethod%2CTYPES.OBSERVE%2C%7Bfn%3ArunObserverEffect%2Cinfo%3Ainfo%2Ctrigger%3A%7Bname%3Amethod%7D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createMethodObserver%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createMethodObserver'%2Cvalue%3Afunction%20_createMethodObserver(expression%2CdynamicFn)%7Bvar%20sig%3DparseMethod(expression)%3Bif(!sig)%7Bthrow%20new%20Error(%22Malformed%20observer%20expression%20'%22%2Bexpression%2B%22'%22)%3B%7DcreateMethodEffect(this%2Csig%2CTYPES.OBSERVE%2CrunMethodEffect%2Cnull%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createNotifyingProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createNotifyingProperty'%2Cvalue%3Afunction%20_createNotifyingProperty(property)%7Bthis._addPropertyEffect(property%2CTYPES.NOTIFY%2C%7Bfn%3ArunNotifyEffect%2Cinfo%3A%7BeventName%3ACaseMap.camelToDashCase(property)%2B'-changed'%2Cproperty%3Aproperty%7D%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createReflectedProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createReflectedProperty'%2Cvalue%3Afunction%20_createReflectedProperty(property)%7Bvar%20attr%3Dthis.constructor.attributeNameForProperty(property)%3Bif(attr%5B0%5D%3D%3D%3D'-')%7Bconsole.warn('Property%20'%2Bproperty%2B'%20cannot%20be%20reflected%20to%20attribute%20'%2Battr%2B'%20because%20%22-%22%20is%20not%20a%20valid%20starting%20attribute%20name.%20Use%20a%20lowercase%20first%20letter%20for%20the%20property%20instead.')%3B%7Delse%7Bthis._addPropertyEffect(property%2CTYPES.REFLECT%2C%7Bfn%3ArunReflectEffect%2Cinfo%3A%7BattrName%3Aattr%7D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createComputedProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20computed%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createComputedProperty'%2Cvalue%3Afunction%20_createComputedProperty(property%2Cexpression%2CdynamicFn)%7Bvar%20sig%3DparseMethod(expression)%3Bif(!sig)%7Bthrow%20new%20Error(%22Malformed%20computed%20expression%20'%22%2Bexpression%2B%22'%22)%3B%7DcreateMethodEffect(this%2Csig%2CTYPES.COMPUTE%2CrunComputedEffect%2Cproperty%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Gather%20the%20argument%20values%20for%20a%20method%20specified%20in%20the%20provided%20array%0A%20%20%20%20%20%20%20*%20of%20argument%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20%60path%60%20and%20%60value%60%20arguments%20are%20used%20to%20fill%20in%20wildcard%20descriptor%0A%20%20%20%20%20%20%20*%20when%20the%20method%20is%20being%20called%20as%20a%20result%20of%20a%20path%20notification.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Array%3C!MethodArg%3E%7D%20args%20Array%20of%20argument%20metadata%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Property%2Fpath%20name%20that%20triggered%20the%20method%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%3C*%3E%7D%20Array%20of%20argument%20values%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_marshalArgs'%2Cvalue%3Afunction%20_marshalArgs(args%2Cpath%2Cprops)%7Bvar%20data%3Dthis.__data%3Bvar%20values%3D%5B%5D%3Bfor(var%20i%3D0%2Cl%3Dargs.length%3Bi%3Cl%3Bi%2B%2B)%7Bvar%20arg%3Dargs%5Bi%5D%3Bvar%20name%3Darg.name%3Bvar%20v%3Dvoid%200%3Bif(arg.literal)%7Bv%3Darg.value%3B%7Delse%7Bif(arg.structured)%7Bv%3DPolymer.Path.get(data%2Cname)%3B%2F%2F%20when%20data%20is%20not%20stored%20e.g.%20%60splices%60%0Aif(v%3D%3D%3Dundefined)%7Bv%3Dprops%5Bname%5D%3B%7D%7Delse%7Bv%3Ddata%5Bname%5D%3B%7D%7Dif(arg.wildcard)%7B%2F%2F%20Only%20send%20the%20actual%20path%20changed%20info%20if%20the%20change%20that%0A%2F%2F%20caused%20the%20observer%20to%20run%20matched%20the%20wildcard%0Avar%20baseChanged%3Dname.indexOf(path%2B'.')%3D%3D%3D0%3Bvar%20matches%3Dpath.indexOf(name)%3D%3D%3D0%26%26!baseChanged%3Bvalues%5Bi%5D%3D%7Bpath%3Amatches%3Fpath%3Aname%2Cvalue%3Amatches%3Fprops%5Bpath%5D%3Av%2Cbase%3Av%7D%3B%7Delse%7Bvalues%5Bi%5D%3Dv%3B%7D%7Dreturn%20values%3B%7D%2F%2F%20--%20static%20class%20methods%20------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Ensures%20an%20accessor%20exists%20for%20the%20specified%20property%2C%20and%20adds%0A%20%20%20%20%20%20%20*%20to%20a%20list%20of%20%22property%20effects%22%20that%20will%20run%20when%20the%20accessor%20for%0A%20%20%20%20%20%20%20*%20the%20specified%20property%20is%20set.%20%20Effects%20are%20grouped%20by%20%22type%22%2C%20which%0A%20%20%20%20%20%20%20*%20roughly%20corresponds%20to%20a%20phase%20in%20effect%20processing.%20%20The%20effect%0A%20%20%20%20%20%20%20*%20metadata%20should%20be%20in%20the%20following%20form%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20fn%3A%20effectFunction%2C%20%2F%2F%20Reference%20to%20function%20to%20call%20to%20perform%20effect%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20info%3A%20%7B%20...%20%7D%20%20%20%20%20%20%20%2F%2F%20Effect%20metadata%20passed%20to%20function%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20trigger%3A%20%7B%20%20%20%20%20%20%20%20%20%20%2F%2F%20Optional%20triggering%20metadata%3B%20if%20not%20provided%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20name%3A%20string%20%20%20%20%20%20%2F%2F%20the%20property%20is%20treated%20as%20a%20wildcard%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20structured%3A%20boolean%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20wildcard%3A%20boolean%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Effects%20are%20called%20from%20%60_propertiesChanged%60%20in%20the%20following%20order%20by%0A%20%20%20%20%20%20%20*%20type%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%201.%20COMPUTE%0A%20%20%20%20%20%20%20*%202.%20PROPAGATE%0A%20%20%20%20%20%20%20*%203.%20REFLECT%0A%20%20%20%20%20%20%20*%204.%20OBSERVE%0A%20%20%20%20%20%20%20*%205.%20NOTIFY%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Effect%20functions%20are%20called%20with%20the%20following%20signature%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20effectFunction(inst%2C%20path%2C%20props%2C%20oldProps%2C%20info%2C%20hasPaths)%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_bindTemplate'%2C%2F%2F%20--%20binding%20----------------------------------------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60bindTemplate%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20on%20the%20prototype%20(for%20prototypical%20template%0A%20%20%20%20%20%20%20*%20binding%2C%20to%20avoid%20creating%20accessors%20every%20instance)%20once%20per%20prototype%2C%0A%20%20%20%20%20%20%20*%20and%20will%20be%20called%20with%20%60runtimeBinding%3A%20true%60%20by%20%60_stampTemplate%60%20to%0A%20%20%20%20%20%20%20*%20create%20and%20link%20an%20instance%20of%20the%20template%20metadata%20associated%20with%20a%0A%20%20%20%20%20%20%20*%20particular%20stamping.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20containing%20binding%0A%20%20%20%20%20%20%20*%20%20%20bindings%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20instanceBinding%20When%20false%20(default)%2C%20performs%0A%20%20%20%20%20%20%20*%20%20%20%22prototypical%22%20binding%20of%20the%20template%20and%20overwrites%20any%20previously%0A%20%20%20%20%20%20%20*%20%20%20bound%20template%20for%20the%20class.%20When%20true%20(as%20passed%20from%0A%20%20%20%20%20%20%20*%20%20%20%60_stampTemplate%60)%2C%20the%20template%20info%20is%20instanced%20and%20linked%20into%0A%20%20%20%20%20%20%20*%20%20%20the%20list%20of%20bound%20templates.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Template%20metadata%20object%3B%20for%20%60runtimeBinding%60%2C%0A%20%20%20%20%20%20%20*%20%20%20this%20is%20an%20instance%20of%20the%20prototypical%20template%20info%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_bindTemplate(template%2CinstanceBinding)%7Bvar%20templateInfo%3Dthis.constructor._parseTemplate(template)%3Bvar%20wasPreBound%3Dthis.__templateInfo%3D%3DtemplateInfo%3B%2F%2F%20Optimization%3A%20since%20this%20is%20called%20twice%20for%20proto-bound%20templates%2C%0A%2F%2F%20don't%20attempt%20to%20recreate%20accessors%20if%20this%20template%20was%20pre-bound%0Aif(!wasPreBound)%7Bfor(var%20prop%20in%20templateInfo.propertyEffects)%7Bthis._createPropertyAccessor(prop)%3B%7D%7Dif(instanceBinding)%7B%2F%2F%20For%20instance-time%20binding%2C%20create%20instance%20of%20template%20metadata%0A%2F%2F%20and%20link%20into%20list%20of%20templates%20if%20necessary%0AtemplateInfo%3D%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2FObject.create(templateInfo)%3BtemplateInfo.wasPreBound%3DwasPreBound%3Bif(!wasPreBound%26%26this.__templateInfo)%7Bvar%20last%3Dthis.__templateInfoLast%7C%7Cthis.__templateInfo%3Bthis.__templateInfoLast%3Dlast.nextTemplateInfo%3DtemplateInfo%3BtemplateInfo.previousTemplateInfo%3Dlast%3Breturn%20templateInfo%3B%7D%7Dreturn%20this.__templateInfo%3DtemplateInfo%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20a%20property%20effect%20to%20the%20given%20template%20metadata%2C%20which%20is%20run%0A%20%20%20%20%20%20%20*%20at%20the%20%22propagate%22%20stage%20of%20%60_propertiesChanged%60%20when%20the%20template%0A%20%20%20%20%20%20%20*%20has%20been%20bound%20to%20the%20element%20via%20%60_bindTemplate%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20%60effect%60%20object%20should%20match%20the%20format%20in%20%60_addPropertyEffect%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20templateInfo%20Template%20metadata%20to%20add%20effect%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_stampTemplate'%2C%2F**%0A%20%20%20%20%20%20%20*%20Stamps%20the%20provided%20template%20and%20performs%20instance-time%20setup%20for%0A%20%20%20%20%20%20%20*%20Polymer%20template%20features%2C%20including%20data%20bindings%2C%20declarative%20event%0A%20%20%20%20%20%20%20*%20listeners%2C%20and%20the%20%60this.%24%60%20map%20of%20%60id%60's%20to%20nodes.%20%20A%20document%20fragment%0A%20%20%20%20%20%20%20*%20is%20returned%20containing%20the%20stamped%20DOM%2C%20ready%20for%20insertion%20into%20the%0A%20%20%20%20%20%20%20*%20DOM.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20more%20than%20once%3B%20however%20note%20that%20due%20to%0A%20%20%20%20%20%20%20*%20%60shadycss%60%20polyfill%20limitations%2C%20only%20styles%20from%20templates%20prepared%0A%20%20%20%20%20%20%20*%20using%20%60ShadyCSS.prepareTemplate%60%20will%20be%20correctly%20polyfilled%20(scoped%0A%20%20%20%20%20%20%20*%20to%20the%20shadow%20root%20and%20support%20CSS%20custom%20properties)%2C%20and%20note%20that%0A%20%20%20%20%20%20%20*%20%60ShadyCSS.prepareTemplate%60%20may%20only%20be%20called%20once%20per%20element.%20As%20such%2C%0A%20%20%20%20%20%20%20*%20any%20styles%20required%20by%20in%20runtime-stamped%20templates%20must%20be%20included%0A%20%20%20%20%20%20%20*%20in%20the%20main%20element%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20stamp%0A%20%20%20%20%20%20%20*%20%40return%20%7B!StampedTemplate%7D%20Cloned%20template%20content%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_stampTemplate(template)%7B%2F%2F%20Ensures%20that%20created%20dom%20is%20%60_enqueueClient%60'd%20to%20this%20element%20so%0A%2F%2F%20that%20it%20can%20be%20flushed%20on%20next%20call%20to%20%60_flushProperties%60%0AhostStack.beginHosting(this)%3Bvar%20dom%3D_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_stampTemplate'%2Cthis).call(this%2Ctemplate)%3BhostStack.endHosting(this)%3Bvar%20templateInfo%3D%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2Fthis._bindTemplate(template%2Ctrue)%3B%2F%2F%20Add%20template-instance-specific%20data%20to%20instanced%20templateInfo%0AtemplateInfo.nodeList%3Ddom.nodeList%3B%2F%2F%20Capture%20child%20nodes%20to%20allow%20unstamping%20of%20non-prototypical%20templates%0Aif(!templateInfo.wasPreBound)%7Bvar%20nodes%3DtemplateInfo.childNodes%3D%5B%5D%3Bfor(var%20n%3Ddom.firstChild%3Bn%3Bn%3Dn.nextSibling)%7Bnodes.push(n)%3B%7D%7Ddom.templateInfo%3DtemplateInfo%3B%2F%2F%20Setup%20compound%20storage%2C%202-way%20listeners%2C%20and%20dataHost%20for%20bindings%0AsetupBindings(this%2CtemplateInfo)%3B%2F%2F%20Flush%20properties%20into%20template%20nodes%20if%20already%20booted%0Aif(this.__dataReady)%7BrunEffects(this%2CtemplateInfo.propertyEffects%2Cthis.__data%2Cnull%2Cfalse%2CtemplateInfo.nodeList)%3B%7Dreturn%20dom%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20and%20unbinds%20the%20nodes%20previously%20contained%20in%20the%20provided%0A%20%20%20%20%20%20%20*%20DocumentFragment%20returned%20from%20%60_stampTemplate%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!StampedTemplate%7D%20dom%20DocumentFragment%20previously%20returned%0A%20%20%20%20%20%20%20*%20%20%20from%20%60_stampTemplate%60%20associated%20with%20the%20nodes%20to%20be%20removed%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removeBoundDom'%2Cvalue%3Afunction%20_removeBoundDom(dom)%7B%2F%2F%20Unlink%20template%20info%0Avar%20templateInfo%3Ddom.templateInfo%3Bif(templateInfo.previousTemplateInfo)%7BtemplateInfo.previousTemplateInfo.nextTemplateInfo%3DtemplateInfo.nextTemplateInfo%3B%7Dif(templateInfo.nextTemplateInfo)%7BtemplateInfo.nextTemplateInfo.previousTemplateInfo%3DtemplateInfo.previousTemplateInfo%3B%7Dif(this.__templateInfoLast%3D%3DtemplateInfo)%7Bthis.__templateInfoLast%3DtemplateInfo.previousTemplateInfo%3B%7DtemplateInfo.previousTemplateInfo%3DtemplateInfo.nextTemplateInfo%3Dnull%3B%2F%2F%20Remove%20stamped%20nodes%0Avar%20nodes%3DtemplateInfo.childNodes%3Bfor(var%20i%3D0%3Bi%3Cnodes.length%3Bi%2B%2B)%7Bvar%20node%3Dnodes%5Bi%5D%3Bnode.parentNode.removeChild(node)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20*%20parsing%20bindings%20from%20%60TextNode%60's'%20%60textContent%60.%20%20A%20%60bindings%60%0A%20%20%20%20%20%20%20*%20array%20is%20added%20to%20%60nodeInfo%60%20and%20populated%20with%20binding%20metadata%0A%20%20%20%20%20%20%20*%20with%20information%20capturing%20the%20binding%20target%2C%20and%20a%20%60parts%60%20array%0A%20%20%20%20%20%20%20*%20with%20one%20or%20more%20metadata%20objects%20capturing%20the%20source(s)%20of%20the%0A%20%20%20%20%20%20%20*%20binding.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'PROPERTY_EFFECT_TYPES'%2Cget%3Afunction%20get()%7Breturn%20TYPES%3B%7D%7D%5D%2C%5B%7Bkey%3A'addPropertyEffect'%2Cvalue%3Afunction%20addPropertyEffect(property%2Ctype%2Ceffect)%7Bthis.prototype._addPropertyEffect(property%2Ctype%2Ceffect)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20single-property%20observer%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7Cfunction(*%2C*)%7D%20method%20Function%20or%20name%20of%20observer%20method%20to%20call%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20dynamicFn%20Whether%20the%20method%20name%20should%20be%20included%20as%0A%20%20%20%20%20%20%20*%20%20%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createPropertyObserver'%2Cvalue%3Afunction%20createPropertyObserver(property%2Cmethod%2CdynamicFn)%7Bthis.prototype._createPropertyObserver(property%2Cmethod%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20multi-property%20%22method%20observer%22%20based%20on%20the%20provided%0A%20%20%20%20%20%20%20*%20expression%2C%20which%20should%20be%20a%20string%20in%20the%20form%20of%20a%20normal%20JavaScript%0A%20%20%20%20%20%20%20*%20function%20signature%3A%20%60'methodName(arg1%2C%20%5B...%2C%20argn%5D)'%60.%20%20Each%20argument%0A%20%20%20%20%20%20%20*%20should%20correspond%20to%20a%20property%20or%20path%20in%20the%20context%20of%20this%0A%20%20%20%20%20%20%20*%20prototype%20(or%20instance)%2C%20or%20may%20be%20a%20literal%20string%20or%20number.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createMethodObserver'%2Cvalue%3Afunction%20createMethodObserver(expression%2CdynamicFn)%7Bthis.prototype._createMethodObserver(expression%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Causes%20the%20setter%20for%20the%20given%20property%20to%20dispatch%20%60%3Cproperty%3E-changed%60%0A%20%20%20%20%20%20%20*%20events%20to%20notify%20of%20changes%20to%20the%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createNotifyingProperty'%2Cvalue%3Afunction%20createNotifyingProperty(property)%7Bthis.prototype._createNotifyingProperty(property)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20read-only%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20To%20set%20the%20property%2C%20use%20the%20protected%20%60_setProperty%60%20API.%0A%20%20%20%20%20%20%20*%20To%20create%20a%20custom%20protected%20setter%20(e.g.%20%60_setMyProp()%60%20for%0A%20%20%20%20%20%20%20*%20property%20%60myProp%60)%2C%20pass%20%60true%60%20for%20%60protectedSetter%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20if%20the%20property%20will%20have%20other%20property%20effects%2C%20this%20method%0A%20%20%20%20%20%20%20*%20should%20be%20called%20first%2C%20before%20adding%20other%20effects.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20protectedSetter%20Creates%20a%20custom%20protected%20setter%0A%20%20%20%20%20%20%20*%20%20%20when%20%60true%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createReadOnlyProperty'%2Cvalue%3Afunction%20createReadOnlyProperty(property%2CprotectedSetter)%7Bthis.prototype._createReadOnlyProperty(property%2CprotectedSetter)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Causes%20the%20setter%20for%20the%20given%20property%20to%20reflect%20the%20property%20value%0A%20%20%20%20%20%20%20*%20to%20a%20(dash-cased)%20attribute%20of%20the%20same%20name.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createReflectedProperty'%2Cvalue%3Afunction%20createReflectedProperty(property)%7Bthis.prototype._createReflectedProperty(property)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20computed%20property%20whose%20value%20is%20set%20to%20the%20result%20of%20the%0A%20%20%20%20%20%20%20*%20method%20described%20by%20the%20given%20%60expression%60%20each%20time%20one%20or%20more%0A%20%20%20%20%20%20%20*%20arguments%20to%20the%20method%20changes.%20%20The%20expression%20should%20be%20a%20string%0A%20%20%20%20%20%20%20*%20in%20the%20form%20of%20a%20normal%20JavaScript%20function%20signature%3A%0A%20%20%20%20%20%20%20*%20%60'methodName(arg1%2C%20%5B...%2C%20argn%5D)'%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20computed%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%20whether%0A%20%20%20%20%20%20%20*%20%20%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createComputedProperty'%2Cvalue%3Afunction%20createComputedProperty(property%2Cexpression%2CdynamicFn)%7Bthis.prototype._createComputedProperty(property%2Cexpression%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20the%20provided%20template%20to%20ensure%20binding%20effects%20are%20created%0A%20%20%20%20%20%20%20*%20for%20them%2C%20and%20then%20ensures%20property%20accessors%20are%20created%20for%20any%0A%20%20%20%20%20%20%20*%20dependent%20properties%20in%20the%20template.%20%20Binding%20effects%20for%20bound%0A%20%20%20%20%20%20%20*%20templates%20are%20stored%20in%20a%20linked%20list%20on%20the%20instance%20so%20that%0A%20%20%20%20%20%20%20*%20templates%20can%20be%20efficiently%20stamped%20and%20unstamped.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20containing%20binding%0A%20%20%20%20%20%20%20*%20%20%20bindings%0A%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Template%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'bindTemplate'%2Cvalue%3Afunction%20bindTemplate(template)%7Breturn%20this.prototype._bindTemplate(template)%3B%7D%7D%2C%7Bkey%3A'_addTemplatePropertyEffect'%2Cvalue%3Afunction%20_addTemplatePropertyEffect(templateInfo%2Cprop%2Ceffect)%7Bvar%20hostProps%3DtemplateInfo.hostProps%3DtemplateInfo.hostProps%7C%7C%7B%7D%3BhostProps%5Bprop%5D%3Dtrue%3Bvar%20effects%3DtemplateInfo.propertyEffects%3DtemplateInfo.propertyEffects%7C%7C%7B%7D%3Bvar%20propEffects%3Deffects%5Bprop%5D%3Deffects%5Bprop%5D%7C%7C%5B%5D%3BpropEffects.push(effect)%3B%7D%7D%2C%7Bkey%3A'_parseTemplateNode'%2Cvalue%3Afunction%20_parseTemplateNode(node%2CtemplateInfo%2CnodeInfo)%7Bvar%20noted%3D_get(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)%2C'_parseTemplateNode'%2Cthis).call(this%2Cnode%2CtemplateInfo%2CnodeInfo)%3Bif(node.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bvar%20parts%3Dthis._parseBindings(node.textContent%2CtemplateInfo)%3Bif(parts)%7B%2F%2F%20Initialize%20the%20textContent%20with%20any%20literal%20parts%0A%2F%2F%20NOTE%3A%20default%20to%20a%20space%20here%20so%20the%20textNode%20remains%3B%20some%20browsers%0A%2F%2F%20(IE)%20omit%20an%20empty%20textNode%20following%20cloneNode%2FimportNode.%0Anode.textContent%3DliteralFromParts(parts)%7C%7C'%20'%3BaddBinding(this%2CtemplateInfo%2CnodeInfo%2C'text'%2C'textContent'%2Cparts)%3Bnoted%3Dtrue%3B%7D%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20*%20parsing%20bindings%20from%20attributes.%20%20A%20%60bindings%60%0A%20%20%20%20%20%20%20*%20array%20is%20added%20to%20%60nodeInfo%60%20and%20populated%20with%20binding%20metadata%0A%20%20%20%20%20%20%20*%20with%20information%20capturing%20the%20binding%20target%2C%20and%20a%20%60parts%60%20array%0A%20%20%20%20%20%20%20*%20with%20one%20or%20more%20metadata%20objects%20capturing%20the%20source(s)%20of%20the%0A%20%20%20%20%20%20%20*%20binding.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Attribute%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Attribute%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNodeAttribute'%2Cvalue%3Afunction%20_parseTemplateNodeAttribute(node%2CtemplateInfo%2CnodeInfo%2Cname%2Cvalue)%7Bvar%20parts%3Dthis._parseBindings(value%2CtemplateInfo)%3Bif(parts)%7B%2F%2F%20Attribute%20or%20property%0Avar%20origName%3Dname%3Bvar%20kind%3D'property'%3B%2F%2F%20The%20only%20way%20we%20see%20a%20capital%20letter%20here%20is%20if%20the%20attr%20has%0A%2F%2F%20a%20capital%20letter%20in%20it%20per%20spec.%20In%20this%20case%2C%20to%20make%20sure%0A%2F%2F%20this%20binding%20works%2C%20we%20go%20ahead%20and%20make%20the%20binding%20to%20the%20attribute.%0Aif(capitalAttributeRegex.test(name))%7Bkind%3D'attribute'%3B%7Delse%20if(name%5Bname.length-1%5D%3D%3D'%24')%7Bname%3Dname.slice(0%2C-1)%3Bkind%3D'attribute'%3B%7D%2F%2F%20Initialize%20attribute%20bindings%20with%20any%20literal%20parts%0Avar%20literal%3DliteralFromParts(parts)%3Bif(literal%26%26kind%3D%3D'attribute')%7B%2F%2F%20Ensure%20a%20ShadyCSS%20template%20scoped%20style%20is%20not%20removed%0A%2F%2F%20when%20a%20class%24%20binding's%20initial%20literal%20value%20is%20set.%0Aif(name%3D%3D'class'%26%26node.hasAttribute('class'))%7Bliteral%2B%3D'%20'%2Bnode.getAttribute(name)%3B%7Dnode.setAttribute(name%2Cliteral)%3B%7D%2F%2F%20Clear%20attribute%20before%20removing%2C%20since%20IE%20won't%20allow%20removing%0A%2F%2F%20%60value%60%20attribute%20if%20it%20previously%20had%20a%20value%20(can't%0A%2F%2F%20unconditionally%20set%20''%20before%20removing%20since%20attributes%20with%20%60%24%60%0A%2F%2F%20can't%20be%20set%20using%20setAttribute)%0Aif(node.localName%3D%3D%3D'input'%26%26origName%3D%3D%3D'value')%7Bnode.setAttribute(origName%2C'')%3B%7D%2F%2F%20Remove%20annotation%0Anode.removeAttribute(origName)%3B%2F%2F%20Case%20hackery%3A%20attributes%20are%20lower-case%2C%20but%20bind%20targets%0A%2F%2F%20(properties)%20are%20case%20sensitive.%20Gambit%20is%20to%20map%20dash-case%20to%0A%2F%2F%20camel-case%3A%20%60foo-bar%60%20becomes%20%60fooBar%60.%0A%2F%2F%20Attribute%20bindings%20are%20excepted.%0Aif(kind%3D%3D%3D'property')%7Bname%3DPolymer.CaseMap.dashToCamelCase(name)%3B%7DaddBinding(this%2CtemplateInfo%2CnodeInfo%2Ckind%2Cname%2Cparts%2Cliteral)%3Breturn%20true%3B%7Delse%7Breturn%20_get(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)%2C'_parseTemplateNodeAttribute'%2Cthis).call(this%2Cnode%2CtemplateInfo%2CnodeInfo%2Cname%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20*%20binding%20the%20properties%20that%20a%20nested%20template%20depends%20on%20to%20the%20template%0A%20%20%20%20%20%20%20*%20as%20%60_host_%3Cproperty%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNestedTemplate'%2Cvalue%3Afunction%20_parseTemplateNestedTemplate(node%2CtemplateInfo%2CnodeInfo)%7Bvar%20noted%3D_get(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)%2C'_parseTemplateNestedTemplate'%2Cthis).call(this%2Cnode%2CtemplateInfo%2CnodeInfo)%3B%2F%2F%20Merge%20host%20props%20into%20outer%20template%20and%20add%20bindings%0Avar%20hostProps%3DnodeInfo.templateInfo.hostProps%3Bvar%20mode%3D'%7B'%3Bfor(var%20source%20in%20hostProps)%7Bvar%20parts%3D%5B%7Bmode%3Amode%2Csource%3Asource%2Cdependencies%3A%5Bsource%5D%7D%5D%3BaddBinding(this%2CtemplateInfo%2CnodeInfo%2C'property'%2C'_host_'%2Bsource%2Cparts)%3B%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20to%20parse%20text%20in%20a%20template%20(either%20attribute%20values%20or%0A%20%20%20%20%20%20%20*%20textContent)%20into%20binding%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Any%20overrides%20of%20this%20method%20should%20return%20an%20array%20of%20binding%20part%0A%20%20%20%20%20%20%20*%20metadata%20%20representing%20one%20or%20more%20bindings%20found%20in%20the%20provided%20text%0A%20%20%20%20%20%20%20*%20and%20any%20%22literal%22%20text%20in%20between.%20%20Any%20non-literal%20parts%20will%20be%20passed%0A%20%20%20%20%20%20%20*%20to%20%60_evaluateBinding%60%20when%20any%20dependencies%20change.%20%20The%20only%20required%0A%20%20%20%20%20%20%20*%20fields%20of%20each%20%22part%22%20in%20the%20returned%20array%20are%20as%20follows%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20-%20%60dependencies%60%20-%20Array%20containing%20trigger%20metadata%20for%20each%20property%0A%20%20%20%20%20%20%20*%20%20%20that%20should%20trigger%20the%20binding%20to%20update%0A%20%20%20%20%20%20%20*%20-%20%60literal%60%20-%20String%20containing%20text%20if%20the%20part%20represents%20a%20literal%3B%0A%20%20%20%20%20%20%20*%20%20%20in%20this%20case%20no%20%60dependencies%60%20are%20needed%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Additional%20metadata%20for%20use%20by%20%60_evaluateBinding%60%20may%20be%20provided%20in%0A%20%20%20%20%20%20%20*%20each%20part%20object%20as%20needed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20handles%20the%20following%20types%20of%20bindings%0A%20%20%20%20%20%20%20*%20(one%20or%20more%20may%20be%20intermixed%20with%20literal%20strings)%3A%0A%20%20%20%20%20%20%20*%20-%20Property%20binding%3A%20%60%5B%5Bprop%5D%5D%60%0A%20%20%20%20%20%20%20*%20-%20Path%20binding%3A%20%60%5B%5Bobject.prop%5D%5D%60%0A%20%20%20%20%20%20%20*%20-%20Negated%20property%20or%20path%20bindings%3A%20%60%5B%5B!prop%5D%5D%60%20or%20%60%5B%5B!object.prop%5D%5D%60%0A%20%20%20%20%20%20%20*%20-%20Two-way%20property%20or%20path%20bindings%20(supports%20negation)%3A%0A%20%20%20%20%20%20%20*%20%20%20%60%7B%7Bprop%7D%7D%60%2C%20%60%7B%7Bobject.prop%7D%7D%60%2C%20%60%7B%7B!prop%7D%7D%60%20or%20%60%7B%7B!object.prop%7D%7D%60%0A%20%20%20%20%20%20%20*%20-%20Inline%20computed%20method%20(supports%20negation)%3A%0A%20%20%20%20%20%20%20*%20%20%20%60%5B%5Bcompute(a%2C%20'literal'%2C%20b)%5D%5D%60%2C%20%60%5B%5B!compute(a%2C%20'literal'%2C%20b)%5D%5D%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20uses%20a%20regular%20expression%20for%20best%0A%20%20%20%20%20%20%20*%20performance.%20However%2C%20the%20regular%20expression%20uses%20a%20white-list%20of%0A%20%20%20%20%20%20%20*%20allowed%20characters%20in%20a%20data-binding%2C%20which%20causes%20problems%20for%0A%20%20%20%20%20%20%20*%20data-bindings%20that%20do%20use%20characters%20not%20in%20this%20white-list.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Instead%20of%20updating%20the%20white-list%20with%20all%20allowed%20characters%2C%0A%20%20%20%20%20%20%20*%20there%20is%20a%20StrictBindingParser%20(see%20lib%2Fmixins%2Fstrict-binding-parser)%0A%20%20%20%20%20%20%20*%20that%20uses%20a%20state%20machine%20instead.%20This%20state%20machine%20is%20able%20to%20handle%0A%20%20%20%20%20%20%20*%20all%20characters.%20However%2C%20it%20is%20slightly%20less%20performant%2C%20therefore%20we%0A%20%20%20%20%20%20%20*%20extracted%20it%20into%20a%20separate%20optional%20mixin.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20text%20Text%20to%20parse%20from%20attribute%20or%20textContent%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20templateInfo%20Current%20template%20metadata%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%3C!BindingPart%3E%7D%20Array%20of%20binding%20part%20metadata%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseBindings'%2Cvalue%3Afunction%20_parseBindings(text%2CtemplateInfo)%7Bvar%20parts%3D%5B%5D%3Bvar%20lastIndex%3D0%3Bvar%20m%3Dvoid%200%3B%2F%2F%20Example%3A%20%22literal1%7B%7Bprop%7D%7Dliteral2%5B%5B!compute(foo%2Cbar)%5D%5Dfinal%22%0A%2F%2F%20Regex%20matches%3A%0A%2F%2F%20%20%20%20%20%20%20%20Iteration%201%3A%20%20Iteration%202%3A%0A%2F%2F%20m%5B1%5D%3A%20'%7B%7B'%20%20%20%20%20%20%20%20%20%20'%5B%5B'%0A%2F%2F%20m%5B2%5D%3A%20''%20%20%20%20%20%20%20%20%20%20%20%20'!'%0A%2F%2F%20m%5B3%5D%3A%20'prop'%20%20%20%20%20%20%20%20'compute(foo%2Cbar)'%0Awhile((m%3DbindingRegex.exec(text))!%3D%3Dnull)%7B%2F%2F%20Add%20literal%20part%0Aif(m.index%3ElastIndex)%7Bparts.push(%7Bliteral%3Atext.slice(lastIndex%2Cm.index)%7D)%3B%7D%2F%2F%20Add%20binding%20part%0Avar%20mode%3Dm%5B1%5D%5B0%5D%3Bvar%20negate%3DBoolean(m%5B2%5D)%3Bvar%20source%3Dm%5B3%5D.trim()%3Bvar%20customEvent%3Dfalse%2CnotifyEvent%3D''%2Ccolon%3D-1%3Bif(mode%3D%3D'%7B'%26%26(colon%3Dsource.indexOf('%3A%3A'))%3E0)%7BnotifyEvent%3Dsource.substring(colon%2B2)%3Bsource%3Dsource.substring(0%2Ccolon)%3BcustomEvent%3Dtrue%3B%7Dvar%20signature%3DparseMethod(source)%3Bvar%20dependencies%3D%5B%5D%3Bif(signature)%7B%2F%2F%20Inline%20computed%20function%0Avar%20args%3Dsignature.args%2CmethodName%3Dsignature.methodName%3Bfor(var%20i%3D0%3Bi%3Cargs.length%3Bi%2B%2B)%7Bvar%20arg%3Dargs%5Bi%5D%3Bif(!arg.literal)%7Bdependencies.push(arg)%3B%7D%7Dvar%20dynamicFns%3DtemplateInfo.dynamicFns%3Bif(dynamicFns%26%26dynamicFns%5BmethodName%5D%7C%7Csignature.static)%7Bdependencies.push(methodName)%3Bsignature.dynamicFn%3Dtrue%3B%7D%7Delse%7B%2F%2F%20Property%20or%20path%0Adependencies.push(source)%3B%7Dparts.push(%7Bsource%3Asource%2Cmode%3Amode%2Cnegate%3Anegate%2CcustomEvent%3AcustomEvent%2Csignature%3Asignature%2Cdependencies%3Adependencies%2Cevent%3AnotifyEvent%7D)%3BlastIndex%3DbindingRegex.lastIndex%3B%7D%2F%2F%20Add%20a%20final%20literal%20part%0Aif(lastIndex%26%26lastIndex%3Ctext.length)%7Bvar%20literal%3Dtext.substring(lastIndex)%3Bif(literal)%7Bparts.push(%7Bliteral%3Aliteral%7D)%3B%7D%7Dif(parts.length)%7Breturn%20parts%3B%7Delse%7Breturn%20null%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20to%20evaluate%20a%20previously%20parsed%20binding%20part%20based%20on%20a%20set%20of%0A%20%20%20%20%20%20%20*%20one%20or%20more%20changed%20dependencies.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bthis%7D%20inst%20Element%20that%20should%20be%20used%20as%20scope%20for%0A%20%20%20%20%20%20%20*%20%20%20binding%20dependencies%0A%20%20%20%20%20%20%20*%20%40param%20%7BBindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Property%2Fpath%20that%20triggered%20this%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20the%20binding%20part%20evaluated%20to%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_evaluateBinding'%2Cvalue%3Afunction%20_evaluateBinding(inst%2Cpart%2Cpath%2Cprops%2ColdProps%2ChasPaths)%7Bvar%20value%3Dvoid%200%3Bif(part.signature)%7Bvalue%3DrunMethodEffect(inst%2Cpath%2Cprops%2ColdProps%2Cpart.signature)%3B%7Delse%20if(path!%3Dpart.source)%7Bvalue%3DPolymer.Path.get(inst%2Cpart.source)%3B%7Delse%7Bif(hasPaths%26%26Polymer.Path.isPath(path))%7Bvalue%3DPolymer.Path.get(inst%2Cpath)%3B%7Delse%7Bvalue%3Dinst.__data%5Bpath%5D%3B%7D%7Dif(part.negate)%7Bvalue%3D!value%3B%7Dreturn%20value%3B%7D%7D%5D)%3Breturn%20PropertyEffects%3B%7D(propertyEffectsBase)%3B%2F%2F%20make%20a%20typing%20for%20closure%20%3AP%0APropertyEffectsType%3DPropertyEffects%3Breturn%20PropertyEffects%3B%7D)%3B%2F**%0A%20%20%20*%20Helper%20api%20for%20enqueuing%20client%20dom%20created%20by%20a%20host%20element.%0A%20%20%20*%0A%20%20%20*%20By%20default%20elements%20are%20flushed%20via%20%60_flushProperties%60%20when%0A%20%20%20*%20%60connectedCallback%60%20is%20called.%20Elements%20attach%20their%20client%20dom%20to%0A%20%20%20*%20themselves%20at%20%60ready%60%20time%20which%20results%20from%20this%20first%20flush.%0A%20%20%20*%20This%20provides%20an%20ordering%20guarantee%20that%20the%20client%20dom%20an%20element%0A%20%20%20*%20creates%20is%20flushed%20before%20the%20element%20itself%20(i.e.%20client%20%60ready%60%0A%20%20%20*%20fires%20before%20host%20%60ready%60).%0A%20%20%20*%0A%20%20%20*%20However%2C%20if%20%60_flushProperties%60%20is%20called%20*before*%20an%20element%20is%20connected%2C%0A%20%20%20*%20as%20for%20example%20%60Templatize%60%20does%2C%20this%20ordering%20guarantee%20cannot%20be%0A%20%20%20*%20satisfied%20because%20no%20elements%20are%20connected.%20(Note%3A%20Bound%20elements%20that%0A%20%20%20*%20receive%20data%20do%20become%20enqueued%20clients%20and%20are%20properly%20ordered%20but%0A%20%20%20*%20unbound%20elements%20are%20not.)%0A%20%20%20*%0A%20%20%20*%20To%20maintain%20the%20desired%20%22client%20before%20host%22%20ordering%20guarantee%20for%20this%0A%20%20%20*%20case%20we%20rely%20on%20the%20%22host%20stack.%20Client%20nodes%20registers%20themselves%20with%0A%20%20%20*%20the%20creating%20host%20element%20when%20created.%20This%20ensures%20that%20all%20client%20dom%0A%20%20%20*%20is%20readied%20in%20the%20proper%20order%2C%20maintaining%20the%20desired%20guarantee.%0A%20%20%20*%0A%20%20%20*%20%40private%0A%20%20%20*%2Fvar%20hostStack%3D%7Bstack%3A%5B%5D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20add%20to%20hostStack%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2FregisterHost%3Afunction%20registerHost(inst)%7Bif(this.stack.length)%7Bvar%20host%3Dthis.stack%5Bthis.stack.length-1%5D%3Bhost._enqueueClient(inst)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20begin%20hosting%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2FbeginHosting%3Afunction%20beginHosting(inst)%7Bthis.stack.push(inst)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20end%20hosting%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2FendHosting%3Afunction%20endHosting(inst)%7Bvar%20stackLen%3Dthis.stack.length%3Bif(stackLen%26%26this.stack%5BstackLen-1%5D%3D%3Dinst)%7Bthis.stack.pop()%3B%7D%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperty-effects.html.js%0A",
            "resourceBytes": 100964,
            "encodedBytes": 0,
            "unusedBytes": 16390
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Provides%20basic%20tracking%20of%20element%20definitions%20(registrations)%20and%0A%20%20%20*%20instance%20counts.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40summary%20Provides%20basic%20tracking%20of%20element%20definitions%20(registrations)%20and%0A%20%20%20*%20instance%20counts.%0A%20%20%20*%2FPolymer.telemetry%3D%7B%2F**%0A%20%20%20%20%20*%20Total%20number%20of%20Polymer%20element%20instances%20created.%0A%20%20%20%20%20*%20%40type%20%7Bnumber%7D%0A%20%20%20%20%20*%2FinstanceCount%3A0%2C%2F**%0A%20%20%20%20%20*%20Array%20of%20Polymer%20element%20classes%20that%20have%20been%20finalized.%0A%20%20%20%20%20*%20%40type%20%7BArray%3CPolymer.Element%3E%7D%0A%20%20%20%20%20*%2Fregistrations%3A%5B%5D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B!PolymerElementConstructor%7D%20prototype%20Element%20prototype%20to%20log%0A%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F_regLog%3Afunction%20_regLog(prototype)%7Bconsole.log('%5B'%2Bprototype.is%2B'%5D%3A%20registered')%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Registers%20a%20class%20prototype%20for%20telemetry%20purposes.%0A%20%20%20%20%20*%20%40param%20%7BHTMLElement%7D%20prototype%20Element%20prototype%20to%20register%0A%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2Fregister%3Afunction%20register(prototype)%7Bthis.registrations.push(prototype)%3BPolymer.log%26%26this._regLog(prototype)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Logs%20all%20elements%20registered%20with%20an%20%60is%60%20to%20the%20console.%0A%20%20%20%20%20*%20%40public%0A%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20*%2FdumpRegistrations%3Afunction%20dumpRegistrations()%7Bthis.registrations.forEach(this._regLog)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Ftelemetry.html.js%0A",
            "resourceBytes": 1356,
            "encodedBytes": 0,
            "unusedBytes": 146
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Creates%20a%20copy%20of%20%60props%60%20with%20each%20property%20normalized%20such%20that%0A%20%20%20*%20upgraded%20it%20is%20an%20object%20with%20at%20least%20a%20type%20property%20%7B%20type%3A%20Type%7D.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20normalize%0A%20%20%20*%20%40return%20%7BObject%7D%20Copy%20of%20input%20%60props%60%20with%20normalized%20properties%20that%0A%20%20%20*%20are%20in%20the%20form%20%7Btype%3A%20Type%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20normalizeProperties(props)%7Bvar%20output%3D%7B%7D%3Bfor(var%20p%20in%20props)%7Bvar%20o%3Dprops%5Bp%5D%3Boutput%5Bp%5D%3Dtypeof%20o%3D%3D%3D'function'%3F%7Btype%3Ao%7D%3Ao%3B%7Dreturn%20output%3B%7D%2F**%0A%20%20%20*%20Mixin%20that%20provides%20a%20minimal%20starting%20point%20to%20using%20the%20PropertiesChanged%0A%20%20%20*%20mixin%20by%20providing%20a%20mechanism%20to%20declare%20properties%20in%20a%20static%0A%20%20%20*%20getter%20(e.g.%20static%20get%20properties()%20%7B%20return%20%7B%20foo%3A%20String%20%7D%20%7D).%20Changes%0A%20%20%20*%20are%20reported%20via%20the%20%60_propertiesChanged%60%20method.%0A%20%20%20*%0A%20%20%20*%20This%20mixin%20provides%20no%20specific%20support%20for%20rendering.%20Users%20are%20expected%0A%20%20%20*%20to%20create%20a%20ShadowRoot%20and%20put%20content%20into%20it%20and%20update%20it%20in%20whatever%0A%20%20%20*%20way%20makes%20sense.%20This%20can%20be%20done%20in%20reaction%20to%20properties%20changing%20by%0A%20%20%20*%20implementing%20%60_propertiesChanged%60.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertiesChanged%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Mixin%20that%20provides%20a%20minimal%20starting%20point%20for%20using%0A%20%20%20*%20the%20PropertiesChanged%20mixin%20by%20providing%20a%20declarative%20%60properties%60%20object.%0A%20%20%20*%2FPolymer.PropertiesMixin%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesChanged%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20base%3DPolymer.PropertiesChanged(superClass)%3B%2F**%0A%20%20%20%20%20*%20Returns%20the%20super%20class%20constructor%20for%20the%20given%20class%2C%20if%20it%20is%20an%0A%20%20%20%20%20*%20instance%20of%20the%20PropertiesMixin.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!PropertiesMixinConstructor%7D%20constructor%20PropertiesMixin%20constructor%0A%20%20%20%20%20*%20%40return%20%7BPropertiesMixinConstructor%7D%20Super%20class%20constructor%0A%20%20%20%20%20*%2Ffunction%20superPropertiesClass(constructor)%7Bvar%20superCtor%3DObject.getPrototypeOf(constructor)%3B%2F%2F%20Note%2C%20the%20%60PropertiesMixin%60%20class%20below%20only%20refers%20to%20the%20class%0A%2F%2F%20generated%20by%20this%20call%20to%20the%20mixin%3B%20the%20instanceof%20test%20only%20works%0A%2F%2F%20because%20the%20mixin%20is%20deduped%20and%20guaranteed%20only%20to%20apply%20once%2C%20hence%0A%2F%2F%20all%20constructors%20in%20a%20proto%20chain%20will%20see%20the%20same%20%60PropertiesMixin%60%0Areturn%20superCtor.prototype%20instanceof%20PropertiesMixin%3F%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2FsuperCtor%3Anull%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20memoized%20version%20of%20the%20%60properties%60%20object%20for%20the%0A%20%20%20%20%20*%20given%20class.%20Properties%20not%20in%20object%20format%20are%20converted%20to%20at%0A%20%20%20%20%20*%20least%20%7Btype%7D.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BPropertiesMixinConstructor%7D%20constructor%20PropertiesMixin%20constructor%0A%20%20%20%20%20*%20%40return%20%7BObject%7D%20Memoized%20properties%20object%0A%20%20%20%20%20*%2Ffunction%20ownProperties(constructor)%7Bif(!constructor.hasOwnProperty(JSCompiler_renameProperty('__ownProperties'%2Cconstructor)))%7Bvar%20props%3Dnull%3Bif(constructor.hasOwnProperty(JSCompiler_renameProperty('properties'%2Cconstructor)))%7Bvar%20properties%3Dconstructor.properties%3Bif(properties)%7Bprops%3DnormalizeProperties(properties)%3B%7D%7Dconstructor.__ownProperties%3Dprops%3B%7Dreturn%20constructor.__ownProperties%3B%7D%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesMixin%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20PropertiesMixin%3Dfunction(_base)%7B_inherits(PropertiesMixin%2C_base)%3Bfunction%20PropertiesMixin()%7B_classCallCheck(this%2CPropertiesMixin)%3Breturn%20_possibleConstructorReturn(this%2C(PropertiesMixin.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin)).apply(this%2Carguments))%3B%7D_createClass(PropertiesMixin%2C%5B%7Bkey%3A'_initializeProperties'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertiesChanged%60%20method%20and%20adds%20a%20call%20to%0A%20%20%20%20%20%20%20*%20%60finalize%60%20which%20lazily%20configures%20the%20element's%20property%20accessors.%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_initializeProperties()%7BPolymer.telemetry.instanceCount%2B%2B%3Bthis.constructor.finalize()%3B_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20when%20the%20element%20is%20added%20to%20a%20document.%0A%20%20%20%20%20%20%20*%20Calls%20%60_enableProperties%60%20to%20turn%20on%20property%20system%20from%0A%20%20%20%20%20%20%20*%20%60PropertiesChanged%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7Bif(_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'connectedCallback'%2Cthis))%7B_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'connectedCallback'%2Cthis).call(this)%3B%7Dthis._enableProperties()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20when%20the%20element%20is%20removed%20from%20a%20document%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7Bif(_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'disconnectedCallback'%2Cthis))%7B_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3B%7D%7D%7D%5D%2C%5B%7Bkey%3A'finalize'%2C%2F**%0A%20%20%20%20%20%20%20*%20Finalizes%20an%20element%20definition%2C%20including%20ensuring%20any%20super%20classes%0A%20%20%20%20%20%20%20*%20are%20also%20finalized.%20This%20includes%20ensuring%20property%0A%20%20%20%20%20%20%20*%20accessors%20exist%20on%20the%20element%20prototype.%20This%20method%20calls%0A%20%20%20%20%20%20%20*%20%60_finalizeClass%60%20to%20finalize%20each%20constructor%20in%20the%20prototype%20chain.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20finalize()%7Bif(!this.hasOwnProperty(JSCompiler_renameProperty('__finalized'%2Cthis)))%7Bvar%20superCtor%3DsuperPropertiesClass(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis)%3Bif(superCtor)%7BsuperCtor.finalize()%3B%7Dthis.__finalized%3Dtrue%3Bthis._finalizeClass()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Finalize%20an%20element%20class.%20This%20includes%20ensuring%20property%0A%20%20%20%20%20%20%20*%20accessors%20exist%20on%20the%20element%20prototype.%20This%20method%20is%20called%20by%0A%20%20%20%20%20%20%20*%20%60finalize%60%20and%20finalizes%20the%20class%20constructor.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_finalizeClass'%2Cvalue%3Afunction%20_finalizeClass()%7Bvar%20props%3DownProperties(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis)%3Bif(props)%7Bthis.createProperties(props)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20memoized%20version%20of%20all%20properties%2C%20including%20those%20inherited%0A%20%20%20%20%20%20%20*%20from%20super%20classes.%20Properties%20not%20in%20object%20format%20are%20converted%20to%0A%20%20%20%20%20%20%20*%20at%20least%20%7Btype%7D.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20Object%20containing%20properties%20for%20this%20class%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'typeForProperty'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertiesChanged%60%20method%20to%20return%20type%20specified%20in%20the%0A%20%20%20%20%20%20%20*%20static%20%60properties%60%20object%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20property%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Type%20to%20which%20to%20deserialize%20attribute%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20typeForProperty(name)%7Bvar%20info%3Dthis._properties%5Bname%5D%3Breturn%20info%26%26info.type%3B%7D%7D%2C%7Bkey%3A'observedAttributes'%2C%2F**%0A%20%20%20%20%20%20%20*%20Implements%20standard%20custom%20elements%20getter%20to%20observes%20the%20attributes%0A%20%20%20%20%20%20%20*%20listed%20in%20%60properties%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2Fget%3Afunction%20get()%7Bvar%20_this2%3Dthis%3Bif(!this.hasOwnProperty('__observedAttributes'))%7BPolymer.telemetry.register(this.prototype)%3Bvar%20props%3Dthis._properties%3Bthis.__observedAttributes%3Dprops%3FObject.keys(props).map(function(p)%7Breturn%20_this2.attributeNameForProperty(p)%3B%7D)%3A%5B%5D%3B%7Dreturn%20this.__observedAttributes%3B%7D%7D%2C%7Bkey%3A'_properties'%2Cget%3Afunction%20get()%7Bif(!this.hasOwnProperty(JSCompiler_renameProperty('__properties'%2Cthis)))%7Bvar%20superCtor%3DsuperPropertiesClass(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis)%3Bthis.__properties%3DObject.assign(%7B%7D%2CsuperCtor%26%26superCtor._properties%2CownProperties(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis))%3B%7Dreturn%20this.__properties%3B%7D%7D%5D)%3Breturn%20PropertiesMixin%3B%7D(base)%3Breturn%20PropertiesMixin%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperties-mixin.html.js%0A",
            "resourceBytes": 9658,
            "encodedBytes": 0,
            "unusedBytes": 1995
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20builtCSS%3Dwindow.ShadyCSS%26%26window.ShadyCSS%5B'cssBuild'%5D%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20the%20core%20API%20for%20Polymer's%20meta-programming%0A%20%20%20*%20features%20including%20template%20stamping%2C%20data-binding%2C%20attribute%20deserialization%2C%0A%20%20%20*%20and%20property%20change%20observation.%0A%20%20%20*%0A%20%20%20*%20Subclassers%20may%20provide%20the%20following%20static%20getters%20to%20return%20metadata%0A%20%20%20*%20used%20to%20configure%20Polymer's%20features%20for%20the%20class%3A%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20is()%60%3A%20When%20the%20template%20is%20provided%20via%20a%20%60dom-module%60%2C%0A%20%20%20*%20%20%20users%20should%20return%20the%20%60dom-module%60%20id%20from%20a%20static%20%60is%60%20getter.%20%20If%0A%20%20%20*%20%20%20no%20template%20is%20needed%20or%20the%20template%20is%20provided%20directly%20via%20the%0A%20%20%20*%20%20%20%60template%60%20getter%2C%20there%20is%20no%20need%20to%20define%20%60is%60%20for%20the%20element.%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20template()%60%3A%20Users%20may%20provide%20the%20template%20directly%20(as%0A%20%20%20*%20%20%20opposed%20to%20via%20%60dom-module%60)%20by%20implementing%20a%20static%20%60template%60%20getter.%0A%20%20%20*%20%20%20The%20getter%20may%20return%20an%20%60HTMLTemplateElement%60%20or%20a%20string%2C%20which%20will%0A%20%20%20*%20%20%20automatically%20be%20parsed%20into%20a%20template.%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20properties()%60%3A%20Should%20return%20an%20object%20describing%0A%20%20%20*%20%20%20property-related%20metadata%20used%20by%20Polymer%20features%20(key%3A%20property%20name%0A%20%20%20*%20%20%20value%3A%20object%20containing%20property%20metadata).%20Valid%20keys%20in%20per-property%0A%20%20%20*%20%20%20metadata%20include%3A%0A%20%20%20*%20%20%20-%20%60type%60%20(String%7CNumber%7CObject%7CArray%7C...)%3A%20Used%20by%0A%20%20%20*%20%20%20%20%20%60attributeChangedCallback%60%20to%20determine%20how%20string-based%20attributes%0A%20%20%20*%20%20%20%20%20are%20deserialized%20to%20JavaScript%20property%20values.%0A%20%20%20*%20%20%20-%20%60notify%60%20(boolean)%3A%20Causes%20a%20change%20in%20the%20property%20to%20fire%20a%0A%20%20%20*%20%20%20%20%20non-bubbling%20event%20called%20%60%3Cproperty%3E-changed%60.%20Elements%20that%20have%0A%20%20%20*%20%20%20%20%20enabled%20two-way%20binding%20to%20the%20property%20use%20this%20event%20to%20observe%20changes.%0A%20%20%20*%20%20%20-%20%60readOnly%60%20(boolean)%3A%20Creates%20a%20getter%20for%20the%20property%2C%20but%20no%20setter.%0A%20%20%20*%20%20%20%20%20To%20set%20a%20read-only%20property%2C%20use%20the%20private%20setter%20method%0A%20%20%20*%20%20%20%20%20%60_setProperty(property%2C%20value)%60.%0A%20%20%20*%20%20%20-%20%60observer%60%20(string)%3A%20Observer%20method%20name%20that%20will%20be%20called%20when%0A%20%20%20*%20%20%20%20%20the%20property%20changes.%20The%20arguments%20of%20the%20method%20are%0A%20%20%20*%20%20%20%20%20%60(value%2C%20previousValue)%60.%0A%20%20%20*%20%20%20-%20%60computed%60%20(string)%3A%20String%20describing%20method%20and%20dependent%20properties%0A%20%20%20*%20%20%20%20%20for%20computing%20the%20value%20of%20this%20property%20(e.g.%20%60'computeFoo(bar%2C%20zot)'%60).%0A%20%20%20*%20%20%20%20%20Computed%20properties%20are%20read-only%20by%20default%20and%20can%20only%20be%20changed%0A%20%20%20*%20%20%20%20%20via%20the%20return%20value%20of%20the%20computing%20method.%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20observers()%60%3A%20Array%20of%20strings%20describing%20multi-property%0A%20%20%20*%20%20%20observer%20methods%20and%20their%20dependent%20properties%20(e.g.%0A%20%20%20*%20%20%20%60'observeABC(a%2C%20b%2C%20c)'%60).%0A%20%20%20*%0A%20%20%20*%20The%20base%20class%20provides%20default%20implementations%20for%20the%20following%20standard%0A%20%20%20*%20custom%20element%20lifecycle%20callbacks%3B%20users%20may%20override%20these%2C%20but%20should%0A%20%20%20*%20call%20the%20super%20method%20to%20ensure%0A%20%20%20*%20-%20%60constructor%60%3A%20Run%20when%20the%20element%20is%20created%20or%20upgraded%0A%20%20%20*%20-%20%60connectedCallback%60%3A%20Run%20each%20time%20the%20element%20is%20connected%20to%20the%0A%20%20%20*%20%20%20document%0A%20%20%20*%20-%20%60disconnectedCallback%60%3A%20Run%20each%20time%20the%20element%20is%20disconnected%20from%0A%20%20%20*%20%20%20the%20document%0A%20%20%20*%20-%20%60attributeChangedCallback%60%3A%20Run%20each%20time%20an%20attribute%20in%0A%20%20%20*%20%20%20%60observedAttributes%60%20is%20set%20or%20removed%20(note%3A%20this%20element's%20default%0A%20%20%20*%20%20%20%60observedAttributes%60%20implementation%20will%20automatically%20return%20an%20array%0A%20%20%20*%20%20%20of%20dash-cased%20attributes%20based%20on%20%60properties%60)%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertyEffects%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertiesMixin%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40property%20rootPath%20%7Bstring%7D%20Set%20to%20the%20value%20of%20%60Polymer.rootPath%60%2C%0A%20%20%20*%20%20%20which%20defaults%20to%20the%20main%20document%20path%0A%20%20%20*%20%40property%20importPath%20%7Bstring%7D%20Set%20to%20the%20value%20of%20the%20class's%20static%0A%20%20%20*%20%20%20%60importPath%60%20property%2C%20which%20defaults%20to%20the%20path%20of%20this%20element's%0A%20%20%20*%20%20%20%60dom-module%60%20(when%20%60is%60%20is%20used)%2C%20but%20can%20be%20overridden%20for%20other%0A%20%20%20*%20%20%20import%20strategies.%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20the%20core%20API%20for%20Polymer's%0A%20%20%20*%20meta-programming%20features.%0A%20%20%20*%2FPolymer.ElementMixin%3DPolymer.dedupingMixin(function(base)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesMixin%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20polymerElementBase%3DPolymer.PropertiesMixin(Polymer.PropertyEffects(base))%3B%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20properties%20with%20default%20values.%0A%20%20%20%20%20*%20This%20list%20is%20created%20as%20an%20optimization%20since%20it%20is%20a%20subset%20of%0A%20%20%20%20%20*%20the%20list%20returned%20from%20%60_properties%60.%0A%20%20%20%20%20*%20This%20list%20is%20used%20in%20%60_initializeProperties%60%20to%20set%20property%20defaults.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BPolymerElementConstructor%7D%20constructor%20Element%20class%0A%20%20%20%20%20*%20%40return%20%7BPolymerElementProperties%7D%20Flattened%20properties%20for%20this%20class%0A%20%20%20%20%20*%20%20%20that%20have%20default%20values%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20propertyDefaults(constructor)%7Bif(!constructor.hasOwnProperty(JSCompiler_renameProperty('__propertyDefaults'%2Cconstructor)))%7Bconstructor.__propertyDefaults%3Dnull%3Bvar%20props%3Dconstructor._properties%3Bfor(var%20p%20in%20props)%7Bvar%20info%3Dprops%5Bp%5D%3Bif('value'in%20info)%7Bconstructor.__propertyDefaults%3Dconstructor.__propertyDefaults%7C%7C%7B%7D%3Bconstructor.__propertyDefaults%5Bp%5D%3Dinfo%3B%7D%7D%7Dreturn%20constructor.__propertyDefaults%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20memoized%20version%20of%20the%20%60observers%60%20array.%0A%20%20%20%20%20*%20%40param%20%7BPolymerElementConstructor%7D%20constructor%20Element%20class%0A%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20containing%20own%20observers%20for%20the%20given%20class%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2Ffunction%20ownObservers(constructor)%7Bif(!constructor.hasOwnProperty(JSCompiler_renameProperty('__ownObservers'%2Cconstructor)))%7Bconstructor.__ownObservers%3Dconstructor.hasOwnProperty(JSCompiler_renameProperty('observers'%2Cconstructor))%3F%2F**%20%40type%20%7BPolymerElementConstructor%7D%20*%2Fconstructor.observers%3Anull%3B%7Dreturn%20constructor.__ownObservers%3B%7D%2F**%0A%20%20%20%20%20*%20Creates%20effects%20for%20a%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%2C%20once%20a%20property%20has%20been%20set%20to%0A%20%20%20%20%20*%20%60readOnly%60%2C%20%60computed%60%2C%20%60reflectToAttribute%60%2C%20or%20%60notify%60%0A%20%20%20%20%20*%20these%20values%20may%20not%20be%20changed.%20For%20example%2C%20a%20subclass%20cannot%0A%20%20%20%20%20*%20alter%20these%20settings.%20However%2C%20additional%20%60observers%60%20may%20be%20added%0A%20%20%20%20%20*%20by%20subclasses.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20info%20object%20should%20contain%20property%20metadata%20as%20follows%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60type%60%3A%20%7Bfunction%7D%20type%20to%20which%20an%20attribute%20matching%20the%20property%0A%20%20%20%20%20*%20is%20deserialized.%20Note%20the%20property%20is%20camel-cased%20from%20a%20dash-cased%0A%20%20%20%20%20*%20attribute.%20For%20example%2C%20'foo-bar'%20attribute%20is%20deserialized%20to%20a%0A%20%20%20%20%20*%20property%20named%20'fooBar'.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60readOnly%60%3A%20%7Bboolean%7D%20creates%20a%20readOnly%20property%20and%0A%20%20%20%20%20*%20makes%20a%20private%20setter%20for%20the%20private%20of%20the%20form%20'_setFoo'%20for%20a%0A%20%20%20%20%20*%20property%20'foo'%2C%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60computed%60%3A%20%7Bstring%7D%20creates%20a%20computed%20property.%20A%20computed%20property%0A%20%20%20%20%20*%20is%20also%20automatically%20set%20to%20%60readOnly%3A%20true%60.%20The%20value%20is%20calculated%0A%20%20%20%20%20*%20by%20running%20a%20method%20and%20arguments%20parsed%20from%20the%20given%20string.%20For%0A%20%20%20%20%20*%20example%20'compute(foo)'%20will%20compute%20a%20given%20property%20when%20the%0A%20%20%20%20%20*%20'foo'%20property%20changes%20by%20executing%20the%20'compute'%20method.%20This%20method%0A%20%20%20%20%20*%20must%20return%20the%20computed%20value.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60reflectToAttribute%60%3A%20%7Bboolean%7D%20If%20true%2C%20the%20property%20value%20is%20reflected%0A%20%20%20%20%20*%20to%20an%20attribute%20of%20the%20same%20name.%20Note%2C%20the%20attribute%20is%20dash-cased%0A%20%20%20%20%20*%20so%20a%20property%20named%20'fooBar'%20is%20reflected%20as%20'foo-bar'.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60notify%60%3A%20%7Bboolean%7D%20sends%20a%20non-bubbling%20notification%20event%20when%0A%20%20%20%20%20*%20the%20property%20changes.%20For%20example%2C%20a%20property%20named%20'foo'%20sends%20an%0A%20%20%20%20%20*%20event%20named%20'foo-changed'%20with%20%60event.detail%60%20set%20to%20the%20value%20of%0A%20%20%20%20%20*%20the%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20observer%3A%20%7Bstring%7D%20name%20of%20a%20method%20that%20runs%20when%20the%20property%0A%20%20%20%20%20*%20changes.%20The%20arguments%20of%20the%20method%20are%20(value%2C%20previousValue).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20Users%20may%20want%20control%20over%20modifying%20property%0A%20%20%20%20%20*%20effects%20via%20subclassing.%20For%20example%2C%20a%20user%20might%20want%20to%20make%20a%0A%20%20%20%20%20*%20reflectToAttribute%20property%20not%20do%20so%20in%20a%20subclass.%20We've%20chosen%20to%0A%20%20%20%20%20*%20disable%20this%20because%20it%20leads%20to%20additional%20complication.%0A%20%20%20%20%20*%20For%20example%2C%20a%20readOnly%20effect%20generates%20a%20special%20setter.%20If%20a%20subclass%0A%20%20%20%20%20*%20disables%20the%20effect%2C%20the%20setter%20would%20fail%20unexpectedly.%0A%20%20%20%20%20*%20Based%20on%20feedback%2C%20we%20may%20want%20to%20try%20to%20make%20effects%20more%20malleable%0A%20%20%20%20%20*%20and%2For%20provide%20an%20advanced%20api%20for%20manipulating%20them.%0A%20%20%20%20%20*%20Also%20consider%20adding%20warnings%20when%20an%20effect%20cannot%20be%20changed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!PolymerElement%7D%20proto%20Element%20class%20prototype%20to%20add%20accessors%0A%20%20%20%20%20*%20%20%20and%20effects%20to%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20the%20property.%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20info%20Info%20object%20from%20which%20to%20create%20property%20effects.%0A%20%20%20%20%20*%20Supported%20keys%3A%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20allProps%20Flattened%20map%20of%20all%20properties%20defined%20in%20this%0A%20%20%20%20%20*%20%20%20element%20(including%20inherited%20properties)%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20createPropertyFromConfig(proto%2Cname%2Cinfo%2CallProps)%7B%2F%2F%20computed%20forces%20readOnly...%0Aif(info.computed)%7Binfo.readOnly%3Dtrue%3B%7D%2F%2F%20Note%2C%20since%20all%20computed%20properties%20are%20readOnly%2C%20this%20prevents%0A%2F%2F%20adding%20additional%20computed%20property%20effects%20(which%20leads%20to%20a%20confusing%0A%2F%2F%20setup%20where%20multiple%20triggers%20for%20setting%20a%20property)%0A%2F%2F%20While%20we%20do%20have%20%60hasComputedEffect%60%20this%20is%20set%20on%20the%20property's%0A%2F%2F%20dependencies%20rather%20than%20itself.%0Aif(info.computed%26%26!proto._hasReadOnlyEffect(name))%7Bproto._createComputedProperty(name%2Cinfo.computed%2CallProps)%3B%7Dif(info.readOnly%26%26!proto._hasReadOnlyEffect(name))%7Bproto._createReadOnlyProperty(name%2C!info.computed)%3B%7Dif(info.reflectToAttribute%26%26!proto._hasReflectEffect(name))%7Bproto._createReflectedProperty(name)%3B%7Dif(info.notify%26%26!proto._hasNotifyEffect(name))%7Bproto._createNotifyingProperty(name)%3B%7D%2F%2F%20always%20add%20observer%0Aif(info.observer)%7Bproto._createPropertyObserver(name%2Cinfo.observer%2CallProps%5Binfo.observer%5D)%3B%7D%2F%2F%20always%20create%20the%20mapping%20from%20attribute%20back%20to%20property%20for%20deserialization.%0Aproto._addPropertyToAttributeMap(name)%3B%7D%2F**%0A%20%20%20%20%20*%20Process%20all%20style%20elements%20in%20the%20element%20template.%20Styles%20with%20the%0A%20%20%20%20%20*%20%60include%60%20attribute%20are%20processed%20such%20that%20any%20styles%20in%0A%20%20%20%20%20*%20the%20associated%20%22style%20modules%22%20are%20included%20in%20the%20element%20template.%0A%20%20%20%20%20*%20%40param%20%7BPolymerElementConstructor%7D%20klass%20Element%20class%0A%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20process%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20is%20Name%20of%20element%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20for%20element%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20processElementStyles(klass%2Ctemplate%2Cis%2CbaseURI)%7Bif(!builtCSS)%7Bvar%20templateStyles%3Dtemplate.content.querySelectorAll('style')%3Bvar%20stylesWithImports%3DPolymer.StyleGather.stylesFromTemplate(template)%3B%2F%2F%20insert%20styles%20from%20%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%20at%20the%20top%20of%20the%20template%0Avar%20linkedStyles%3DPolymer.StyleGather.stylesFromModuleImports(is)%3Bvar%20firstTemplateChild%3Dtemplate.content.firstElementChild%3Bfor(var%20idx%3D0%3Bidx%3ClinkedStyles.length%3Bidx%2B%2B)%7Bvar%20s%3DlinkedStyles%5Bidx%5D%3Bs.textContent%3Dklass._processStyleText(s.textContent%2CbaseURI)%3Btemplate.content.insertBefore(s%2CfirstTemplateChild)%3B%7D%2F%2F%20keep%20track%20of%20the%20last%20%22concrete%22%20style%20in%20the%20template%20we%20have%20encountered%0Avar%20templateStyleIndex%3D0%3B%2F%2F%20ensure%20all%20gathered%20styles%20are%20actually%20in%20this%20template.%0Afor(var%20i%3D0%3Bi%3CstylesWithImports.length%3Bi%2B%2B)%7Bvar%20_s%3DstylesWithImports%5Bi%5D%3Bvar%20templateStyle%3DtemplateStyles%5BtemplateStyleIndex%5D%3B%2F%2F%20if%20the%20style%20is%20not%20in%20this%20template%2C%20it's%20been%20%22included%22%20and%0A%2F%2F%20we%20put%20a%20clone%20of%20it%20in%20the%20template%20before%20the%20style%20that%20included%20it%0Aif(templateStyle!%3D%3D_s)%7B_s%3D_s.cloneNode(true)%3BtemplateStyle.parentNode.insertBefore(_s%2CtemplateStyle)%3B%7Delse%7BtemplateStyleIndex%2B%2B%3B%7D_s.textContent%3Dklass._processStyleText(_s.textContent%2CbaseURI)%3B%7D%7Dif(window.ShadyCSS)%7Bwindow.ShadyCSS.prepareTemplate(template%2Cis)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Look%20up%20template%20from%20dom-module%20for%20element%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!string%7D%20is%20Element%20name%20to%20look%20up%0A%20%20%20%20%20*%20%40return%20%7B!HTMLTemplateElement%7D%20Template%20found%20in%20dom%20module%2C%20or%0A%20%20%20%20%20*%20%20%20undefined%20if%20not%20found%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2Ffunction%20getTemplateFromDomModule(is)%7Bvar%20template%3Dnull%3Bif(is%26%26Polymer.DomModule)%7Btemplate%3DPolymer.DomModule.import(is%2C'template')%3B%2F%2F%20Under%20strictTemplatePolicy%2C%20require%20any%20element%20with%20an%20%60is%60%0A%2F%2F%20specified%20to%20have%20a%20dom-module%0Aif(Polymer.strictTemplatePolicy%26%26!template)%7Bthrow%20new%20Error('strictTemplatePolicy%3A%20expecting%20dom-module%20or%20null%20template%20for%20'%2Bis)%3B%7D%7Dreturn%20template%3B%7D%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20%20%20*%2Fvar%20PolymerElement%3Dfunction(_polymerElementBase)%7B_inherits(PolymerElement%2C_polymerElementBase)%3B_createClass(PolymerElement%2Cnull%2C%5B%7Bkey%3A'_finalizeClass'%2C%2F**%0A%20%20%20%20%20%20%20*%20Override%20of%20PropertiesMixin%20_finalizeClass%20to%20create%20observers%20and%0A%20%20%20%20%20%20%20*%20find%20the%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_finalizeClass()%7B_get(PolymerElement.__proto__%7C%7CObject.getPrototypeOf(PolymerElement)%2C'_finalizeClass'%2Cthis).call(this)%3Bvar%20observers%3DownObservers(this)%3Bif(observers)%7Bthis.createObservers(observers%2Cthis._properties)%3B%7Dthis._prepareTemplate()%3B%7D%7D%2C%7Bkey%3A'_prepareTemplate'%2Cvalue%3Afunction%20_prepareTemplate()%7B%2F%2F%20note%3A%20create%20%22working%22%20template%20that%20is%20finalized%20at%20instance%20time%0Avar%20template%3D%2F**%20%40type%20%7BPolymerElementConstructor%7D%20*%2Fthis.template%3Bif(template)%7Bif(typeof%20template%3D%3D%3D'string')%7Bvar%20t%3Ddocument.createElement('template')%3Bt.innerHTML%3Dtemplate%3Btemplate%3Dt%3B%7Delse%20if(!Polymer.legacyOptimizations)%7Btemplate%3Dtemplate.cloneNode(true)%3B%7D%7Dthis.prototype._template%3Dtemplate%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20of%20PropertiesChanged%20createProperties%20to%20create%20accessors%0A%20%20%20%20%20%20%20*%20and%20property%20effects%20for%20all%20of%20the%20properties.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createProperties'%2Cvalue%3Afunction%20createProperties(props)%7Bfor(var%20p%20in%20props)%7BcreatePropertyFromConfig(this.prototype%2Cp%2Cprops%5Bp%5D%2Cprops)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20observers%20for%20the%20given%20%60observers%60%20array.%0A%20%20%20%20%20%20%20*%20Leverages%20%60PropertyEffects%60%20to%20create%20observers.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20observers%20Array%20of%20observer%20descriptors%20for%0A%20%20%20%20%20%20%20*%20%20%20this%20class%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20dynamicFns%20Object%20containing%20keys%20for%20any%20properties%0A%20%20%20%20%20%20%20*%20%20%20that%20are%20functions%20and%20should%20trigger%20the%20effect%20when%20the%20function%0A%20%20%20%20%20%20%20*%20%20%20reference%20is%20changed%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createObservers'%2Cvalue%3Afunction%20createObservers(observers%2CdynamicFns)%7Bvar%20proto%3Dthis.prototype%3Bfor(var%20i%3D0%3Bi%3Cobservers.length%3Bi%2B%2B)%7Bproto._createMethodObserver(observers%5Bi%5D%2CdynamicFns)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20template%20that%20will%20be%20stamped%20into%20this%20element's%20shadow%20root.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20a%20%60static%20get%20is()%60%20getter%20is%20defined%2C%20the%20default%20implementation%0A%20%20%20%20%20%20%20*%20will%20return%20the%20first%20%60%3Ctemplate%3E%60%20in%20a%20%60dom-module%60%20whose%20%60id%60%0A%20%20%20%20%20%20%20*%20matches%20this%20element's%20%60is%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20getter%20to%20return%20an%20arbitrary%20template%0A%20%20%20%20%20%20%20*%20(in%20which%20case%20the%20%60is%60%20getter%20is%20unnecessary).%20The%20template%20returned%0A%20%20%20%20%20%20%20*%20may%20be%20either%20an%20%60HTMLTemplateElement%60%20or%20a%20string%20that%20will%20be%0A%20%20%20%20%20%20%20*%20automatically%20parsed%20into%20a%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20when%20subclassing%2C%20if%20the%20super%20class%20overrode%20the%20default%0A%20%20%20%20%20%20%20*%20implementation%20and%20the%20subclass%20would%20like%20to%20provide%20an%20alternate%0A%20%20%20%20%20%20%20*%20template%20via%20a%20%60dom-module%60%2C%20it%20should%20override%20this%20getter%20and%0A%20%20%20%20%20%20%20*%20return%20%60Polymer.DomModule.import(this.is%2C%20'template')%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20a%20subclass%20would%20like%20to%20modify%20the%20super%20class%20template%2C%20it%20should%0A%20%20%20%20%20%20%20*%20clone%20it%20rather%20than%20modify%20it%20in%20place.%20%20If%20the%20getter%20does%20expensive%0A%20%20%20%20%20%20%20*%20work%20such%20as%20cloning%2Fmodifying%20a%20template%2C%20it%20should%20memoize%20the%0A%20%20%20%20%20%20%20*%20template%20for%20maximum%20performance%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20let%20memoizedTemplate%3B%0A%20%20%20%20%20%20%20*%20%20%20class%20MySubClass%20extends%20MySuperClass%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20static%20get%20template()%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20if%20(!memoizedTemplate)%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20memoizedTemplate%20%3D%20MySuperClass.template.cloneNode(true)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20let%20subContent%20%3D%20document.createElement('div')%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20subContent.textContent%20%3D%20'This%20came%20from%20MySubClass'%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20memoizedTemplate.content.appendChild(subContent)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20return%20memoizedTemplate%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7BHTMLTemplateElement%7Cstring%7D%20Template%20to%20be%20stamped%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'template'%2Cget%3Afunction%20get()%7B%2F%2F%20Explanation%20of%20template-related%20properties%3A%0A%2F%2F%20-%20constructor.template%20(this%20getter)%3A%20the%20template%20for%20the%20class.%0A%2F%2F%20%20%20%20%20This%20can%20come%20from%20the%20prototype%20(for%20legacy%20elements)%2C%20from%20a%0A%2F%2F%20%20%20%20%20dom-module%2C%20or%20from%20the%20super%20class's%20template%20(or%20can%20be%20overridden%0A%2F%2F%20%20%20%20%20altogether%20by%20the%20user)%0A%2F%2F%20-%20constructor._template%3A%20memoized%20version%20of%20constructor.template%0A%2F%2F%20-%20prototype._template%3A%20working%20template%20for%20the%20element%2C%20which%20will%20be%0A%2F%2F%20%20%20%20%20parsed%20and%20modified%20in%20place.%20It%20is%20a%20cloned%20version%20of%0A%2F%2F%20%20%20%20%20constructor.template%2C%20saved%20in%20_finalizeClass().%20Note%20that%20before%0A%2F%2F%20%20%20%20%20this%20getter%20is%20called%2C%20for%20legacy%20elements%20this%20could%20be%20from%20a%0A%2F%2F%20%20%20%20%20_template%20field%20on%20the%20info%20object%20passed%20to%20Polymer()%2C%20a%20behavior%2C%0A%2F%2F%20%20%20%20%20or%20set%20in%20registered()%3B%20once%20the%20static%20getter%20runs%2C%20a%20clone%20of%20it%0A%2F%2F%20%20%20%20%20will%20overwrite%20it%20on%20the%20prototype%20as%20the%20working%20template.%0Aif(!this.hasOwnProperty(JSCompiler_renameProperty('_template'%2Cthis)))%7Bthis._template%3D%2F%2F%20If%20user%20has%20put%20template%20on%20prototype%20(e.g.%20in%20legacy%20via%20registered%0A%2F%2F%20callback%20or%20info%20object)%2C%20prefer%20that%20first%0Athis.prototype.hasOwnProperty(JSCompiler_renameProperty('_template'%2Cthis.prototype))%3Fthis.prototype._template%3A%2F%2F%20Look%20in%20dom-module%20associated%20with%20this%20element's%20is%0AgetTemplateFromDomModule(%2F**%20%40type%20%7BPolymerElementConstructor%7D*%2Fthis.is)%7C%7C%2F%2F%20Next%20look%20for%20superclass%20template%20(call%20the%20super%20impl%20this%0A%2F%2F%20way%20so%20that%20%60this%60%20points%20to%20the%20superclass)%0AObject.getPrototypeOf(%2F**%20%40type%20%7BPolymerElementConstructor%7D*%2Fthis.prototype).constructor.template%3B%7Dreturn%20this._template%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7Cstring%7D%20value%20Template%20to%20set.%0A%20%20%20%20%20%20%20*%2F%2Cset%3Afunction%20set(value)%7Bthis._template%3Dvalue%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Path%20matching%20the%20url%20from%20which%20the%20element%20was%20imported.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20path%20is%20used%20to%20resolve%20url's%20in%20template%20style%20cssText.%0A%20%20%20%20%20%20%20*%20The%20%60importPath%60%20property%20is%20also%20set%20on%20element%20instances%20and%20can%20be%0A%20%20%20%20%20%20%20*%20used%20to%20create%20bindings%20relative%20to%20the%20import%20path.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20For%20elements%20defined%20in%20ES%20modules%2C%20users%20should%20implement%0A%20%20%20%20%20%20%20*%20%60static%20get%20importMeta()%20%7B%20return%20import.meta%3B%20%7D%60%2C%20and%20the%20default%0A%20%20%20%20%20%20%20*%20implementation%20of%20%60importPath%60%20will%20%20return%20%60import.meta.url%60's%20path.%0A%20%20%20%20%20%20%20*%20For%20elements%20defined%20in%20HTML%20imports%2C%20this%20getter%20will%20return%20the%20path%0A%20%20%20%20%20%20%20*%20to%20the%20document%20containing%20a%20%60dom-module%60%20element%20matching%20this%0A%20%20%20%20%20%20%20*%20element's%20static%20%60is%60%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20this%20path%20should%20contain%20a%20trailing%20%60%2F%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20The%20import%20path%20for%20this%20element%20class%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'importPath'%2Cget%3Afunction%20get()%7Bif(!this.hasOwnProperty(JSCompiler_renameProperty('_importPath'%2Cthis)))%7Bvar%20meta%3Dthis.importMeta%3Bif(meta)%7Bthis._importPath%3DPolymer.ResolveUrl.pathFromUrl(meta.url)%3B%7Delse%7Bvar%20module%3DPolymer.DomModule%26%26Polymer.DomModule.import(%2F**%20%40type%20%7BPolymerElementConstructor%7D%20*%2Fthis.is)%3Bthis._importPath%3Dmodule%26%26module.assetpath%7C%7CObject.getPrototypeOf(%2F**%20%40type%20%7BPolymerElementConstructor%7D*%2Fthis.prototype).constructor.importPath%3B%7D%7Dreturn%20this._importPath%3B%7D%7D%5D)%3Bfunction%20PolymerElement()%7B_classCallCheck(this%2CPolymerElement)%3B%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Fvar%20_this%3D_possibleConstructorReturn(this%2C(PolymerElement.__proto__%7C%7CObject.getPrototypeOf(PolymerElement)).call(this))%3B_this._template%3B%2F**%20%40type%20%7Bstring%7D%20*%2F_this._importPath%3B%2F**%20%40type%20%7Bstring%7D%20*%2F_this.rootPath%3B%2F**%20%40type%20%7Bstring%7D%20*%2F_this.importPath%3B%2F**%20%40type%20%7BStampedTemplate%20%7C%20HTMLElement%20%7C%20ShadowRoot%7D%20*%2F_this.root%3B%2F**%20%40type%20%7B!Object%3Cstring%2C%20!Element%3E%7D%20*%2F_this.%24%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20default%20%60Polymer.PropertyAccessors%60%20to%20ensure%20class%0A%20%20%20%20%20%20%20*%20metaprogramming%20related%20to%20property%20accessors%20and%20effects%20has%0A%20%20%20%20%20%20%20*%20completed%20(calls%20%60finalize%60).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20It%20also%20initializes%20any%20property%20defaults%20provided%20via%20%60value%60%20in%0A%20%20%20%20%20%20%20*%20%60properties%60%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F_createClass(PolymerElement%2C%5B%7Bkey%3A'_initializeProperties'%2Cvalue%3Afunction%20_initializeProperties()%7Bthis.constructor.finalize()%3B%2F%2F%20note%3A%20finalize%20template%20when%20we%20have%20access%20to%20%60localName%60%20to%0A%2F%2F%20avoid%20dependence%20on%20%60is%60%20for%20polyfilling%20styling.%0Athis.constructor._finalizeTemplate(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis.localName)%3B_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3B%2F%2F%20set%20path%20defaults%0Athis.rootPath%3DPolymer.rootPath%3Bthis.importPath%3Dthis.constructor.importPath%3B%2F%2F%20apply%20property%20defaults...%0Avar%20p%24%3DpropertyDefaults(this.constructor)%3Bif(!p%24)%7Breturn%3B%7Dfor(var%20p%20in%20p%24)%7Bvar%20info%3Dp%24%5Bp%5D%3B%2F%2F%20Don't%20set%20default%20value%20if%20there%20is%20already%20an%20own%20property%2C%20which%0A%2F%2F%20happens%20when%20a%20%60properties%60%20property%20with%20default%20but%20no%20effects%20had%0A%2F%2F%20a%20property%20set%20(e.g.%20bound)%20by%20its%20host%20before%20upgrade%0Aif(!this.hasOwnProperty(p))%7Bvar%20value%3Dtypeof%20info.value%3D%3D'function'%3Finfo.value.call(this)%3Ainfo.value%3B%2F%2F%20Set%20via%20%60_setProperty%60%20if%20there%20is%20an%20accessor%2C%20to%20enable%0A%2F%2F%20initializing%20readOnly%20property%20defaults%0Aif(this._hasAccessor(p))%7Bthis._setPendingProperty(p%2Cvalue%2Ctrue)%3B%7Delse%7Bthis%5Bp%5D%3Dvalue%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Gather%20style%20text%20for%20a%20style%20element%20in%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20cssText%20Text%20containing%20styling%20to%20process%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20to%20rebase%20CSS%20paths%20against%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20The%20processed%20CSS%20text%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2C%2F**%0A%20%20%20%20%20%20%20*%20Provides%20a%20default%20implementation%20of%20the%20standard%20Custom%20Elements%0A%20%20%20%20%20%20%20*%20%60connectedCallback%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20enables%20the%20property%20effects%20system%20and%0A%20%20%20%20%20%20%20*%20flushes%20any%20pending%20properties%2C%20and%20updates%20shimmed%20CSS%20properties%0A%20%20%20%20%20%20%20*%20when%20using%20the%20ShadyCSS%20scoping%2Fcustom%20properties%20polyfill.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%2C%20invalidCasts%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20connectedCallback()%7Bif(window.ShadyCSS%26%26this._template)%7Bwindow.ShadyCSS.styleElement(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis)%3B%7D_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'connectedCallback'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Stamps%20the%20element%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7Bif(this._template)%7Bthis.root%3Dthis._stampTemplate(this._template)%3Bthis.%24%3Dthis.root.%24%3B%7D_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'ready'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Implements%20%60PropertyEffects%60's%20%60_readyClients%60%20call.%20Attaches%0A%20%20%20%20%20%20%20*%20element%20dom%20by%20calling%20%60_attachDom%60%20with%20the%20dom%20stamped%20from%20the%0A%20%20%20%20%20%20%20*%20element's%20template%20via%20%60_stampTemplate%60.%20Note%20that%20this%20allows%0A%20%20%20%20%20%20%20*%20client%20dom%20to%20be%20attached%20to%20the%20element%20prior%20to%20any%20observers%0A%20%20%20%20%20%20%20*%20running.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_readyClients'%2Cvalue%3Afunction%20_readyClients()%7Bif(this._template)%7Bthis.root%3Dthis._attachDom(%2F**%20%40type%20%7BStampedTemplate%7D%20*%2Fthis.root)%3B%7D%2F%2F%20The%20super._readyClients%20here%20sets%20the%20clients%20initialized%20flag.%0A%2F%2F%20We%20must%20wait%20to%20do%20this%20until%20after%20client%20dom%20is%20created%2Fattached%0A%2F%2F%20so%20that%20this%20flag%20can%20be%20checked%20to%20prevent%20notifications%20fired%0A%2F%2F%20during%20this%20process%20from%20being%20handled%20before%20clients%20are%20ready.%0A_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'_readyClients'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Attaches%20an%20element's%20stamped%20dom%20to%20itself.%20By%20default%2C%0A%20%20%20%20%20%20%20*%20this%20method%20creates%20a%20%60shadowRoot%60%20and%20adds%20the%20dom%20to%20it.%0A%20%20%20%20%20%20%20*%20However%2C%20this%20method%20may%20be%20overridden%20to%20allow%20an%20element%0A%20%20%20%20%20%20%20*%20to%20put%20its%20dom%20in%20another%20location.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40throws%20%7BError%7D%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingReturn%7D%0A%20%20%20%20%20%20%20*%20%40param%20%7BStampedTemplate%7D%20dom%20to%20attach%20to%20the%20element.%0A%20%20%20%20%20%20%20*%20%40return%20%7BShadowRoot%7D%20node%20to%20which%20the%20dom%20has%20been%20attached.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_attachDom'%2Cvalue%3Afunction%20_attachDom(dom)%7Bif(this.attachShadow)%7Bif(dom)%7Bif(!this.shadowRoot)%7Bthis.attachShadow(%7Bmode%3A'open'%7D)%3B%7Dthis.shadowRoot.appendChild(dom)%3Breturn%20this.shadowRoot%3B%7Dreturn%20null%3B%7Delse%7Bthrow%20new%20Error('ShadowDOM%20not%20available.%20'%2B%2F%2F%20TODO(sorvell)%3A%20move%20to%20compile-time%20conditional%20when%20supported%0A'Polymer.Element%20can%20create%20dom%20as%20children%20instead%20of%20in%20'%2B'ShadowDOM%20by%20setting%20%60this.root%20%3D%20this%3B%5C%60%20before%20%5C%60ready%5C%60.')%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20When%20using%20the%20ShadyCSS%20scoping%20and%20custom%20property%20shim%2C%20causes%20all%0A%20%20%20%20%20%20%20*%20shimmed%20styles%20in%20this%20element%20(and%20its%20subtree)%20to%20be%20updated%0A%20%20%20%20%20%20%20*%20based%20on%20current%20custom%20property%20values.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20optional%20parameter%20overrides%20inline%20custom%20property%20styles%20with%20an%0A%20%20%20%20%20%20%20*%20object%20of%20properties%20where%20the%20keys%20are%20CSS%20properties%2C%20and%20the%20values%0A%20%20%20%20%20%20%20*%20are%20strings.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%20%60this.updateStyles(%7B'--color'%3A%20'blue'%7D)%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20These%20properties%20are%20retained%20unless%20a%20value%20of%20%60null%60%20is%20set.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%3A%20This%20function%20does%20not%20support%20updating%20CSS%20mixins.%0A%20%20%20%20%20%20%20*%20You%20can%20not%20dynamically%20change%20the%20value%20of%20an%20%60%40apply%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20properties%20Bag%20of%20custom%20property%20key%2Fvalues%20to%0A%20%20%20%20%20%20%20*%20%20%20apply%20to%20this%20element.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'updateStyles'%2Cvalue%3Afunction%20updateStyles(properties)%7Bif(window.ShadyCSS)%7Bwindow.ShadyCSS.styleSubtree(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis%2Cproperties)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Rewrites%20a%20given%20URL%20relative%20to%20a%20base%20URL.%20The%20base%20URL%20defaults%20to%0A%20%20%20%20%20%20%20*%20the%20original%20location%20of%20the%20document%20containing%20the%20%60dom-module%60%20for%0A%20%20%20%20%20%20%20*%20this%20element.%20This%20method%20will%20return%20the%20same%20URL%20before%20and%20after%0A%20%20%20%20%20%20%20*%20bundling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20this%20function%20performs%20no%20resolution%20for%20URLs%20that%20start%0A%20%20%20%20%20%20%20*%20with%20%60%2F%60%20(absolute%20URLs)%20or%20%60%23%60%20(hash%20identifiers).%20%20For%20general%20purpose%0A%20%20%20%20%20%20%20*%20URL%20resolution%2C%20use%20%60window.URL%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20url%20URL%20to%20resolve.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20base%20Optional%20base%20URL%20to%20resolve%20against%2C%20defaults%0A%20%20%20%20%20%20%20*%20to%20the%20element's%20%60importPath%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Rewritten%20URL%20relative%20to%20base%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'resolveUrl'%2Cvalue%3Afunction%20resolveUrl(url%2Cbase)%7Bif(!base%26%26this.importPath)%7Bbase%3DPolymer.ResolveUrl.resolveUrl(this.importPath)%3B%7Dreturn%20Polymer.ResolveUrl.resolveUrl(url%2Cbase)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessors%60%20to%20add%20map%20of%20dynamic%20functions%20on%0A%20%20%20%20%20%20%20*%20template%20info%2C%20for%20consumption%20by%20%60PropertyEffects%60%20template%20binding%0A%20%20%20%20%20%20%20*%20code.%20This%20map%20determines%20which%20method%20templates%20should%20have%20accessors%0A%20%20%20%20%20%20%20*%20created%20for%20them.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%5D%2C%5B%7Bkey%3A'_processStyleText'%2Cvalue%3Afunction%20_processStyleText(cssText%2CbaseURI)%7Breturn%20Polymer.ResolveUrl.resolveCss(cssText%2CbaseURI)%3B%7D%2F**%0A%20%20%20%20%20%20*%20Configures%20an%20element%20%60proto%60%20to%20function%20with%20a%20given%20%60template%60.%0A%20%20%20%20%20%20*%20The%20element%20name%20%60is%60%20and%20extends%20%60ext%60%20must%20be%20specified%20for%20ShadyCSS%0A%20%20%20%20%20%20*%20style%20scoping.%0A%20%20%20%20%20%20*%0A%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20is%20Tag%20name%20(or%20type%20extension%20name)%20for%20this%20element%0A%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_finalizeTemplate'%2Cvalue%3Afunction%20_finalizeTemplate(is)%7B%2F**%20%40const%20%7BHTMLTemplateElement%7D%20*%2Fvar%20template%3Dthis.prototype._template%3Bif(template%26%26!template.__polymerFinalized)%7Btemplate.__polymerFinalized%3Dtrue%3Bvar%20importPath%3Dthis.importPath%3Bvar%20baseURI%3DimportPath%3FPolymer.ResolveUrl.resolveUrl(importPath)%3A''%3B%2F%2F%20e.g.%20support%20%60include%3D%22module-name%22%60%2C%20and%20ShadyCSS%0AprocessElementStyles(this%2Ctemplate%2Cis%2CbaseURI)%3Bthis.prototype._bindTemplate(template)%3B%7D%7D%7D%2C%7Bkey%3A'_parseTemplateContent'%2Cvalue%3Afunction%20_parseTemplateContent(template%2CtemplateInfo%2CnodeInfo)%7BtemplateInfo.dynamicFns%3DtemplateInfo.dynamicFns%7C%7Cthis._properties%3Breturn%20_get(PolymerElement.__proto__%7C%7CObject.getPrototypeOf(PolymerElement)%2C'_parseTemplateContent'%2Cthis).call(this%2Ctemplate%2CtemplateInfo%2CnodeInfo)%3B%7D%7D%5D)%3Breturn%20PolymerElement%3B%7D(polymerElementBase)%3Breturn%20PolymerElement%3B%7D)%3B%2F**%0A%20%20%20*%20When%20using%20the%20ShadyCSS%20scoping%20and%20custom%20property%20shim%2C%20causes%20all%0A%20%20%20*%20shimmed%20%60styles%60%20(via%20%60custom-style%60)%20in%20the%20document%20(and%20its%20subtree)%0A%20%20%20*%20to%20be%20updated%20based%20on%20current%20custom%20property%20values.%0A%20%20%20*%0A%20%20%20*%20The%20optional%20parameter%20overrides%20inline%20custom%20property%20styles%20with%20an%0A%20%20%20*%20object%20of%20properties%20where%20the%20keys%20are%20CSS%20properties%2C%20and%20the%20values%0A%20%20%20*%20are%20strings.%0A%20%20%20*%0A%20%20%20*%20Example%3A%20%60Polymer.updateStyles(%7B'--color'%3A%20'blue'%7D)%60%0A%20%20%20*%0A%20%20%20*%20These%20properties%20are%20retained%20unless%20a%20value%20of%20%60null%60%20is%20set.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%3D%7D%20props%20Bag%20of%20custom%20property%20key%2Fvalues%20to%0A%20%20%20*%20%20%20apply%20to%20the%20document.%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.updateStyles%3Dfunction(props)%7Bif(window.ShadyCSS)%7Bwindow.ShadyCSS.styleDocument(props)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Felement-mixin.html.js%0A",
            "resourceBytes": 30666,
            "encodedBytes": 0,
            "unusedBytes": 2273
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20%40summary%20Collapse%20multiple%20callbacks%20into%20one%20invocation%20after%20a%20timer.%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2Fvar%20Debouncer%3Dfunction()%7Bfunction%20Debouncer()%7B_classCallCheck(this%2CDebouncer)%3Bthis._asyncModule%3Dnull%3Bthis._callback%3Dnull%3Bthis._timer%3Dnull%3B%7D%2F**%0A%20%20%20%20%20*%20Sets%20the%20scheduler%3B%20that%20is%2C%20a%20module%20with%20the%20Async%20interface%2C%0A%20%20%20%20%20*%20a%20callback%20and%20optional%20arguments%20to%20be%20passed%20to%20the%20run%20function%0A%20%20%20%20%20*%20from%20the%20async%20module.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!AsyncInterface%7D%20asyncModule%20Object%20with%20Async%20interface.%0A%20%20%20%20%20*%20%40param%20%7Bfunction()%7D%20callback%20Callback%20to%20run.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_createClass(Debouncer%2C%5B%7Bkey%3A'setConfig'%2Cvalue%3Afunction%20setConfig(asyncModule%2Ccallback)%7Bvar%20_this%3Dthis%3Bthis._asyncModule%3DasyncModule%3Bthis._callback%3Dcallback%3Bthis._timer%3Dthis._asyncModule.run(function()%7B_this._timer%3Dnull%3B_this._callback()%3B%7D)%3B%7D%2F**%0A%20%20%20%20%20*%20Cancels%20an%20active%20debouncer%20and%20returns%20a%20reference%20to%20itself.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'cancel'%2Cvalue%3Afunction%20cancel()%7Bif(this.isActive())%7Bthis._asyncModule.cancel(this._timer)%3Bthis._timer%3Dnull%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Flushes%20an%20active%20debouncer%20and%20returns%20a%20reference%20to%20itself.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'flush'%2Cvalue%3Afunction%20flush()%7Bif(this.isActive())%7Bthis.cancel()%3Bthis._callback()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20debouncer%20is%20active.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20active.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isActive'%2Cvalue%3Afunction%20isActive()%7Breturn%20this._timer!%3Dnull%3B%7D%2F**%0A%20%20%20%20%20*%20Creates%20a%20debouncer%20if%20no%20debouncer%20is%20passed%20as%20a%20parameter%0A%20%20%20%20%20*%20or%20it%20cancels%20an%20active%20debouncer%20otherwise.%20The%20following%0A%20%20%20%20%20*%20example%20shows%20how%20a%20debouncer%20can%20be%20called%20multiple%20times%20within%20a%0A%20%20%20%20%20*%20microtask%20and%20%22debounced%22%20such%20that%20the%20provided%20callback%20function%20is%0A%20%20%20%20%20*%20called%20once.%20Add%20this%20method%20to%20a%20custom%20element%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20_debounceWork()%20%7B%0A%20%20%20%20%20*%20%20%20this._debounceJob%20%3D%20Polymer.Debouncer.debounce(this._debounceJob%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20Polymer.Async.microTask%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20*%20%20%20%20%20this._doWork()%3B%0A%20%20%20%20%20*%20%20%20%7D)%3B%0A%20%20%20%20%20*%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20If%20the%20%60_debounceWork%60%20method%20is%20called%20multiple%20times%20within%20the%20same%0A%20%20%20%20%20*%20microtask%2C%20the%20%60_doWork%60%20function%20will%20be%20called%20only%20once%20at%20the%20next%0A%20%20%20%20%20*%20microtask%20checkpoint.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20In%20testing%20it%20is%20often%20convenient%20to%20avoid%20asynchrony.%20To%20accomplish%0A%20%20%20%20%20*%20this%20with%20a%20debouncer%2C%20you%20can%20use%20%60Polymer.enqueueDebouncer%60%20and%0A%20%20%20%20%20*%20%60Polymer.flush%60.%20For%20example%2C%20extend%20the%20above%20example%20by%20adding%0A%20%20%20%20%20*%20%60Polymer.enqueueDebouncer(this._debounceJob)%60%20at%20the%20end%20of%20the%0A%20%20%20%20%20*%20%60_debounceWork%60%20method.%20Then%20in%20a%20test%2C%20call%20%60Polymer.flush%60%20to%20ensure%0A%20%20%20%20%20*%20the%20debouncer%20has%20completed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BDebouncer%3F%7D%20debouncer%20Debouncer%20object.%0A%20%20%20%20%20*%20%40param%20%7B!AsyncInterface%7D%20asyncModule%20Object%20with%20Async%20interface%0A%20%20%20%20%20*%20%40param%20%7Bfunction()%7D%20callback%20Callback%20to%20run.%0A%20%20%20%20%20*%20%40return%20%7B!Debouncer%7D%20Returns%20a%20debouncer%20object.%0A%20%20%20%20%20*%2F%7D%5D%2C%5B%7Bkey%3A'debounce'%2Cvalue%3Afunction%20debounce(debouncer%2CasyncModule%2Ccallback)%7Bif(debouncer%20instanceof%20Debouncer)%7Bdebouncer.cancel()%3B%7Delse%7Bdebouncer%3Dnew%20Debouncer()%3B%7Ddebouncer.setConfig(asyncModule%2Ccallback)%3Breturn%20debouncer%3B%7D%7D%5D)%3Breturn%20Debouncer%3B%7D()%3B%2F**%20%40const%20*%2FPolymer.Debouncer%3DDebouncer%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fdebounce.html.js%0A",
            "resourceBytes": 3961,
            "encodedBytes": 0,
            "unusedBytes": 862
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20detect%20native%20touch%20action%20support%0Avar%20HAS_NATIVE_TA%3Dtypeof%20document.head.style.touchAction%3D%3D%3D'string'%3Bvar%20GESTURE_KEY%3D'__polymerGestures'%3Bvar%20HANDLED_OBJ%3D'__polymerGesturesHandled'%3Bvar%20TOUCH_ACTION%3D'__polymerGesturesTouchAction'%3B%2F%2F%20radius%20for%20tap%20and%20track%0Avar%20TAP_DISTANCE%3D25%3Bvar%20TRACK_DISTANCE%3D5%3B%2F%2F%20number%20of%20last%20N%20track%20positions%20to%20keep%0Avar%20TRACK_LENGTH%3D2%3B%2F%2F%20Disabling%20%22mouse%22%20handlers%20for%202500ms%20is%20enough%0Avar%20MOUSE_TIMEOUT%3D2500%3Bvar%20MOUSE_EVENTS%3D%5B'mousedown'%2C'mousemove'%2C'mouseup'%2C'click'%5D%3B%2F%2F%20an%20array%20of%20bitmask%20values%20for%20mapping%20MouseEvent.which%20to%20MouseEvent.buttons%0Avar%20MOUSE_WHICH_TO_BUTTONS%3D%5B0%2C1%2C4%2C2%5D%3Bvar%20MOUSE_HAS_BUTTONS%3Dfunction()%7Btry%7Breturn%20new%20MouseEvent('test'%2C%7Bbuttons%3A1%7D).buttons%3D%3D%3D1%3B%7Dcatch(e)%7Breturn%20false%3B%7D%7D()%3B%2F**%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%20Possible%20mouse%20event%20name%0A%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20mouse%20event%2C%20false%20if%20not%0A%20%20%20*%2Ffunction%20isMouseEvent(name)%7Breturn%20MOUSE_EVENTS.indexOf(name)%3E-1%3B%7D%2F*%20eslint%20no-empty%3A%20%5B%22error%22%2C%20%7B%20%22allowEmptyCatch%22%3A%20true%20%7D%5D%20*%2F%2F%2F%20check%20for%20passive%20event%20listeners%0Avar%20SUPPORTS_PASSIVE%3Dfalse%3B(function()%7Btry%7Bvar%20opts%3DObject.defineProperty(%7B%7D%2C'passive'%2C%7Bget%3Afunction%20get()%7BSUPPORTS_PASSIVE%3Dtrue%3B%7D%7D)%3Bwindow.addEventListener('test'%2Cnull%2Copts)%3Bwindow.removeEventListener('test'%2Cnull%2Copts)%3B%7Dcatch(e)%7B%7D%7D)()%3B%2F**%0A%20%20%20*%20Generate%20settings%20for%20event%20listeners%2C%20dependant%20on%20%60Polymer.passiveTouchGestures%60%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Event%20name%20to%20determine%20if%20%60%7Bpassive%7D%60%20option%20is%20needed%0A%20%20%20*%20%40return%20%7B%7Bpassive%3A%20boolean%7D%20%7C%20undefined%7D%20Options%20to%20use%20for%20addEventListener%20and%20removeEventListener%0A%20%20%20*%2Ffunction%20PASSIVE_TOUCH(eventName)%7Bif(isMouseEvent(eventName)%7C%7CeventName%3D%3D%3D'touchend')%7Breturn%3B%7Dif(HAS_NATIVE_TA%26%26SUPPORTS_PASSIVE%26%26Polymer.passiveTouchGestures)%7Breturn%7Bpassive%3Atrue%7D%3B%7Delse%7Breturn%3B%7D%7D%2F%2F%20Check%20for%20touch-only%20devices%0Avar%20IS_TOUCH_ONLY%3Dnavigator.userAgent.match(%2FiP(%3F%3A%5Boa%5Dd%7Chone)%7CAndroid%2F)%3Bvar%20GestureRecognizer%3Dfunction%20GestureRecognizer()%7B%7D%3B%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%20%40type%20%7Bfunction()%3A%20void%7D%20*%2FGestureRecognizer.prototype.reset%3B%2F**%20%40type%20%7Bfunction(MouseEvent)%3A%20void%20%7C%20undefined%7D%20*%2FGestureRecognizer.prototype.mousedown%3B%2F**%20%40type%20%7B(function(MouseEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.mousemove%3B%2F**%20%40type%20%7B(function(MouseEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.mouseup%3B%2F**%20%40type%20%7B(function(TouchEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.touchstart%3B%2F**%20%40type%20%7B(function(TouchEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.touchmove%3B%2F**%20%40type%20%7B(function(TouchEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.touchend%3B%2F**%20%40type%20%7B(function(MouseEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.click%3B%2F%2F%20keep%20track%20of%20any%20labels%20hit%20by%20the%20mouseCanceller%0A%2F**%20%40type%20%7B!Array%3C!HTMLLabelElement%3E%7D%20*%2Fvar%20clickedLabels%3D%5B%5D%3B%2F**%20%40type%20%7B!Object%3Cboolean%3E%7D%20*%2Fvar%20labellable%3D%7B'button'%3Atrue%2C'input'%3Atrue%2C'keygen'%3Atrue%2C'meter'%3Atrue%2C'output'%3Atrue%2C'textarea'%3Atrue%2C'progress'%3Atrue%2C'select'%3Atrue%7D%3B%2F%2F%20Defined%20at%20https%3A%2F%2Fhtml.spec.whatwg.org%2Fmultipage%2Fform-control-infrastructure.html%23enabling-and-disabling-form-controls%3A-the-disabled-attribute%0A%2F**%20%40type%20%7B!Object%3Cboolean%3E%7D%20*%2Fvar%20canBeDisabled%3D%7B'button'%3Atrue%2C'command'%3Atrue%2C'fieldset'%3Atrue%2C'input'%3Atrue%2C'keygen'%3Atrue%2C'optgroup'%3Atrue%2C'option'%3Atrue%2C'select'%3Atrue%2C'textarea'%3Atrue%7D%3B%2F**%0A%20%20%20*%20%40param%20%7BHTMLElement%7D%20el%20Element%20to%20check%20labelling%20status%0A%20%20%20*%20%40return%20%7Bboolean%7D%20element%20can%20have%20labels%0A%20%20%20*%2Ffunction%20canBeLabelled(el)%7Breturn%20labellable%5Bel.localName%5D%7C%7Cfalse%3B%7D%2F**%0A%20%20%20*%20%40param%20%7BHTMLElement%7D%20el%20Element%20that%20may%20be%20labelled.%0A%20%20%20*%20%40return%20%7B!Array%3C!HTMLLabelElement%3E%7D%20Relevant%20label%20for%20%60el%60%0A%20%20%20*%2Ffunction%20matchingLabels(el)%7Bvar%20labels%3DArray.from(%2F**%20%40type%20%7BHTMLInputElement%7D%20*%2Fel.labels%7C%7C%5B%5D)%3B%2F%2F%20IE%20doesn't%20have%20%60labels%60%20and%20Safari%20doesn't%20populate%20%60labels%60%0A%2F%2F%20if%20element%20is%20in%20a%20shadowroot.%0A%2F%2F%20In%20this%20instance%2C%20finding%20the%20non-ancestor%20labels%20is%20enough%2C%0A%2F%2F%20as%20the%20mouseCancellor%20code%20will%20handle%20ancstor%20labels%0Aif(!labels.length)%7Blabels%3D%5B%5D%3Bvar%20root%3Del.getRootNode()%3B%2F%2F%20if%20there%20is%20an%20id%20on%20%60el%60%2C%20check%20for%20all%20labels%20with%20a%20matching%20%60for%60%20attribute%0Aif(el.id)%7Bvar%20matching%3Droot.querySelectorAll('label%5Bfor%20%3D%20'%2Bel.id%2B'%5D')%3Bfor(var%20i%3D0%3Bi%3Cmatching.length%3Bi%2B%2B)%7Blabels.push(%2F**%20%40type%20%7B!HTMLLabelElement%7D%20*%2Fmatching%5Bi%5D)%3B%7D%7D%7Dreturn%20labels%3B%7D%2F%2F%20touch%20will%20make%20synthetic%20mouse%20events%0A%2F%2F%20%60preventDefault%60%20on%20touchend%20will%20cancel%20them%2C%0A%2F%2F%20but%20this%20breaks%20%60%3Cinput%3E%60%20focus%20and%20link%20clicks%0A%2F%2F%20disable%20mouse%20handlers%20for%20MOUSE_TIMEOUT%20ms%20after%0A%2F%2F%20a%20touchend%20to%20ignore%20synthetic%20mouse%20events%0Avar%20mouseCanceller%3Dfunction%20mouseCanceller(mouseEvent)%7B%2F%2F%20Check%20for%20sourceCapabilities%2C%20used%20to%20distinguish%20synthetic%20events%0A%2F%2F%20if%20mouseEvent%20did%20not%20come%20from%20a%20device%20that%20fires%20touch%20events%2C%0A%2F%2F%20it%20was%20made%20by%20a%20real%20mouse%20and%20should%20be%20counted%0A%2F%2F%20http%3A%2F%2Fwicg.github.io%2FInputDeviceCapabilities%2F%23dom-inputdevicecapabilities-firestouchevents%0Avar%20sc%3DmouseEvent.sourceCapabilities%3Bif(sc%26%26!sc.firesTouchEvents)%7Breturn%3B%7D%2F%2F%20skip%20synthetic%20mouse%20events%0AmouseEvent%5BHANDLED_OBJ%5D%3D%7Bskip%3Atrue%7D%3B%2F%2F%20disable%20%22ghost%20clicks%22%0Aif(mouseEvent.type%3D%3D%3D'click')%7Bvar%20clickFromLabel%3Dfalse%3Bvar%20path%3DmouseEvent.composedPath%26%26mouseEvent.composedPath()%3Bif(path)%7Bfor(var%20i%3D0%3Bi%3Cpath.length%3Bi%2B%2B)%7Bif(path%5Bi%5D.nodeType%3D%3D%3DNode.ELEMENT_NODE)%7Bif(path%5Bi%5D.localName%3D%3D%3D'label')%7BclickedLabels.push(path%5Bi%5D)%3B%7Delse%20if(canBeLabelled(path%5Bi%5D))%7Bvar%20ownerLabels%3DmatchingLabels(path%5Bi%5D)%3B%2F%2F%20check%20if%20one%20of%20the%20clicked%20labels%20is%20labelling%20this%20element%0Afor(var%20j%3D0%3Bj%3CownerLabels.length%3Bj%2B%2B)%7BclickFromLabel%3DclickFromLabel%7C%7CclickedLabels.indexOf(ownerLabels%5Bj%5D)%3E-1%3B%7D%7D%7Dif(path%5Bi%5D%3D%3D%3DPOINTERSTATE.mouse.target)%7Breturn%3B%7D%7D%7D%2F%2F%20if%20one%20of%20the%20clicked%20labels%20was%20labelling%20the%20target%20element%2C%0A%2F%2F%20this%20is%20not%20a%20ghost%20click%0Aif(clickFromLabel)%7Breturn%3B%7DmouseEvent.preventDefault()%3BmouseEvent.stopPropagation()%3B%7D%7D%3B%2F**%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20setup%20True%20to%20add%2C%20false%20to%20remove.%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2Ffunction%20setupTeardownMouseCanceller(setup)%7Bvar%20events%3DIS_TOUCH_ONLY%3F%5B'click'%5D%3AMOUSE_EVENTS%3Bfor(var%20i%3D0%2Cen%3Bi%3Cevents.length%3Bi%2B%2B)%7Ben%3Devents%5Bi%5D%3Bif(setup)%7B%2F%2F%20reset%20clickLabels%20array%0AclickedLabels.length%3D0%3Bdocument.addEventListener(en%2CmouseCanceller%2Ctrue)%3B%7Delse%7Bdocument.removeEventListener(en%2CmouseCanceller%2Ctrue)%3B%7D%7D%7Dfunction%20ignoreMouse(e)%7Bif(!POINTERSTATE.mouse.mouseIgnoreJob)%7BsetupTeardownMouseCanceller(true)%3B%7Dvar%20unset%3Dfunction%20unset()%7BsetupTeardownMouseCanceller()%3BPOINTERSTATE.mouse.target%3Dnull%3BPOINTERSTATE.mouse.mouseIgnoreJob%3Dnull%3B%7D%3BPOINTERSTATE.mouse.target%3De.composedPath()%5B0%5D%3BPOINTERSTATE.mouse.mouseIgnoreJob%3DPolymer.Debouncer.debounce(POINTERSTATE.mouse.mouseIgnoreJob%2CPolymer.Async.timeOut.after(MOUSE_TIMEOUT)%2Cunset)%3B%7D%2F**%0A%20%20%20*%20%40param%20%7BMouseEvent%7D%20ev%20event%20to%20test%20for%20left%20mouse%20button%20down%0A%20%20%20*%20%40return%20%7Bboolean%7D%20has%20left%20mouse%20button%20down%0A%20%20%20*%2Ffunction%20hasLeftMouseButton(ev)%7Bvar%20type%3Dev.type%3B%2F%2F%20exit%20early%20if%20the%20event%20is%20not%20a%20mouse%20event%0Aif(!isMouseEvent(type))%7Breturn%20false%3B%7D%2F%2F%20ev.button%20is%20not%20reliable%20for%20mousemove%20(0%20is%20overloaded%20as%20both%20left%20button%20and%20no%20buttons)%0A%2F%2F%20instead%20we%20use%20ev.buttons%20(bitmask%20of%20buttons)%20or%20fall%20back%20to%20ev.which%20(deprecated%2C%200%20for%20no%20buttons%2C%201%20for%20left%20button)%0Aif(type%3D%3D%3D'mousemove')%7B%2F%2F%20allow%20undefined%20for%20testing%20events%0Avar%20buttons%3Dev.buttons%3D%3D%3Dundefined%3F1%3Aev.buttons%3Bif(ev%20instanceof%20window.MouseEvent%26%26!MOUSE_HAS_BUTTONS)%7Bbuttons%3DMOUSE_WHICH_TO_BUTTONS%5Bev.which%5D%7C%7C0%3B%7D%2F%2F%20buttons%20is%20a%20bitmask%2C%20check%20that%20the%20left%20button%20bit%20is%20set%20(1)%0Areturn%20Boolean(buttons%261)%3B%7Delse%7B%2F%2F%20allow%20undefined%20for%20testing%20events%0Avar%20button%3Dev.button%3D%3D%3Dundefined%3F0%3Aev.button%3B%2F%2F%20ev.button%20is%200%20in%20mousedown%2Fmouseup%2Fclick%20for%20left%20button%20activation%0Areturn%20button%3D%3D%3D0%3B%7D%7Dfunction%20isSyntheticClick(ev)%7Bif(ev.type%3D%3D%3D'click')%7B%2F%2F%20ev.detail%20is%200%20for%20HTMLElement.click%20in%20most%20browsers%0Aif(ev.detail%3D%3D%3D0)%7Breturn%20true%3B%7D%2F%2F%20in%20the%20worst%20case%2C%20check%20that%20the%20x%2Fy%20position%20of%20the%20click%20is%20within%0A%2F%2F%20the%20bounding%20box%20of%20the%20target%20of%20the%20event%0A%2F%2F%20Thanks%20IE%2010%20%3E%3A(%0Avar%20t%3DGestures._findOriginalTarget(ev)%3B%2F%2F%20make%20sure%20the%20target%20of%20the%20event%20is%20an%20element%20so%20we%20can%20use%20getBoundingClientRect%2C%0A%2F%2F%20if%20not%2C%20just%20assume%20it%20is%20a%20synthetic%20click%0Aif(!t.nodeType%7C%7C%2F**%20%40type%20%7BElement%7D%20*%2Ft.nodeType!%3D%3DNode.ELEMENT_NODE)%7Breturn%20true%3B%7Dvar%20bcr%3D%2F**%20%40type%20%7BElement%7D%20*%2Ft.getBoundingClientRect()%3B%2F%2F%20use%20page%20x%2Fy%20to%20account%20for%20scrolling%0Avar%20x%3Dev.pageX%2Cy%3Dev.pageY%3B%2F%2F%20ev%20is%20a%20synthetic%20click%20if%20the%20position%20is%20outside%20the%20bounding%20box%20of%20the%20target%0Areturn!(x%3E%3Dbcr.left%26%26x%3C%3Dbcr.right%26%26y%3E%3Dbcr.top%26%26y%3C%3Dbcr.bottom)%3B%7Dreturn%20false%3B%7Dvar%20POINTERSTATE%3D%7Bmouse%3A%7Btarget%3Anull%2CmouseIgnoreJob%3Anull%7D%2Ctouch%3A%7Bx%3A0%2Cy%3A0%2Cid%3A-1%2CscrollDecided%3Afalse%7D%7D%3Bfunction%20firstTouchAction(ev)%7Bvar%20ta%3D'auto'%3Bvar%20path%3Dev.composedPath%26%26ev.composedPath()%3Bif(path)%7Bfor(var%20i%3D0%2Cn%3Bi%3Cpath.length%3Bi%2B%2B)%7Bn%3Dpath%5Bi%5D%3Bif(n%5BTOUCH_ACTION%5D)%7Bta%3Dn%5BTOUCH_ACTION%5D%3Bbreak%3B%7D%7D%7Dreturn%20ta%3B%7Dfunction%20trackDocument(stateObj%2Cmovefn%2Cupfn)%7BstateObj.movefn%3Dmovefn%3BstateObj.upfn%3Dupfn%3Bdocument.addEventListener('mousemove'%2Cmovefn)%3Bdocument.addEventListener('mouseup'%2Cupfn)%3B%7Dfunction%20untrackDocument(stateObj)%7Bdocument.removeEventListener('mousemove'%2CstateObj.movefn)%3Bdocument.removeEventListener('mouseup'%2CstateObj.upfn)%3BstateObj.movefn%3Dnull%3BstateObj.upfn%3Dnull%3B%7D%2F%2F%20use%20a%20document-wide%20touchend%20listener%20to%20start%20the%20ghost-click%20prevention%20mechanism%0A%2F%2F%20Use%20passive%20event%20listeners%2C%20if%20supported%2C%20to%20not%20affect%20scrolling%20performance%0Adocument.addEventListener('touchend'%2CignoreMouse%2CSUPPORTS_PASSIVE%3F%7Bpassive%3Atrue%7D%3Afalse)%3B%2F**%0A%20%20%20*%20Module%20for%20adding%20listeners%20to%20a%20node%20for%20the%20following%20normalized%0A%20%20%20*%20cross-platform%20%22gesture%22%20events%3A%0A%20%20%20*%20-%20%60down%60%20-%20mouse%20or%20touch%20went%20down%0A%20%20%20*%20-%20%60up%60%20-%20mouse%20or%20touch%20went%20up%0A%20%20%20*%20-%20%60tap%60%20-%20mouse%20click%20or%20finger%20tap%0A%20%20%20*%20-%20%60track%60%20-%20mouse%20drag%20or%20touch%20move%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20for%20adding%20cross-platform%20gesture%20event%20listeners.%0A%20%20%20*%2Fvar%20Gestures%3D%7Bgestures%3A%7B%7D%2Crecognizers%3A%5B%5D%2C%2F**%0A%20%20%20%20%20*%20Finds%20the%20element%20rendered%20on%20the%20screen%20at%20the%20provided%20coordinates.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Similar%20to%20%60document.elementFromPoint%60%2C%20but%20pierces%20through%0A%20%20%20%20%20*%20shadow%20roots.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20x%20Horizontal%20pixel%20coordinate%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20y%20Vertical%20pixel%20coordinate%0A%20%20%20%20%20*%20%40return%20%7BElement%7D%20Returns%20the%20deepest%20shadowRoot%20inclusive%20element%0A%20%20%20%20%20*%20found%20at%20the%20screen%20position%20given.%0A%20%20%20%20%20*%2FdeepTargetFind%3Afunction%20deepTargetFind(x%2Cy)%7Bvar%20node%3Ddocument.elementFromPoint(x%2Cy)%3Bvar%20next%3Dnode%3B%2F%2F%20this%20code%20path%20is%20only%20taken%20when%20native%20ShadowDOM%20is%20used%0A%2F%2F%20if%20there%20is%20a%20shadowroot%2C%20it%20may%20have%20a%20node%20at%20x%2Fy%0A%2F%2F%20if%20there%20is%20not%20a%20shadowroot%2C%20exit%20the%20loop%0Awhile(next%26%26next.shadowRoot%26%26!window.ShadyDOM)%7B%2F%2F%20if%20there%20is%20a%20node%20at%20x%2Fy%20in%20the%20shadowroot%2C%20look%20deeper%0Avar%20oldNext%3Dnext%3Bnext%3Dnext.shadowRoot.elementFromPoint(x%2Cy)%3B%2F%2F%20on%20Safari%2C%20elementFromPoint%20may%20return%20the%20shadowRoot%20host%0Aif(oldNext%3D%3D%3Dnext)%7Bbreak%3B%7Dif(next)%7Bnode%3Dnext%3B%7D%7Dreturn%20node%3B%7D%2C%2F**%0A%20%20%20%20%20*%20a%20cheaper%20check%20than%20ev.composedPath()%5B0%5D%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7BEvent%7D%20ev%20Event.%0A%20%20%20%20%20*%20%40return%20%7BEventTarget%7D%20Returns%20the%20event%20target.%0A%20%20%20%20%20*%2F_findOriginalTarget%3Afunction%20_findOriginalTarget(ev)%7B%2F%2F%20shadowdom%0Aif(ev.composedPath)%7Bvar%20targets%3D%2F**%20%40type%20%7B!Array%3C!EventTarget%3E%7D%20*%2Fev.composedPath()%3B%2F%2F%20It%20shouldn't%20be%2C%20but%20sometimes%20targets%20is%20empty%20(window%20on%20Safari).%0Areturn%20targets.length%3E0%3Ftargets%5B0%5D%3Aev.target%3B%7D%2F%2F%20shadydom%0Areturn%20ev.target%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7BEvent%7D%20ev%20Event.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_handleNative%3Afunction%20_handleNative(ev)%7Bvar%20handled%3Dvoid%200%3Bvar%20type%3Dev.type%3Bvar%20node%3Dev.currentTarget%3Bvar%20gobj%3Dnode%5BGESTURE_KEY%5D%3Bif(!gobj)%7Breturn%3B%7Dvar%20gs%3Dgobj%5Btype%5D%3Bif(!gs)%7Breturn%3B%7Dif(!ev%5BHANDLED_OBJ%5D)%7Bev%5BHANDLED_OBJ%5D%3D%7B%7D%3Bif(type.slice(0%2C5)%3D%3D%3D'touch')%7Bev%3D%2F**%20%40type%20%7BTouchEvent%7D%20*%2Fev%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Avar%20t%3Dev.changedTouches%5B0%5D%3Bif(type%3D%3D%3D'touchstart')%7B%2F%2F%20only%20handle%20the%20first%20finger%0Aif(ev.touches.length%3D%3D%3D1)%7BPOINTERSTATE.touch.id%3Dt.identifier%3B%7D%7Dif(POINTERSTATE.touch.id!%3D%3Dt.identifier)%7Breturn%3B%7Dif(!HAS_NATIVE_TA)%7Bif(type%3D%3D%3D'touchstart'%7C%7Ctype%3D%3D%3D'touchmove')%7BGestures._handleTouchAction(ev)%3B%7D%7D%7D%7Dhandled%3Dev%5BHANDLED_OBJ%5D%3B%2F%2F%20used%20to%20ignore%20synthetic%20mouse%20events%0Aif(handled.skip)%7Breturn%3B%7D%2F%2F%20reset%20recognizer%20state%0Afor(var%20i%3D0%2Cr%3Bi%3CGestures.recognizers.length%3Bi%2B%2B)%7Br%3DGestures.recognizers%5Bi%5D%3Bif(gs%5Br.name%5D%26%26!handled%5Br.name%5D)%7Bif(r.flow%26%26r.flow.start.indexOf(ev.type)%3E-1%26%26r.reset)%7Br.reset()%3B%7D%7D%7D%2F%2F%20enforce%20gesture%20recognizer%20order%0Afor(var%20_i%3D0%2C_r%3B_i%3CGestures.recognizers.length%3B_i%2B%2B)%7B_r%3DGestures.recognizers%5B_i%5D%3Bif(gs%5B_r.name%5D%26%26!handled%5B_r.name%5D)%7Bhandled%5B_r.name%5D%3Dtrue%3B_r%5Btype%5D(ev)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20ev%20Event.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_handleTouchAction%3Afunction%20_handleTouchAction(ev)%7Bvar%20t%3Dev.changedTouches%5B0%5D%3Bvar%20type%3Dev.type%3Bif(type%3D%3D%3D'touchstart')%7BPOINTERSTATE.touch.x%3Dt.clientX%3BPOINTERSTATE.touch.y%3Dt.clientY%3BPOINTERSTATE.touch.scrollDecided%3Dfalse%3B%7Delse%20if(type%3D%3D%3D'touchmove')%7Bif(POINTERSTATE.touch.scrollDecided)%7Breturn%3B%7DPOINTERSTATE.touch.scrollDecided%3Dtrue%3Bvar%20ta%3DfirstTouchAction(ev)%3Bvar%20prevent%3Dfalse%3Bvar%20dx%3DMath.abs(POINTERSTATE.touch.x-t.clientX)%3Bvar%20dy%3DMath.abs(POINTERSTATE.touch.y-t.clientY)%3Bif(!ev.cancelable)%7B%2F%2F%20scrolling%20is%20happening%0A%7Delse%20if(ta%3D%3D%3D'none')%7Bprevent%3Dtrue%3B%7Delse%20if(ta%3D%3D%3D'pan-x')%7Bprevent%3Ddy%3Edx%3B%7Delse%20if(ta%3D%3D%3D'pan-y')%7Bprevent%3Ddx%3Edy%3B%7Dif(prevent)%7Bev.preventDefault()%3B%7Delse%7BGestures.prevent('track')%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Adds%20an%20event%20listener%20to%20a%20node%20for%20the%20given%20gesture%20type.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20listener%20on%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Gesture%20type%3A%20%60down%60%2C%20%60up%60%2C%20%60track%60%2C%20or%20%60tap%60%0A%20%20%20%20%20*%20%40param%20%7B!function(!Event)%3Avoid%7D%20handler%20Event%20listener%20function%20to%20call%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20a%20gesture%20event%20listener%20was%20added.%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2FaddListener%3Afunction%20addListener(node%2CevType%2Chandler)%7Bif(this.gestures%5BevType%5D)%7Bthis._add(node%2CevType%2Chandler)%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Removes%20an%20event%20listener%20from%20a%20node%20for%20the%20given%20gesture%20type.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20remove%20listener%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Gesture%20type%3A%20%60down%60%2C%20%60up%60%2C%20%60track%60%2C%20or%20%60tap%60%0A%20%20%20%20%20*%20%40param%20%7B!function(!Event)%3Avoid%7D%20handler%20Event%20listener%20function%20previously%20passed%20to%0A%20%20%20%20%20*%20%20%60addListener%60.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20a%20gesture%20event%20listener%20was%20removed.%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2FremoveListener%3Afunction%20removeListener(node%2CevType%2Chandler)%7Bif(this.gestures%5BevType%5D)%7Bthis._remove(node%2CevType%2Chandler)%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2C%2F**%0A%20%20%20%20%20*%20automate%20the%20event%20listeners%20for%20the%20native%20events%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20node%20Node%20on%20which%20to%20add%20the%20event.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Event%20type%20to%20add.%0A%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%7D%20handler%20Event%20handler%20function.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2F_add%3Afunction%20_add(node%2CevType%2Chandler)%7Bvar%20recognizer%3Dthis.gestures%5BevType%5D%3Bvar%20deps%3Drecognizer.deps%3Bvar%20name%3Drecognizer.name%3Bvar%20gobj%3Dnode%5BGESTURE_KEY%5D%3Bif(!gobj)%7Bnode%5BGESTURE_KEY%5D%3Dgobj%3D%7B%7D%3B%7Dfor(var%20i%3D0%2Cdep%2Cgd%3Bi%3Cdeps.length%3Bi%2B%2B)%7Bdep%3Ddeps%5Bi%5D%3B%2F%2F%20don't%20add%20mouse%20handlers%20on%20iOS%20because%20they%20cause%20gray%20selection%20overlays%0Aif(IS_TOUCH_ONLY%26%26isMouseEvent(dep)%26%26dep!%3D%3D'click')%7Bcontinue%3B%7Dgd%3Dgobj%5Bdep%5D%3Bif(!gd)%7Bgobj%5Bdep%5D%3Dgd%3D%7B_count%3A0%7D%3B%7Dif(gd._count%3D%3D%3D0)%7Bnode.addEventListener(dep%2Cthis._handleNative%2CPASSIVE_TOUCH(dep))%3B%7Dgd%5Bname%5D%3D(gd%5Bname%5D%7C%7C0)%2B1%3Bgd._count%3D(gd._count%7C%7C0)%2B1%3B%7Dnode.addEventListener(evType%2Chandler)%3Bif(recognizer.touchAction)%7Bthis.setTouchAction(node%2Crecognizer.touchAction)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20automate%20event%20listener%20removal%20for%20native%20events%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20node%20Node%20on%20which%20to%20remove%20the%20event.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Event%20type%20to%20remove.%0A%20%20%20%20%20*%20%40param%20%7Bfunction(Event%3F)%7D%20handler%20Event%20handler%20function.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2F_remove%3Afunction%20_remove(node%2CevType%2Chandler)%7Bvar%20recognizer%3Dthis.gestures%5BevType%5D%3Bvar%20deps%3Drecognizer.deps%3Bvar%20name%3Drecognizer.name%3Bvar%20gobj%3Dnode%5BGESTURE_KEY%5D%3Bif(gobj)%7Bfor(var%20i%3D0%2Cdep%2Cgd%3Bi%3Cdeps.length%3Bi%2B%2B)%7Bdep%3Ddeps%5Bi%5D%3Bgd%3Dgobj%5Bdep%5D%3Bif(gd%26%26gd%5Bname%5D)%7Bgd%5Bname%5D%3D(gd%5Bname%5D%7C%7C1)-1%3Bgd._count%3D(gd._count%7C%7C1)-1%3Bif(gd._count%3D%3D%3D0)%7Bnode.removeEventListener(dep%2Cthis._handleNative%2CPASSIVE_TOUCH(dep))%3B%7D%7D%7D%7Dnode.removeEventListener(evType%2Chandler)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Registers%20a%20new%20gesture%20event%20recognizer%20for%20adding%20new%20custom%0A%20%20%20%20%20*%20gesture%20event%20types.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!GestureRecognizer%7D%20recog%20Gesture%20recognizer%20descriptor%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2Fregister%3Afunction%20register(recog)%7Bthis.recognizers.push(recog)%3Bfor(var%20i%3D0%3Bi%3Crecog.emits.length%3Bi%2B%2B)%7Bthis.gestures%5Brecog.emits%5Bi%5D%5D%3Drecog%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evName%20Event%20name.%0A%20%20%20%20%20*%20%40return%20%7BObject%7D%20Returns%20the%20gesture%20for%20the%20given%20event%20name.%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2F_findRecognizerByEvent%3Afunction%20_findRecognizerByEvent(evName)%7Bfor(var%20i%3D0%2Cr%3Bi%3Cthis.recognizers.length%3Bi%2B%2B)%7Br%3Dthis.recognizers%5Bi%5D%3Bfor(var%20j%3D0%2Cn%3Bj%3Cr.emits.length%3Bj%2B%2B)%7Bn%3Dr.emits%5Bj%5D%3Bif(n%3D%3D%3DevName)%7Breturn%20r%3B%7D%7D%7Dreturn%20null%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Sets%20scrolling%20direction%20on%20node.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20value%20is%20checked%20on%20first%20move%2C%20thus%20it%20should%20be%20called%20prior%20to%0A%20%20%20%20%20*%20adding%20event%20listeners.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!Element%7D%20node%20Node%20to%20set%20touch%20action%20setting%20on%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Touch%20action%20value%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FsetTouchAction%3Afunction%20setTouchAction(node%2Cvalue)%7Bif(HAS_NATIVE_TA)%7B%2F%2F%20NOTE%3A%20add%20touchAction%20async%20so%20that%20events%20can%20be%20added%20in%0A%2F%2F%20custom%20element%20constructors.%20Otherwise%20we%20run%20afoul%20of%20custom%0A%2F%2F%20elements%20restriction%20against%20settings%20attributes%20(style)%20in%20the%0A%2F%2F%20constructor.%0APolymer.Async.microTask.run(function()%7Bnode.style.touchAction%3Dvalue%3B%7D)%3B%7Dnode%5BTOUCH_ACTION%5D%3Dvalue%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Dispatches%20an%20event%20on%20the%20%60target%60%20element%20of%20%60type%60%20with%20the%20given%0A%20%20%20%20%20*%20%60detail%60.%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7B!EventTarget%7D%20target%20The%20element%20on%20which%20to%20fire%20an%20event.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20The%20type%20of%20event%20to%20fire.%0A%20%20%20%20%20*%20%40param%20%7B!Object%3D%7D%20detail%20The%20detail%20object%20to%20populate%20on%20the%20event.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_fire%3Afunction%20_fire(target%2Ctype%2Cdetail)%7Bvar%20ev%3Dnew%20Event(type%2C%7Bbubbles%3Atrue%2Ccancelable%3Atrue%2Ccomposed%3Atrue%7D)%3Bev.detail%3Ddetail%3Btarget.dispatchEvent(ev)%3B%2F%2F%20forward%20%60preventDefault%60%20in%20a%20clean%20way%0Aif(ev.defaultPrevented)%7Bvar%20preventer%3Ddetail.preventer%7C%7Cdetail.sourceEvent%3Bif(preventer%26%26preventer.preventDefault)%7Bpreventer.preventDefault()%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Prevents%20the%20dispatch%20and%20default%20action%20of%20the%20given%20event%20name.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evName%20Event%20name.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2Fprevent%3Afunction%20prevent(evName)%7Bvar%20recognizer%3Dthis._findRecognizerByEvent(evName)%3Bif(recognizer.info)%7Brecognizer.info.prevent%3Dtrue%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Reset%20the%202500ms%20timeout%20on%20processing%20mouse%20input%20after%20detecting%20touch%20input.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Touch%20inputs%20create%20synthesized%20mouse%20inputs%20anywhere%20from%200%20to%202000ms%20after%20the%20touch.%0A%20%20%20%20%20*%20This%20method%20should%20only%20be%20called%20during%20testing%20with%20simulated%20touch%20inputs.%0A%20%20%20%20%20*%20Calling%20this%20method%20in%20production%20may%20cause%20duplicate%20taps%20or%20other%20Gestures.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FresetMouseCanceller%3Afunction%20resetMouseCanceller()%7Bif(POINTERSTATE.mouse.mouseIgnoreJob)%7BPOINTERSTATE.mouse.mouseIgnoreJob.flush()%3B%7D%7D%7D%3B%2F*%20eslint-disable%20valid-jsdoc%20*%2FGestures.register(%7Bname%3A'downup'%2Cdeps%3A%5B'mousedown'%2C'touchstart'%2C'touchend'%5D%2Cflow%3A%7Bstart%3A%5B'mousedown'%2C'touchstart'%5D%2Cend%3A%5B'mouseup'%2C'touchend'%5D%7D%2Cemits%3A%5B'down'%2C'up'%5D%2Cinfo%3A%7Bmovefn%3Anull%2Cupfn%3Anull%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Freset%3Afunction%20reset()%7BuntrackDocument(this.info)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fmousedown%3Afunction%20mousedown(e)%7Bif(!hasLeftMouseButton(e))%7Breturn%3B%7Dvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20self%3Dthis%3Bvar%20movefn%3Dfunction%20movefn(e)%7Bif(!hasLeftMouseButton(e))%7Bself._fire('up'%2Ct%2Ce)%3BuntrackDocument(self.info)%3B%7D%7D%3Bvar%20upfn%3Dfunction%20upfn(e)%7Bif(hasLeftMouseButton(e))%7Bself._fire('up'%2Ct%2Ce)%3B%7DuntrackDocument(self.info)%3B%7D%3BtrackDocument(this.info%2Cmovefn%2Cupfn)%3Bthis._fire('down'%2Ct%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchstart%3Afunction%20touchstart(e)%7Bthis._fire('down'%2CGestures._findOriginalTarget(e)%2Ce.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchend%3Afunction%20touchend(e)%7Bthis._fire('up'%2CGestures._findOriginalTarget(e)%2Ce.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%0A%20%20%20%20%20*%20%40param%20%7B!EventTarget%7D%20target%0A%20%20%20%20%20*%20%40param%20%7BEvent%7D%20event%0A%20%20%20%20%20*%20%40param%20%7BFunction%7D%20preventer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_fire%3Afunction%20_fire(type%2Ctarget%2Cevent%2Cpreventer)%7BGestures._fire(target%2Ctype%2C%7Bx%3Aevent.clientX%2Cy%3Aevent.clientY%2CsourceEvent%3Aevent%2Cpreventer%3Apreventer%2Cprevent%3Afunction%20prevent(e)%7Breturn%20Gestures.prevent(e)%3B%7D%7D)%3B%7D%7D)%3BGestures.register(%7Bname%3A'track'%2CtouchAction%3A'none'%2Cdeps%3A%5B'mousedown'%2C'touchstart'%2C'touchmove'%2C'touchend'%5D%2Cflow%3A%7Bstart%3A%5B'mousedown'%2C'touchstart'%5D%2Cend%3A%5B'mouseup'%2C'touchend'%5D%7D%2Cemits%3A%5B'track'%5D%2Cinfo%3A%7Bx%3A0%2Cy%3A0%2Cstate%3A'start'%2Cstarted%3Afalse%2Cmoves%3A%5B%5D%2C%2F**%20%40this%20%7BGestureRecognizer%7D%20*%2FaddMove%3Afunction%20addMove(move)%7Bif(this.moves.length%3ETRACK_LENGTH)%7Bthis.moves.shift()%3B%7Dthis.moves.push(move)%3B%7D%2Cmovefn%3Anull%2Cupfn%3Anull%2Cprevent%3Afalse%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Freset%3Afunction%20reset()%7Bthis.info.state%3D'start'%3Bthis.info.started%3Dfalse%3Bthis.info.moves%3D%5B%5D%3Bthis.info.x%3D0%3Bthis.info.y%3D0%3Bthis.info.prevent%3Dfalse%3BuntrackDocument(this.info)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20x%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20y%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2FhasMovedEnough%3Afunction%20hasMovedEnough(x%2Cy)%7Bif(this.info.prevent)%7Breturn%20false%3B%7Dif(this.info.started)%7Breturn%20true%3B%7Dvar%20dx%3DMath.abs(this.info.x-x)%3Bvar%20dy%3DMath.abs(this.info.y-y)%3Breturn%20dx%3E%3DTRACK_DISTANCE%7C%7Cdy%3E%3DTRACK_DISTANCE%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fmousedown%3Afunction%20mousedown(e)%7Bif(!hasLeftMouseButton(e))%7Breturn%3B%7Dvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20self%3Dthis%3Bvar%20movefn%3Dfunction%20movefn(e)%7Bvar%20x%3De.clientX%2Cy%3De.clientY%3Bif(self.hasMovedEnough(x%2Cy))%7B%2F%2F%20first%20move%20is%20'start'%2C%20subsequent%20moves%20are%20'move'%2C%20mouseup%20is%20'end'%0Aself.info.state%3Dself.info.started%3Fe.type%3D%3D%3D'mouseup'%3F'end'%3A'track'%3A'start'%3Bif(self.info.state%3D%3D%3D'start')%7B%2F%2F%20if%20and%20only%20if%20tracking%2C%20always%20prevent%20tap%0AGestures.prevent('tap')%3B%7Dself.info.addMove(%7Bx%3Ax%2Cy%3Ay%7D)%3Bif(!hasLeftMouseButton(e))%7B%2F%2F%20always%20_fire%20%22end%22%0Aself.info.state%3D'end'%3BuntrackDocument(self.info)%3B%7Dself._fire(t%2Ce)%3Bself.info.started%3Dtrue%3B%7D%7D%3Bvar%20upfn%3Dfunction%20upfn(e)%7Bif(self.info.started)%7Bmovefn(e)%3B%7D%2F%2F%20remove%20the%20temporary%20listeners%0AuntrackDocument(self.info)%3B%7D%3B%2F%2F%20add%20temporary%20document%20listeners%20as%20mouse%20retargets%0AtrackDocument(this.info%2Cmovefn%2Cupfn)%3Bthis.info.x%3De.clientX%3Bthis.info.y%3De.clientY%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchstart%3Afunction%20touchstart(e)%7Bvar%20ct%3De.changedTouches%5B0%5D%3Bthis.info.x%3Dct.clientX%3Bthis.info.y%3Dct.clientY%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchmove%3Afunction%20touchmove(e)%7Bvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20ct%3De.changedTouches%5B0%5D%3Bvar%20x%3Dct.clientX%2Cy%3Dct.clientY%3Bif(this.hasMovedEnough(x%2Cy))%7Bif(this.info.state%3D%3D%3D'start')%7B%2F%2F%20if%20and%20only%20if%20tracking%2C%20always%20prevent%20tap%0AGestures.prevent('tap')%3B%7Dthis.info.addMove(%7Bx%3Ax%2Cy%3Ay%7D)%3Bthis._fire(t%2Cct)%3Bthis.info.state%3D'track'%3Bthis.info.started%3Dtrue%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchend%3Afunction%20touchend(e)%7Bvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20ct%3De.changedTouches%5B0%5D%3B%2F%2F%20only%20trackend%20if%20track%20was%20started%20and%20not%20aborted%0Aif(this.info.started)%7B%2F%2F%20reset%20started%20state%20on%20up%0Athis.info.state%3D'end'%3Bthis.info.addMove(%7Bx%3Act.clientX%2Cy%3Act.clientY%7D)%3Bthis._fire(t%2Cct%2Ce)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7B!EventTarget%7D%20target%0A%20%20%20%20%20*%20%40param%20%7BTouch%7D%20touch%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_fire%3Afunction%20_fire(target%2Ctouch)%7Bvar%20secondlast%3Dthis.info.moves%5Bthis.info.moves.length-2%5D%3Bvar%20lastmove%3Dthis.info.moves%5Bthis.info.moves.length-1%5D%3Bvar%20dx%3Dlastmove.x-this.info.x%3Bvar%20dy%3Dlastmove.y-this.info.y%3Bvar%20ddx%3Dvoid%200%2Cddy%3D0%3Bif(secondlast)%7Bddx%3Dlastmove.x-secondlast.x%3Bddy%3Dlastmove.y-secondlast.y%3B%7DGestures._fire(target%2C'track'%2C%7Bstate%3Athis.info.state%2Cx%3Atouch.clientX%2Cy%3Atouch.clientY%2Cdx%3Adx%2Cdy%3Ady%2Cddx%3Addx%2Cddy%3Addy%2CsourceEvent%3Atouch%2Chover%3Afunction%20hover()%7Breturn%20Gestures.deepTargetFind(touch.clientX%2Ctouch.clientY)%3B%7D%7D)%3B%7D%7D)%3BGestures.register(%7Bname%3A'tap'%2Cdeps%3A%5B'mousedown'%2C'click'%2C'touchstart'%2C'touchend'%5D%2Cflow%3A%7Bstart%3A%5B'mousedown'%2C'touchstart'%5D%2Cend%3A%5B'click'%2C'touchend'%5D%7D%2Cemits%3A%5B'tap'%5D%2Cinfo%3A%7Bx%3ANaN%2Cy%3ANaN%2Cprevent%3Afalse%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Freset%3Afunction%20reset()%7Bthis.info.x%3DNaN%3Bthis.info.y%3DNaN%3Bthis.info.prevent%3Dfalse%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fsave%3Afunction%20save(e)%7Bthis.info.x%3De.clientX%3Bthis.info.y%3De.clientY%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fmousedown%3Afunction%20mousedown(e)%7Bif(hasLeftMouseButton(e))%7Bthis.save(e)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fclick%3Afunction%20click(e)%7Bif(hasLeftMouseButton(e))%7Bthis.forward(e)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchstart%3Afunction%20touchstart(e)%7Bthis.save(e.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchend%3Afunction%20touchend(e)%7Bthis.forward(e.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BEvent%20%7C%20Touch%7D%20e%0A%20%20%20%20%20*%20%40param%20%7BEvent%3D%7D%20preventer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fforward%3Afunction%20forward(e%2Cpreventer)%7Bvar%20dx%3DMath.abs(e.clientX-this.info.x)%3Bvar%20dy%3DMath.abs(e.clientY-this.info.y)%3B%2F%2F%20find%20original%20target%20from%20%60preventer%60%20for%20TouchEvents%2C%20or%20%60e%60%20for%20MouseEvents%0Avar%20t%3DGestures._findOriginalTarget(%2F**%20%40type%20%7BEvent%7D%20*%2Fpreventer%7C%7Ce)%3Bif(!t%7C%7CcanBeDisabled%5B%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Ft.localName%5D%26%26t.hasAttribute('disabled'))%7Breturn%3B%7D%2F%2F%20dx%2Cdy%20can%20be%20NaN%20if%20%60click%60%20has%20been%20simulated%20and%20there%20was%20no%20%60down%60%20for%20%60start%60%0Aif(isNaN(dx)%7C%7CisNaN(dy)%7C%7Cdx%3C%3DTAP_DISTANCE%26%26dy%3C%3DTAP_DISTANCE%7C%7CisSyntheticClick(e))%7B%2F%2F%20prevent%20taps%20from%20being%20generated%20if%20an%20event%20has%20canceled%20them%0Aif(!this.info.prevent)%7BGestures._fire(t%2C'tap'%2C%7Bx%3Ae.clientX%2Cy%3Ae.clientY%2CsourceEvent%3Ae%2Cpreventer%3Apreventer%7D)%3B%7D%7D%7D%7D)%3B%2F*%20eslint-enable%20valid-jsdoc%20*%2F%2F**%20%40deprecated%20*%2FGestures.findOriginalTarget%3DGestures._findOriginalTarget%3B%2F**%20%40deprecated%20*%2FGestures.add%3DGestures.addListener%3B%2F**%20%40deprecated%20*%2FGestures.remove%3DGestures.removeListener%3BPolymer.Gestures%3DGestures%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fgestures.html.js%0A",
            "resourceBytes": 26851,
            "encodedBytes": 0,
            "unusedBytes": 14717
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20%40const%20%7BPolymer.Gestures%7D%0A%20%20%20*%2Fvar%20gestures%3DPolymer.Gestures%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20API%20for%20adding%20Polymer's%20cross-platform%0A%20%20%20*%20gesture%20events%20to%20nodes.%0A%20%20%20*%0A%20%20%20*%20The%20API%20is%20designed%20to%20be%20compatible%20with%20override%20points%20implemented%0A%20%20%20*%20in%20%60Polymer.TemplateStamp%60%20such%20that%20declarative%20event%20listeners%20in%0A%20%20%20*%20templates%20will%20support%20gesture%20events%20when%20this%20mixin%20is%20applied%20along%20with%0A%20%20%20*%20%60Polymer.TemplateStamp%60.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20API%20for%20adding%20Polymer's%20cross-platform%0A%20%20%20*%20gesture%20events%20to%20nodes%0A%20%20%20*%2FPolymer.GestureEventListeners%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_GestureEventListeners%7D%0A%20%20%20%20%20*%2Fvar%20GestureEventListeners%3Dfunction(_superClass)%7B_inherits(GestureEventListeners%2C_superClass)%3Bfunction%20GestureEventListeners()%7B_classCallCheck(this%2CGestureEventListeners)%3Breturn%20_possibleConstructorReturn(this%2C(GestureEventListeners.__proto__%7C%7CObject.getPrototypeOf(GestureEventListeners)).apply(this%2Carguments))%3B%7D_createClass(GestureEventListeners%2C%5B%7Bkey%3A'_addEventListenerToNode'%2C%2F**%0A%20%20%20%20%20%20%20*%20Add%20the%20event%20listener%20to%20the%20node%20if%20it%20is%20a%20gestures%20event.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20event%20listener%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20add%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_addEventListenerToNode(node%2CeventName%2Chandler)%7Bif(!gestures.addListener(node%2CeventName%2Chandler))%7B_get(GestureEventListeners.prototype.__proto__%7C%7CObject.getPrototypeOf(GestureEventListeners.prototype)%2C'_addEventListenerToNode'%2Cthis).call(this%2Cnode%2CeventName%2Chandler)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Remove%20the%20event%20listener%20to%20the%20node%20if%20it%20is%20a%20gestures%20event.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20remove%20event%20listener%20from%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20remove%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removeEventListenerFromNode'%2Cvalue%3Afunction%20_removeEventListenerFromNode(node%2CeventName%2Chandler)%7Bif(!gestures.removeListener(node%2CeventName%2Chandler))%7B_get(GestureEventListeners.prototype.__proto__%7C%7CObject.getPrototypeOf(GestureEventListeners.prototype)%2C'_removeEventListenerFromNode'%2Cthis).call(this%2Cnode%2CeventName%2Chandler)%3B%7D%7D%7D%5D)%3Breturn%20GestureEventListeners%3B%7D(superClass)%3Breturn%20GestureEventListeners%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fgesture-event-listeners.html.js%0A",
            "resourceBytes": 4429,
            "encodedBytes": 0,
            "unusedBytes": 2275
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20HOST_DIR%3D%2F%3Ahost%5C(%3Adir%5C((ltr%7Crtl)%5C)%5C)%2Fg%3Bvar%20HOST_DIR_REPLACMENT%3D'%3Ahost(%5Bdir%3D%22%241%22%5D)'%3Bvar%20EL_DIR%3D%2F(%5B%5Cs%5Cw-%23%5C.%5C%5B%5C%5D%5C*%5D*)%3Adir%5C((ltr%7Crtl)%5C)%2Fg%3Bvar%20EL_DIR_REPLACMENT%3D'%3Ahost(%5Bdir%3D%22%242%22%5D)%20%241'%3Bvar%20DIR_CHECK%3D%2F%3Adir%5C((%3F%3Altr%7Crtl)%5C)%2F%3Bvar%20SHIM_SHADOW%3DBoolean(window%5B'ShadyDOM'%5D%26%26window%5B'ShadyDOM'%5D%5B'inUse'%5D)%3B%2F**%0A%20%20%20%20%20*%20%40type%20%7B!Array%3C!Polymer_DirMixin%3E%7D%0A%20%20%20%20%20*%2Fvar%20DIR_INSTANCES%3D%5B%5D%3B%2F**%20%40type%20%7BMutationObserver%7D%20*%2Fvar%20observer%3Dnull%3Bvar%20DOCUMENT_DIR%3D''%3Bfunction%20getRTL()%7BDOCUMENT_DIR%3Ddocument.documentElement.getAttribute('dir')%3B%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B!Polymer_DirMixin%7D%20instance%20Instance%20to%20set%20RTL%20status%20on%0A%20%20%20%20%20*%2Ffunction%20setRTL(instance)%7Bif(!instance.__autoDirOptOut)%7Bvar%20el%3D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Finstance%3Bel.setAttribute('dir'%2CDOCUMENT_DIR)%3B%7D%7Dfunction%20updateDirection()%7BgetRTL()%3BDOCUMENT_DIR%3Ddocument.documentElement.getAttribute('dir')%3Bfor(var%20i%3D0%3Bi%3CDIR_INSTANCES.length%3Bi%2B%2B)%7BsetRTL(DIR_INSTANCES%5Bi%5D)%3B%7D%7Dfunction%20takeRecords()%7Bif(observer%26%26observer.takeRecords().length)%7BupdateDirection()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Element%20class%20mixin%20that%20allows%20elements%20to%20use%20the%20%60%3Adir%60%20CSS%20Selector%20to%20have%0A%20%20%20%20%20*%20text%20direction%20specific%20styling.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20With%20this%20mixin%2C%20any%20stylesheet%20provided%20in%20the%20template%20will%20transform%20%60%3Adir%60%20into%0A%20%20%20%20%20*%20%60%3Ahost(%5Bdir%5D)%60%20and%20sync%20direction%20with%20the%20page%20via%20the%20element's%20%60dir%60%20attribute.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Elements%20can%20opt%20out%20of%20the%20global%20page%20text%20direction%20by%20setting%20the%20%60dir%60%20attribute%0A%20%20%20%20%20*%20directly%20in%20%60ready()%60%20or%20in%20HTML.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Caveats%3A%0A%20%20%20%20%20*%20-%20Applications%20must%20set%20%60%3Chtml%20dir%3D%22ltr%22%3E%60%20or%20%60%3Chtml%20dir%3D%22rtl%22%3E%60%20to%20sync%20direction%0A%20%20%20%20%20*%20-%20Automatic%20left-to-right%20or%20right-to-left%20styling%20is%20sync'd%20with%20the%20%60%3Chtml%3E%60%20element%20only.%0A%20%20%20%20%20*%20-%20Changing%20%60dir%60%20at%20runtime%20is%20supported.%0A%20%20%20%20%20*%20-%20Opting%20out%20of%20the%20global%20direction%20styling%20is%20permanent%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40mixinFunction%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.PropertyAccessors%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%2FPolymer.DirMixin%3DPolymer.dedupingMixin(function(base)%7Bif(!SHIM_SHADOW)%7Bif(!observer)%7BgetRTL()%3Bobserver%3Dnew%20MutationObserver(updateDirection)%3Bobserver.observe(document.documentElement%2C%7Battributes%3Atrue%2CattributeFilter%3A%5B'dir'%5D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fvar%20elementBase%3DPolymer.PropertyAccessors(base)%3B%2F**%0A%20%20%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20%20%20*%20%40implements%20%7BPolymer_DirMixin%7D%0A%20%20%20%20%20%20%20*%2Fvar%20Dir%3Dfunction(_elementBase)%7B_inherits(Dir%2C_elementBase)%3B_createClass(Dir%2Cnull%2C%5B%7Bkey%3A'_processStyleText'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_processStyleText(cssText%2CbaseURI)%7BcssText%3D_get(Dir.__proto__%7C%7CObject.getPrototypeOf(Dir)%2C'_processStyleText'%2Cthis).call(this%2CcssText%2CbaseURI)%3Bif(!SHIM_SHADOW%26%26DIR_CHECK.test(cssText))%7BcssText%3Dthis._replaceDirInCssText(cssText)%3Bthis.__activateDir%3Dtrue%3B%7Dreturn%20cssText%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Replace%20%60%3Adir%60%20in%20the%20given%20CSS%20text%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20text%20CSS%20text%20to%20replace%20DIR%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Modified%20CSS%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_replaceDirInCssText'%2Cvalue%3Afunction%20_replaceDirInCssText(text)%7Bvar%20replacedText%3Dtext%3BreplacedText%3DreplacedText.replace(HOST_DIR%2CHOST_DIR_REPLACMENT)%3BreplacedText%3DreplacedText.replace(EL_DIR%2CEL_DIR_REPLACMENT)%3Breturn%20replacedText%3B%7D%7D%5D)%3Bfunction%20Dir()%7B_classCallCheck(this%2CDir)%3B%2F**%20%40type%20%7Bboolean%7D%20*%2Fvar%20_this%3D_possibleConstructorReturn(this%2C(Dir.__proto__%7C%7CObject.getPrototypeOf(Dir)).call(this))%3B_this.__autoDirOptOut%3Dfalse%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20Closure%20doesn't%20understand%20that%20%60this%60%20is%20an%20HTMLElement%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F_createClass(Dir%2C%5B%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7B_get(Dir.prototype.__proto__%7C%7CObject.getPrototypeOf(Dir.prototype)%2C'ready'%2Cthis).call(this)%3Bthis.__autoDirOptOut%3D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis.hasAttribute('dir')%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20If%20it%20exists%20on%20elementBase%2C%20it%20can%20be%20super'd%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7Bif(elementBase.prototype.connectedCallback)%7B_get(Dir.prototype.__proto__%7C%7CObject.getPrototypeOf(Dir.prototype)%2C'connectedCallback'%2Cthis).call(this)%3B%7Dif(this.constructor.__activateDir)%7BtakeRecords()%3BDIR_INSTANCES.push(this)%3BsetRTL(this)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20If%20it%20exists%20on%20elementBase%2C%20it%20can%20be%20super'd%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7Bif(elementBase.prototype.disconnectedCallback)%7B_get(Dir.prototype.__proto__%7C%7CObject.getPrototypeOf(Dir.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3B%7Dif(this.constructor.__activateDir)%7Bvar%20idx%3DDIR_INSTANCES.indexOf(this)%3Bif(idx%3E-1)%7BDIR_INSTANCES.splice(idx%2C1)%3B%7D%7D%7D%7D%5D)%3Breturn%20Dir%3B%7D(elementBase)%3BDir.__activateDir%3Dfalse%3Breturn%20Dir%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fdir-mixin.html.js%0A",
            "resourceBytes": 6777,
            "encodedBytes": 0,
            "unusedBytes": 2594
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20run%20a%20callback%20when%20HTMLImports%20are%20ready%20or%20immediately%20if%0A%2F%2F%20this%20api%20is%20not%20available.%0Afunction%20whenImportsReady(cb)%7Bif(window.HTMLImports)%7BHTMLImports.whenReady(cb)%3B%7Delse%7Bcb()%3B%7D%7D%2F**%0A%20%20%20*%20Convenience%20method%20for%20importing%20an%20HTML%20document%20imperatively.%0A%20%20%20*%0A%20%20%20*%20This%20method%20creates%20a%20new%20%60%3Clink%20rel%3D%22import%22%3E%60%20element%20with%0A%20%20%20*%20the%20provided%20URL%20and%20appends%20it%20to%20the%20document%20to%20start%20loading.%0A%20%20%20*%20In%20the%20%60onload%60%20callback%2C%20the%20%60import%60%20property%20of%20the%20%60link%60%0A%20%20%20*%20element%20will%20contain%20the%20imported%20document%20contents.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bstring%7D%20href%20URL%20to%20document%20to%20load.%0A%20%20%20*%20%40param%20%7B%3Ffunction(!Event)%3Avoid%3D%7D%20onload%20Callback%20to%20notify%20when%20an%20import%20successfully%0A%20%20%20*%20%20%20loaded.%0A%20%20%20*%20%40param%20%7B%3Ffunction(!ErrorEvent)%3Avoid%3D%7D%20onerror%20Callback%20to%20notify%20when%20an%20import%0A%20%20%20*%20%20%20unsuccessfully%20loaded.%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20optAsync%20True%20if%20the%20import%20should%20be%20loaded%20%60async%60.%0A%20%20%20*%20%20%20Defaults%20to%20%60false%60.%0A%20%20%20*%20%40return%20%7B!HTMLLinkElement%7D%20The%20link%20element%20for%20the%20URL%20to%20be%20loaded.%0A%20%20%20*%2FPolymer.importHref%3Dfunction(href%2Conload%2Conerror%2CoptAsync)%7Bvar%20link%3D%2F**%20%40type%20%7BHTMLLinkElement%7D%20*%2Fdocument.head.querySelector('link%5Bhref%3D%22'%2Bhref%2B'%22%5D%5Bimport-href%5D')%3Bif(!link)%7Blink%3D%2F**%20%40type%20%7BHTMLLinkElement%7D%20*%2Fdocument.createElement('link')%3Blink.rel%3D'import'%3Blink.href%3Dhref%3Blink.setAttribute('import-href'%2C'')%3B%7D%2F%2F%20always%20ensure%20link%20has%20%60async%60%20attribute%20if%20user%20specified%20one%2C%0A%2F%2F%20even%20if%20it%20was%20previously%20not%20async.%20This%20is%20considered%20less%20confusing.%0Aif(optAsync)%7Blink.setAttribute('async'%2C'')%3B%7D%2F%2F%20NOTE%3A%20the%20link%20may%20now%20be%20in%203%20states%3A%20(1)%20pending%20insertion%2C%0A%2F%2F%20(2)%20inflight%2C%20(3)%20already%20loaded.%20In%20each%20case%2C%20we%20need%20to%20add%0A%2F%2F%20event%20listeners%20to%20process%20callbacks.%0Avar%20cleanup%3Dfunction%20cleanup()%7Blink.removeEventListener('load'%2CloadListener)%3Blink.removeEventListener('error'%2CerrorListener)%3B%7D%3Bvar%20loadListener%3Dfunction%20loadListener(event)%7Bcleanup()%3B%2F%2F%20In%20case%20of%20a%20successful%20load%2C%20cache%20the%20load%20event%20on%20the%20link%20so%0A%2F%2F%20that%20it%20can%20be%20used%20to%20short-circuit%20this%20method%20in%20the%20future%20when%0A%2F%2F%20it%20is%20called%20with%20the%20same%20href%20param.%0Alink.__dynamicImportLoaded%3Dtrue%3Bif(onload)%7BwhenImportsReady(function()%7Bonload(event)%3B%7D)%3B%7D%7D%3Bvar%20errorListener%3Dfunction%20errorListener(event)%7Bcleanup()%3B%2F%2F%20In%20case%20of%20an%20error%2C%20remove%20the%20link%20from%20the%20document%20so%20that%20it%0A%2F%2F%20will%20be%20automatically%20created%20again%20the%20next%20time%20%60importHref%60%20is%0A%2F%2F%20called.%0Aif(link.parentNode)%7Blink.parentNode.removeChild(link)%3B%7Dif(onerror)%7BwhenImportsReady(function()%7Bonerror(event)%3B%7D)%3B%7D%7D%3Blink.addEventListener('load'%2CloadListener)%3Blink.addEventListener('error'%2CerrorListener)%3Bif(link.parentNode%3D%3Dnull)%7Bdocument.head.appendChild(link)%3B%2F%2F%20if%20the%20link%20already%20loaded%2C%20dispatch%20a%20fake%20load%20event%0A%2F%2F%20so%20that%20listeners%20are%20called%20and%20get%20a%20proper%20event%20argument.%0A%7Delse%20if(link.__dynamicImportLoaded)%7Blink.dispatchEvent(new%20Event('load'))%3B%7Dreturn%20link%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fimport-href.html.js%0A",
            "resourceBytes": 2990,
            "encodedBytes": 0,
            "unusedBytes": 1877
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20scheduled%3Dfalse%3Bvar%20beforeRenderQueue%3D%5B%5D%3Bvar%20afterRenderQueue%3D%5B%5D%3Bfunction%20schedule()%7Bscheduled%3Dtrue%3B%2F%2F%20before%20next%20render%0ArequestAnimationFrame(function()%7Bscheduled%3Dfalse%3BflushQueue(beforeRenderQueue)%3B%2F%2F%20after%20the%20render%0AsetTimeout(function()%7BrunQueue(afterRenderQueue)%3B%7D)%3B%7D)%3B%7Dfunction%20flushQueue(queue)%7Bwhile(queue.length)%7BcallMethod(queue.shift())%3B%7D%7Dfunction%20runQueue(queue)%7Bfor(var%20i%3D0%2Cl%3Dqueue.length%3Bi%3Cl%3Bi%2B%2B)%7BcallMethod(queue.shift())%3B%7D%7Dfunction%20callMethod(info)%7Bvar%20context%3Dinfo%5B0%5D%3Bvar%20callback%3Dinfo%5B1%5D%3Bvar%20args%3Dinfo%5B2%5D%3Btry%7Bcallback.apply(context%2Cargs)%3B%7Dcatch(e)%7BsetTimeout(function()%7Bthrow%20e%3B%7D)%3B%7D%7Dfunction%20flush()%7Bwhile(beforeRenderQueue.length%7C%7CafterRenderQueue.length)%7BflushQueue(beforeRenderQueue)%3BflushQueue(afterRenderQueue)%3B%7Dscheduled%3Dfalse%3B%7D%2F**%0A%20%20%20*%20Module%20for%20scheduling%20flushable%20pre-render%20and%20post-render%20tasks.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20for%20scheduling%20flushable%20pre-render%20and%20post-render%20tasks.%0A%20%20%20*%2FPolymer.RenderStatus%3D%7B%2F**%0A%20%20%20%20%20*%20Enqueues%20a%20callback%20which%20will%20be%20run%20before%20the%20next%20render%2C%20at%0A%20%20%20%20%20*%20%60requestAnimationFrame%60%20timing.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20is%20useful%20for%20enqueuing%20work%20that%20requires%20DOM%20measurement%2C%0A%20%20%20%20%20*%20since%20measurement%20may%20not%20be%20reliable%20in%20custom%20element%20callbacks%20before%0A%20%20%20%20%20*%20the%20first%20render%2C%20as%20well%20as%20for%20batching%20measurement%20tasks%20in%20general.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Tasks%20in%20this%20queue%20may%20be%20flushed%20by%20calling%20%60Polymer.RenderStatus.flush()%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.RenderStatus%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20context%20Context%20object%20the%20callback%20function%20will%20be%20bound%20to%0A%20%20%20%20%20*%20%40param%20%7Bfunction(...*)%3Avoid%7D%20callback%20Callback%20function%0A%20%20%20%20%20*%20%40param%20%7B!Array%3D%7D%20args%20An%20array%20of%20arguments%20to%20call%20the%20callback%20function%20with%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FbeforeNextRender%3Afunction%20beforeNextRender(context%2Ccallback%2Cargs)%7Bif(!scheduled)%7Bschedule()%3B%7DbeforeRenderQueue.push(%5Bcontext%2Ccallback%2Cargs%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Enqueues%20a%20callback%20which%20will%20be%20run%20after%20the%20next%20render%2C%20equivalent%0A%20%20%20%20%20*%20to%20one%20task%20(%60setTimeout%60)%20after%20the%20next%20%60requestAnimationFrame%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20is%20useful%20for%20tuning%20the%20first-render%20performance%20of%20an%0A%20%20%20%20%20*%20element%20or%20application%20by%20deferring%20non-critical%20work%20until%20after%20the%0A%20%20%20%20%20*%20first%20paint.%20%20Typical%20non-render-critical%20work%20may%20include%20adding%20UI%0A%20%20%20%20%20*%20event%20listeners%20and%20aria%20attributes.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.RenderStatus%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20context%20Context%20object%20the%20callback%20function%20will%20be%20bound%20to%0A%20%20%20%20%20*%20%40param%20%7Bfunction(...*)%3Avoid%7D%20callback%20Callback%20function%0A%20%20%20%20%20*%20%40param%20%7B!Array%3D%7D%20args%20An%20array%20of%20arguments%20to%20call%20the%20callback%20function%20with%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FafterNextRender%3Afunction%20afterNextRender(context%2Ccallback%2Cargs)%7Bif(!scheduled)%7Bschedule()%3B%7DafterRenderQueue.push(%5Bcontext%2Ccallback%2Cargs%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Flushes%20all%20%60beforeNextRender%60%20tasks%2C%20followed%20by%20all%20%60afterNextRender%60%0A%20%20%20%20%20*%20tasks.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.RenderStatus%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fflush%3Aflush%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Frender-status.html.js%0A",
            "resourceBytes": 3121,
            "encodedBytes": 0,
            "unusedBytes": 937
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20unresolved%0Afunction%20resolve()%7Bdocument.body.removeAttribute('unresolved')%3B%7Dif(window.WebComponents)%7Bwindow.addEventListener('WebComponentsReady'%2Cresolve)%3B%7Delse%7Bif(document.readyState%3D%3D%3D'interactive'%7C%7Cdocument.readyState%3D%3D%3D'complete')%7Bresolve()%3B%7Delse%7Bwindow.addEventListener('DOMContentLoaded'%2Cresolve)%3B%7D%7D%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Funresolved.html.js%0A",
            "resourceBytes": 480,
            "encodedBytes": 0,
            "unusedBytes": 0
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bfunction%20newSplice(index%2Cremoved%2CaddedCount)%7Breturn%7Bindex%3Aindex%2Cremoved%3Aremoved%2CaddedCount%3AaddedCount%7D%3B%7Dvar%20EDIT_LEAVE%3D0%3Bvar%20EDIT_UPDATE%3D1%3Bvar%20EDIT_ADD%3D2%3Bvar%20EDIT_DELETE%3D3%3B%2F%2F%20Note%3A%20This%20function%20is%20*based*%20on%20the%20computation%20of%20the%20Levenshtein%0A%2F%2F%20%22edit%22%20distance.%20The%20one%20change%20is%20that%20%22updates%22%20are%20treated%20as%20two%0A%2F%2F%20edits%20-%20not%20one.%20With%20Array%20splices%2C%20an%20update%20is%20really%20a%20delete%0A%2F%2F%20followed%20by%20an%20add.%20By%20retaining%20this%2C%20we%20optimize%20for%20%22keeping%22%20the%0A%2F%2F%20maximum%20array%20items%20in%20the%20original%20array.%20For%20example%3A%0A%2F%2F%0A%2F%2F%20%20%20'xxxx123'%20-%3E%20'123yyyy'%0A%2F%2F%0A%2F%2F%20With%201-edit%20updates%2C%20the%20shortest%20path%20would%20be%20just%20to%20update%20all%20seven%0A%2F%2F%20characters.%20With%202-edit%20updates%2C%20we%20delete%204%2C%20leave%203%2C%20and%20add%204.%20This%0A%2F%2F%20leaves%20the%20substring%20'123'%20intact.%0Afunction%20calcEditDistances(current%2CcurrentStart%2CcurrentEnd%2Cold%2ColdStart%2ColdEnd)%7B%2F%2F%20%22Deletion%22%20columns%0Avar%20rowCount%3DoldEnd-oldStart%2B1%3Bvar%20columnCount%3DcurrentEnd-currentStart%2B1%3Bvar%20distances%3Dnew%20Array(rowCount)%3B%2F%2F%20%22Addition%22%20rows.%20Initialize%20null%20column.%0Afor(var%20i%3D0%3Bi%3CrowCount%3Bi%2B%2B)%7Bdistances%5Bi%5D%3Dnew%20Array(columnCount)%3Bdistances%5Bi%5D%5B0%5D%3Di%3B%7D%2F%2F%20Initialize%20null%20row%0Afor(var%20j%3D0%3Bj%3CcolumnCount%3Bj%2B%2B)%7Bdistances%5B0%5D%5Bj%5D%3Dj%3B%7Dfor(var%20_i%3D1%3B_i%3CrowCount%3B_i%2B%2B)%7Bfor(var%20_j%3D1%3B_j%3CcolumnCount%3B_j%2B%2B)%7Bif(equals(current%5BcurrentStart%2B_j-1%5D%2Cold%5BoldStart%2B_i-1%5D))distances%5B_i%5D%5B_j%5D%3Ddistances%5B_i-1%5D%5B_j-1%5D%3Belse%7Bvar%20north%3Ddistances%5B_i-1%5D%5B_j%5D%2B1%3Bvar%20west%3Ddistances%5B_i%5D%5B_j-1%5D%2B1%3Bdistances%5B_i%5D%5B_j%5D%3Dnorth%3Cwest%3Fnorth%3Awest%3B%7D%7D%7Dreturn%20distances%3B%7D%2F%2F%20This%20starts%20at%20the%20final%20weight%2C%20and%20walks%20%22backward%22%20by%20finding%0A%2F%2F%20the%20minimum%20previous%20weight%20recursively%20until%20the%20origin%20of%20the%20weight%0A%2F%2F%20matrix.%0Afunction%20spliceOperationsFromEditDistances(distances)%7Bvar%20i%3Ddistances.length-1%3Bvar%20j%3Ddistances%5B0%5D.length-1%3Bvar%20current%3Ddistances%5Bi%5D%5Bj%5D%3Bvar%20edits%3D%5B%5D%3Bwhile(i%3E0%7C%7Cj%3E0)%7Bif(i%3D%3D0)%7Bedits.push(EDIT_ADD)%3Bj--%3Bcontinue%3B%7Dif(j%3D%3D0)%7Bedits.push(EDIT_DELETE)%3Bi--%3Bcontinue%3B%7Dvar%20northWest%3Ddistances%5Bi-1%5D%5Bj-1%5D%3Bvar%20west%3Ddistances%5Bi-1%5D%5Bj%5D%3Bvar%20north%3Ddistances%5Bi%5D%5Bj-1%5D%3Bvar%20min%3Dvoid%200%3Bif(west%3Cnorth)min%3Dwest%3CnorthWest%3Fwest%3AnorthWest%3Belse%20min%3Dnorth%3CnorthWest%3Fnorth%3AnorthWest%3Bif(min%3D%3DnorthWest)%7Bif(northWest%3D%3Dcurrent)%7Bedits.push(EDIT_LEAVE)%3B%7Delse%7Bedits.push(EDIT_UPDATE)%3Bcurrent%3DnorthWest%3B%7Di--%3Bj--%3B%7Delse%20if(min%3D%3Dwest)%7Bedits.push(EDIT_DELETE)%3Bi--%3Bcurrent%3Dwest%3B%7Delse%7Bedits.push(EDIT_ADD)%3Bj--%3Bcurrent%3Dnorth%3B%7D%7Dedits.reverse()%3Breturn%20edits%3B%7D%2F**%0A%20%20%20*%20Splice%20Projection%20functions%3A%0A%20%20%20*%0A%20%20%20*%20A%20splice%20map%20is%20a%20representation%20of%20how%20a%20previous%20array%20of%20items%0A%20%20%20*%20was%20transformed%20into%20a%20new%20array%20of%20items.%20Conceptually%20it%20is%20a%20list%20of%0A%20%20%20*%20tuples%20of%0A%20%20%20*%0A%20%20%20*%20%20%20%3Cindex%2C%20removed%2C%20addedCount%3E%0A%20%20%20*%0A%20%20%20*%20which%20are%20kept%20in%20ascending%20index%20order%20of.%20The%20tuple%20represents%20that%20at%0A%20%20%20*%20the%20%7Cindex%7C%2C%20%7Cremoved%7C%20sequence%20of%20items%20were%20removed%2C%20and%20counting%20forward%0A%20%20%20*%20from%20%7Cindex%7C%2C%20%7CaddedCount%7C%20items%20were%20added.%0A%20%20%20*%2F%2F**%0A%20%20%20*%20Lacking%20individual%20splice%20mutation%20information%2C%20the%20minimal%20set%20of%0A%20%20%20*%20splices%20can%20be%20synthesized%20given%20the%20previous%20state%20and%20final%20state%20of%20an%0A%20%20%20*%20array.%20The%20basic%20approach%20is%20to%20calculate%20the%20edit%20distance%20matrix%20and%0A%20%20%20*%20choose%20the%20shortest%20path%20through%20it.%0A%20%20%20*%0A%20%20%20*%20Complexity%3A%20O(l%20*%20p)%0A%20%20%20*%20%20%20l%3A%20The%20length%20of%20the%20current%20array%0A%20%20%20*%20%20%20p%3A%20The%20length%20of%20the%20old%20array%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%7D%20current%20The%20current%20%22changed%22%20array%20for%20which%20to%0A%20%20%20*%20calculate%20splices.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20currentStart%20Starting%20index%20in%20the%20%60current%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20currentEnd%20Ending%20index%20in%20the%20%60current%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40param%20%7B!Array%7D%20old%20The%20original%20%22unchanged%22%20array%20to%20compare%20%60current%60%0A%20%20%20*%20against%20to%20determine%20splices.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20oldStart%20Starting%20index%20in%20the%20%60old%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20oldEnd%20Ending%20index%20in%20the%20%60old%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40return%20%7B!Array%7D%20Returns%20an%20array%20of%20splice%20record%20objects.%20Each%20of%20these%0A%20%20%20*%20contains%3A%20%60index%60%20the%20location%20where%20the%20splice%20occurred%3B%20%60removed%60%0A%20%20%20*%20the%20array%20of%20removed%20items%20from%20this%20location%3B%20%60addedCount%60%20the%20number%0A%20%20%20*%20of%20items%20added%20at%20this%20location.%0A%20%20%20*%2Ffunction%20calcSplices(current%2CcurrentStart%2CcurrentEnd%2Cold%2ColdStart%2ColdEnd)%7Bvar%20prefixCount%3D0%3Bvar%20suffixCount%3D0%3Bvar%20splice%3Dvoid%200%3Bvar%20minLength%3DMath.min(currentEnd-currentStart%2ColdEnd-oldStart)%3Bif(currentStart%3D%3D0%26%26oldStart%3D%3D0)prefixCount%3DsharedPrefix(current%2Cold%2CminLength)%3Bif(currentEnd%3D%3Dcurrent.length%26%26oldEnd%3D%3Dold.length)suffixCount%3DsharedSuffix(current%2Cold%2CminLength-prefixCount)%3BcurrentStart%2B%3DprefixCount%3BoldStart%2B%3DprefixCount%3BcurrentEnd-%3DsuffixCount%3BoldEnd-%3DsuffixCount%3Bif(currentEnd-currentStart%3D%3D0%26%26oldEnd-oldStart%3D%3D0)return%5B%5D%3Bif(currentStart%3D%3DcurrentEnd)%7Bsplice%3DnewSplice(currentStart%2C%5B%5D%2C0)%3Bwhile(oldStart%3ColdEnd)%7Bsplice.removed.push(old%5BoldStart%2B%2B%5D)%3B%7Dreturn%5Bsplice%5D%3B%7Delse%20if(oldStart%3D%3DoldEnd)return%5BnewSplice(currentStart%2C%5B%5D%2CcurrentEnd-currentStart)%5D%3Bvar%20ops%3DspliceOperationsFromEditDistances(calcEditDistances(current%2CcurrentStart%2CcurrentEnd%2Cold%2ColdStart%2ColdEnd))%3Bsplice%3Dundefined%3Bvar%20splices%3D%5B%5D%3Bvar%20index%3DcurrentStart%3Bvar%20oldIndex%3DoldStart%3Bfor(var%20i%3D0%3Bi%3Cops.length%3Bi%2B%2B)%7Bswitch(ops%5Bi%5D)%7Bcase%20EDIT_LEAVE%3Aif(splice)%7Bsplices.push(splice)%3Bsplice%3Dundefined%3B%7Dindex%2B%2B%3BoldIndex%2B%2B%3Bbreak%3Bcase%20EDIT_UPDATE%3Aif(!splice)splice%3DnewSplice(index%2C%5B%5D%2C0)%3Bsplice.addedCount%2B%2B%3Bindex%2B%2B%3Bsplice.removed.push(old%5BoldIndex%5D)%3BoldIndex%2B%2B%3Bbreak%3Bcase%20EDIT_ADD%3Aif(!splice)splice%3DnewSplice(index%2C%5B%5D%2C0)%3Bsplice.addedCount%2B%2B%3Bindex%2B%2B%3Bbreak%3Bcase%20EDIT_DELETE%3Aif(!splice)splice%3DnewSplice(index%2C%5B%5D%2C0)%3Bsplice.removed.push(old%5BoldIndex%5D)%3BoldIndex%2B%2B%3Bbreak%3B%7D%7Dif(splice)%7Bsplices.push(splice)%3B%7Dreturn%20splices%3B%7Dfunction%20sharedPrefix(current%2Cold%2CsearchLength)%7Bfor(var%20i%3D0%3Bi%3CsearchLength%3Bi%2B%2B)%7Bif(!equals(current%5Bi%5D%2Cold%5Bi%5D))return%20i%3B%7Dreturn%20searchLength%3B%7Dfunction%20sharedSuffix(current%2Cold%2CsearchLength)%7Bvar%20index1%3Dcurrent.length%3Bvar%20index2%3Dold.length%3Bvar%20count%3D0%3Bwhile(count%3CsearchLength%26%26equals(current%5B--index1%5D%2Cold%5B--index2%5D))%7Bcount%2B%2B%3B%7Dreturn%20count%3B%7Dfunction%20calculateSplices(current%2Cprevious)%7Breturn%20calcSplices(current%2C0%2Ccurrent.length%2Cprevious%2C0%2Cprevious.length)%3B%7Dfunction%20equals(currentValue%2CpreviousValue)%7Breturn%20currentValue%3D%3D%3DpreviousValue%3B%7D%2F**%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20that%20provides%20utilities%20for%20diffing%20arrays.%0A%20%20%20*%2FPolymer.ArraySplice%3D%7B%2F**%0A%20%20%20%20%20*%20Returns%20an%20array%20of%20splice%20records%20indicating%20the%20minimum%20edits%20required%0A%20%20%20%20%20*%20to%20transform%20the%20%60previous%60%20array%20into%20the%20%60current%60%20array.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Splice%20records%20are%20ordered%20by%20index%20and%20contain%20the%20following%20fields%3A%0A%20%20%20%20%20*%20-%20%60index%60%3A%20index%20where%20edit%20started%0A%20%20%20%20%20*%20-%20%60removed%60%3A%20array%20of%20removed%20items%20from%20this%20index%0A%20%20%20%20%20*%20-%20%60addedCount%60%3A%20number%20of%20items%20added%20at%20this%20index%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20function%20is%20based%20on%20the%20Levenshtein%20%22minimum%20edit%20distance%22%0A%20%20%20%20%20*%20algorithm.%20Note%20that%20updates%20are%20treated%20as%20removal%20followed%20by%20addition.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20worst-case%20time%20complexity%20of%20this%20algorithm%20is%20%60O(l%20*%20p)%60%0A%20%20%20%20%20*%20%20%20l%3A%20The%20length%20of%20the%20current%20array%0A%20%20%20%20%20*%20%20%20p%3A%20The%20length%20of%20the%20previous%20array%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20However%2C%20the%20worst-case%20complexity%20is%20reduced%20by%20an%20%60O(n)%60%20optimization%0A%20%20%20%20%20*%20to%20detect%20any%20shared%20prefix%20%26%20suffix%20between%20the%20two%20arrays%20and%20only%0A%20%20%20%20%20*%20perform%20the%20more%20expensive%20minimum%20edit%20distance%20calculation%20over%20the%0A%20%20%20%20%20*%20non-shared%20portions%20of%20the%20arrays.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40function%0A%20%20%20%20%20*%20%40memberof%20Polymer.ArraySplice%0A%20%20%20%20%20*%20%40param%20%7B!Array%7D%20current%20The%20%22changed%22%20array%20for%20which%20splices%20will%20be%0A%20%20%20%20%20*%20calculated.%0A%20%20%20%20%20*%20%40param%20%7B!Array%7D%20previous%20The%20%22unchanged%22%20original%20array%20to%20compare%0A%20%20%20%20%20*%20%60current%60%20against%20to%20determine%20the%20splices.%0A%20%20%20%20%20*%20%40return%20%7B!Array%7D%20Returns%20an%20array%20of%20splice%20record%20objects.%20Each%20of%20these%0A%20%20%20%20%20*%20contains%3A%20%60index%60%20the%20location%20where%20the%20splice%20occurred%3B%20%60removed%60%0A%20%20%20%20%20*%20the%20array%20of%20removed%20items%20from%20this%20location%3B%20%60addedCount%60%20the%20number%0A%20%20%20%20%20*%20of%20items%20added%20at%20this%20location.%0A%20%20%20%20%20*%2FcalculateSplices%3AcalculateSplices%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Farray-splice.html.js%0A",
            "resourceBytes": 7970,
            "encodedBytes": 0,
            "unusedBytes": 3520
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Returns%20true%20if%20%60node%60%20is%20a%20slot%20element%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20test.%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20given%20%60node%60%20is%20a%20slot%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20isSlot(node)%7Breturn%20node.localName%3D%3D%3D'slot'%3B%7D%2F**%0A%20%20%20*%20Class%20that%20listens%20for%20changes%20(additions%20or%20removals)%20to%0A%20%20%20*%20%22flattened%20nodes%22%20on%20a%20given%20%60node%60.%20The%20list%20of%20flattened%20nodes%20consists%0A%20%20%20*%20of%20a%20node's%20children%20and%2C%20for%20any%20children%20that%20are%20%60%3Cslot%3E%60%20elements%2C%0A%20%20%20*%20the%20expanded%20flattened%20list%20of%20%60assignedNodes%60.%0A%20%20%20*%20For%20example%2C%20if%20the%20observed%20node%20has%20children%20%60%3Ca%3E%3C%2Fa%3E%3Cslot%3E%3C%2Fslot%3E%3Cb%3E%3C%2Fb%3E%60%0A%20%20%20*%20and%20the%20%60%3Cslot%3E%60%20has%20one%20%60%3Cdiv%3E%60%20assigned%20to%20it%2C%20then%20the%20flattened%0A%20%20%20*%20nodes%20list%20is%20%60%3Ca%3E%3C%2Fa%3E%3Cdiv%3E%3C%2Fdiv%3E%3Cb%3E%3C%2Fb%3E%60.%20If%20the%20%60%3Cslot%3E%60%20has%20other%0A%20%20%20*%20%60%3Cslot%3E%60%20elements%20assigned%20to%20it%2C%20these%20are%20flattened%20as%20well.%0A%20%20%20*%0A%20%20%20*%20The%20provided%20%60callback%60%20is%20called%20whenever%20any%20change%20to%20this%20list%0A%20%20%20*%20of%20flattened%20nodes%20occurs%2C%20where%20an%20addition%20or%20removal%20of%20a%20node%20is%0A%20%20%20*%20considered%20a%20change.%20The%20%60callback%60%20is%20called%20with%20one%20argument%2C%20an%20object%0A%20%20%20*%20containing%20an%20array%20of%20any%20%60addedNodes%60%20and%20%60removedNodes%60.%0A%20%20%20*%0A%20%20%20*%20Note%3A%20the%20callback%20is%20called%20asynchronous%20to%20any%20changes%0A%20%20%20*%20at%20a%20microtask%20checkpoint.%20This%20is%20because%20observation%20is%20performed%20using%0A%20%20%20*%20%60MutationObserver%60%20and%20the%20%60%3Cslot%3E%60%20element's%20%60slotchange%60%20event%20which%0A%20%20%20*%20are%20asynchronous.%0A%20%20%20*%0A%20%20%20*%20An%20example%3A%0A%20%20%20*%20%60%60%60js%0A%20%20%20*%20class%20TestSelfObserve%20extends%20Polymer.Element%20%7B%0A%20%20%20*%20%20%20static%20get%20is()%20%7B%20return%20'test-self-observe'%3B%7D%0A%20%20%20*%20%20%20connectedCallback()%20%7B%0A%20%20%20*%20%20%20%20%20super.connectedCallback()%3B%0A%20%20%20*%20%20%20%20%20this._observer%20%3D%20new%20Polymer.FlattenedNodesObserver(this%2C%20(info)%20%3D%3E%20%7B%0A%20%20%20*%20%20%20%20%20%20%20this.info%20%3D%20info%3B%0A%20%20%20*%20%20%20%20%20%7D)%3B%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%20%20%20disconnectedCallback()%20%7B%0A%20%20%20*%20%20%20%20%20super.disconnectedCallback()%3B%0A%20%20%20*%20%20%20%20%20this._observer.disconnect()%3B%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%20%7D%0A%20%20%20*%20customElements.define(TestSelfObserve.is%2C%20TestSelfObserve)%3B%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Class%20that%20listens%20for%20changes%20(additions%20or%20removals)%20to%0A%20%20%20*%20%22flattened%20nodes%22%20on%20a%20given%20%60node%60.%0A%20%20%20*%2Fvar%20FlattenedNodesObserver%3Dfunction()%7B_createClass(FlattenedNodesObserver%2Cnull%2C%5B%7Bkey%3A'getFlattenedNodes'%2C%2F**%0A%20%20%20%20%20*%20Returns%20the%20list%20of%20flattened%20nodes%20for%20the%20given%20%60node%60.%0A%20%20%20%20%20*%20This%20list%20consists%20of%20a%20node's%20children%20and%2C%20for%20any%20children%0A%20%20%20%20%20*%20that%20are%20%60%3Cslot%3E%60%20elements%2C%20the%20expanded%20flattened%20list%20of%20%60assignedNodes%60.%0A%20%20%20%20%20*%20For%20example%2C%20if%20the%20observed%20node%20has%20children%20%60%3Ca%3E%3C%2Fa%3E%3Cslot%3E%3C%2Fslot%3E%3Cb%3E%3C%2Fb%3E%60%0A%20%20%20%20%20*%20and%20the%20%60%3Cslot%3E%60%20has%20one%20%60%3Cdiv%3E%60%20assigned%20to%20it%2C%20then%20the%20flattened%0A%20%20%20%20%20*%20nodes%20list%20is%20%60%3Ca%3E%3C%2Fa%3E%3Cdiv%3E%3C%2Fdiv%3E%3Cb%3E%3C%2Fb%3E%60.%20If%20the%20%60%3Cslot%3E%60%20has%20other%0A%20%20%20%20%20*%20%60%3Cslot%3E%60%20elements%20assigned%20to%20it%2C%20these%20are%20flattened%20as%20well.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BHTMLElement%7CHTMLSlotElement%7D%20node%20The%20node%20for%20which%20to%20return%20the%20list%20of%20flattened%20nodes.%0A%20%20%20%20%20*%20%40return%20%7BArray%7D%20The%20list%20of%20flattened%20nodes%20for%20the%20given%20%60node%60.%0A%20%20%20%20*%2Fvalue%3Afunction%20getFlattenedNodes(node)%7Bif(isSlot(node))%7Bnode%3D%2F**%20%40type%20%7BHTMLSlotElement%7D%20*%2Fnode%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Areturn%20node.assignedNodes(%7Bflatten%3Atrue%7D)%3B%7Delse%7Breturn%20Array.from(node.childNodes).map(function(node)%7Bif(isSlot(node))%7Bnode%3D%2F**%20%40type%20%7BHTMLSlotElement%7D%20*%2Fnode%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Areturn%20node.assignedNodes(%7Bflatten%3Atrue%7D)%3B%7Delse%7Breturn%5Bnode%5D%3B%7D%7D).reduce(function(a%2Cb)%7Breturn%20a.concat(b)%3B%7D%2C%5B%5D)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BElement%7D%20target%20Node%20on%20which%20to%20listen%20for%20changes.%0A%20%20%20%20%20*%20%40param%20%7B%3Ffunction(!Element%2C%20%7B%20target%3A%20!Element%2C%20addedNodes%3A%20!Array%3C!Element%3E%2C%20removedNodes%3A%20!Array%3C!Element%3E%20%7D)%3Avoid%7D%20callback%20Function%20called%20when%20there%20are%20additions%0A%20%20%20%20%20*%20or%20removals%20from%20the%20target's%20list%20of%20flattened%20nodes.%0A%20%20%20%20*%2F%7D%5D)%3Bfunction%20FlattenedNodesObserver(target%2Ccallback)%7Bvar%20_this%3Dthis%3B_classCallCheck(this%2CFlattenedNodesObserver)%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7BMutationObserver%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._shadyChildrenObserver%3Dnull%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7BMutationObserver%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._nativeChildrenObserver%3Dnull%3Bthis._connected%3Dfalse%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7BElement%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._target%3Dtarget%3Bthis.callback%3Dcallback%3Bthis._effectiveNodes%3D%5B%5D%3Bthis._observer%3Dnull%3Bthis._scheduled%3Dfalse%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7Bfunction()%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._boundSchedule%3Dfunction()%7B_this._schedule()%3B%7D%3Bthis.connect()%3Bthis._schedule()%3B%7D%2F**%0A%20%20%20%20%20*%20Activates%20an%20observer.%20This%20method%20is%20automatically%20called%20when%0A%20%20%20%20%20*%20a%20%60FlattenedNodesObserver%60%20is%20created.%20It%20should%20only%20be%20called%20to%0A%20%20%20%20%20*%20re-activate%20an%20observer%20that%20has%20been%20deactivated%20via%20the%20%60disconnect%60%20method.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_createClass(FlattenedNodesObserver%2C%5B%7Bkey%3A'connect'%2Cvalue%3Afunction%20connect()%7Bvar%20_this2%3Dthis%3Bif(isSlot(this._target))%7Bthis._listenSlots(%5Bthis._target%5D)%3B%7Delse%20if(this._target.children)%7Bthis._listenSlots(this._target.children)%3Bif(window.ShadyDOM)%7Bthis._shadyChildrenObserver%3DShadyDOM.observeChildren(this._target%2Cfunction(mutations)%7B_this2._processMutations(mutations)%3B%7D)%3B%7Delse%7Bthis._nativeChildrenObserver%3Dnew%20MutationObserver(function(mutations)%7B_this2._processMutations(mutations)%3B%7D)%3Bthis._nativeChildrenObserver.observe(this._target%2C%7BchildList%3Atrue%7D)%3B%7D%7Dthis._connected%3Dtrue%3B%7D%2F**%0A%20%20%20%20%20*%20Deactivates%20the%20flattened%20nodes%20observer.%20After%20calling%20this%20method%0A%20%20%20%20%20*%20the%20observer%20callback%20will%20not%20be%20called%20when%20changes%20to%20flattened%20nodes%0A%20%20%20%20%20*%20occur.%20The%20%60connect%60%20method%20may%20be%20subsequently%20called%20to%20reactivate%0A%20%20%20%20%20*%20the%20observer.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnect'%2Cvalue%3Afunction%20disconnect()%7Bif(isSlot(this._target))%7Bthis._unlistenSlots(%5Bthis._target%5D)%3B%7Delse%20if(this._target.children)%7Bthis._unlistenSlots(this._target.children)%3Bif(window.ShadyDOM%26%26this._shadyChildrenObserver)%7BShadyDOM.unobserveChildren(this._shadyChildrenObserver)%3Bthis._shadyChildrenObserver%3Dnull%3B%7Delse%20if(this._nativeChildrenObserver)%7Bthis._nativeChildrenObserver.disconnect()%3Bthis._nativeChildrenObserver%3Dnull%3B%7D%7Dthis._connected%3Dfalse%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_schedule'%2Cvalue%3Afunction%20_schedule()%7Bvar%20_this3%3Dthis%3Bif(!this._scheduled)%7Bthis._scheduled%3Dtrue%3BPolymer.Async.microTask.run(function()%7Breturn%20_this3.flush()%3B%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BArray%3CMutationRecord%3E%7D%20mutations%20Mutations%20signaled%20by%20the%20mutation%20observer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_processMutations'%2Cvalue%3Afunction%20_processMutations(mutations)%7Bthis._processSlotMutations(mutations)%3Bthis.flush()%3B%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BArray%3CMutationRecord%3E%7D%20mutations%20Mutations%20signaled%20by%20the%20mutation%20observer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_processSlotMutations'%2Cvalue%3Afunction%20_processSlotMutations(mutations)%7Bif(mutations)%7Bfor(var%20i%3D0%3Bi%3Cmutations.length%3Bi%2B%2B)%7Bvar%20mutation%3Dmutations%5Bi%5D%3Bif(mutation.addedNodes)%7Bthis._listenSlots(mutation.addedNodes)%3B%7Dif(mutation.removedNodes)%7Bthis._unlistenSlots(mutation.removedNodes)%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20*%20Flushes%20the%20observer%20causing%20any%20pending%20changes%20to%20be%20immediately%0A%20%20%20%20%20*%20delivered%20the%20observer%20callback.%20By%20default%20these%20changes%20are%20delivered%0A%20%20%20%20%20*%20asynchronously%20at%20the%20next%20microtask%20checkpoint.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20any%20pending%20changes%20caused%20the%20observer%0A%20%20%20%20%20*%20callback%20to%20run.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'flush'%2Cvalue%3Afunction%20flush()%7Bif(!this._connected)%7Breturn%20false%3B%7Dif(window.ShadyDOM)%7BShadyDOM.flush()%3B%7Dif(this._nativeChildrenObserver)%7Bthis._processSlotMutations(this._nativeChildrenObserver.takeRecords())%3B%7Delse%20if(this._shadyChildrenObserver)%7Bthis._processSlotMutations(this._shadyChildrenObserver.takeRecords())%3B%7Dthis._scheduled%3Dfalse%3Bvar%20info%3D%7Btarget%3Athis._target%2CaddedNodes%3A%5B%5D%2CremovedNodes%3A%5B%5D%7D%3Bvar%20newNodes%3Dthis.constructor.getFlattenedNodes(this._target)%3Bvar%20splices%3DPolymer.ArraySplice.calculateSplices(newNodes%2Cthis._effectiveNodes)%3B%2F%2F%20process%20removals%0Afor(var%20i%3D0%2Cs%3Bi%3Csplices.length%26%26(s%3Dsplices%5Bi%5D)%3Bi%2B%2B)%7Bfor(var%20j%3D0%2Cn%3Bj%3Cs.removed.length%26%26(n%3Ds.removed%5Bj%5D)%3Bj%2B%2B)%7Binfo.removedNodes.push(n)%3B%7D%7D%2F%2F%20process%20adds%0Afor(var%20_i%3D0%2C_s%3B_i%3Csplices.length%26%26(_s%3Dsplices%5B_i%5D)%3B_i%2B%2B)%7Bfor(var%20_j%3D_s.index%3B_j%3C_s.index%2B_s.addedCount%3B_j%2B%2B)%7Binfo.addedNodes.push(newNodes%5B_j%5D)%3B%7D%7D%2F%2F%20update%20cache%0Athis._effectiveNodes%3DnewNodes%3Bvar%20didFlush%3Dfalse%3Bif(info.addedNodes.length%7C%7Cinfo.removedNodes.length)%7BdidFlush%3Dtrue%3Bthis.callback.call(this._target%2Cinfo)%3B%7Dreturn%20didFlush%3B%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B!Array%3CElement%7CNode%3E%7C!NodeList%3CNode%3E%7D%20nodeList%20Nodes%20that%20could%20change%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_listenSlots'%2Cvalue%3Afunction%20_listenSlots(nodeList)%7Bfor(var%20i%3D0%3Bi%3CnodeList.length%3Bi%2B%2B)%7Bvar%20n%3DnodeList%5Bi%5D%3Bif(isSlot(n))%7Bn.addEventListener('slotchange'%2Cthis._boundSchedule)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B!Array%3CElement%7CNode%3E%7C!NodeList%3CNode%3E%7D%20nodeList%20Nodes%20that%20could%20change%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_unlistenSlots'%2Cvalue%3Afunction%20_unlistenSlots(nodeList)%7Bfor(var%20i%3D0%3Bi%3CnodeList.length%3Bi%2B%2B)%7Bvar%20n%3DnodeList%5Bi%5D%3Bif(isSlot(n))%7Bn.removeEventListener('slotchange'%2Cthis._boundSchedule)%3B%7D%7D%7D%7D%5D)%3Breturn%20FlattenedNodesObserver%3B%7D()%3BPolymer.FlattenedNodesObserver%3DFlattenedNodesObserver%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fflattened-nodes-observer.html.js%0A",
            "resourceBytes": 9727,
            "encodedBytes": 0,
            "unusedBytes": 4068
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20debouncerQueue%3D%5B%5D%3B%2F**%0A%20%20%20*%20Adds%20a%20%60Polymer.Debouncer%60%20to%20a%20list%20of%20globally%20flushable%20tasks.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7B!Polymer.Debouncer%7D%20debouncer%20Debouncer%20to%20enqueue%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.enqueueDebouncer%3Dfunction(debouncer)%7BdebouncerQueue.push(debouncer)%3B%7D%3Bfunction%20flushDebouncers()%7Bvar%20didFlush%3DBoolean(debouncerQueue.length)%3Bwhile(debouncerQueue.length)%7Btry%7BdebouncerQueue.shift().flush()%3B%7Dcatch(e)%7BsetTimeout(function()%7Bthrow%20e%3B%7D)%3B%7D%7Dreturn%20didFlush%3B%7D%2F**%0A%20%20%20*%20Forces%20several%20classes%20of%20asynchronously%20queued%20tasks%20to%20flush%3A%0A%20%20%20*%20-%20Debouncers%20added%20via%20%60enqueueDebouncer%60%0A%20%20%20*%20-%20ShadyDOM%20distribution%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.flush%3Dfunction()%7Bvar%20shadyDOM%3Dvoid%200%2Cdebouncers%3Dvoid%200%3Bdo%7BshadyDOM%3Dwindow.ShadyDOM%26%26ShadyDOM.flush()%3Bif(window.ShadyCSS%26%26window.ShadyCSS.ScopingShim)%7Bwindow.ShadyCSS.ScopingShim.flush()%3B%7Ddebouncers%3DflushDebouncers()%3B%7Dwhile(shadyDOM%7C%7Cdebouncers)%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fflush.html.js%0A",
            "resourceBytes": 1114,
            "encodedBytes": 0,
            "unusedBytes": 489
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3Bvar%20p%3DElement.prototype%3B%2F**%0A%20%20%20*%20%40const%20%7Bfunction(this%3ANode%2C%20string)%3A%20boolean%7D%0A%20%20%20*%2Fvar%20normalizedMatchesSelector%3Dp.matches%7C%7Cp.matchesSelector%7C%7Cp.mozMatchesSelector%7C%7Cp.msMatchesSelector%7C%7Cp.oMatchesSelector%7C%7Cp.webkitMatchesSelector%3B%2F**%0A%20%20%20*%20Cross-platform%20%60element.matches%60%20shim.%0A%20%20%20*%0A%20%20%20*%20%40function%20matchesSelector%0A%20%20%20*%20%40memberof%20Polymer.dom%0A%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20check%20selector%20against%0A%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20match%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20node%20matched%20selector%0A%20%20%20*%2Fvar%20matchesSelector%3Dfunction%20matchesSelector(node%2Cselector)%7Breturn%20normalizedMatchesSelector.call(node%2Cselector)%3B%7D%3B%2F**%0A%20%20%20*%20Node%20API%20wrapper%20class%20returned%20from%20%60Polymer.dom.(target)%60%20when%0A%20%20%20*%20%60target%60%20is%20a%20%60Node%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2Fvar%20DomApi%3Dfunction()%7B%2F**%0A%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20for%20which%20to%20create%20a%20Polymer.dom%20helper%20object.%0A%20%20%20%20%20*%2Ffunction%20DomApi(node)%7B_classCallCheck(this%2CDomApi)%3Bthis.node%3Dnode%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20an%20instance%20of%20%60Polymer.FlattenedNodesObserver%60%20that%0A%20%20%20%20%20*%20listens%20for%20node%20changes%20on%20this%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bfunction(!Element%2C%20%7B%20target%3A%20!Element%2C%20addedNodes%3A%20!Array%3C!Element%3E%2C%20removedNodes%3A%20!Array%3C!Element%3E%20%7D)%3Avoid%7D%20callback%20Called%20when%20direct%20or%20distributed%20children%0A%20%20%20%20%20*%20%20%20of%20this%20element%20changes%0A%20%20%20%20%20*%20%40return%20%7B!Polymer.FlattenedNodesObserver%7D%20Observer%20instance%0A%20%20%20%20%20*%2F_createClass(DomApi%2C%5B%7Bkey%3A'observeNodes'%2Cvalue%3Afunction%20observeNodes(callback)%7Breturn%20new%20Polymer.FlattenedNodesObserver(this.node%2Ccallback)%3B%7D%2F**%0A%20%20%20%20%20*%20Disconnects%20an%20observer%20previously%20created%20via%20%60observeNodes%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!Polymer.FlattenedNodesObserver%7D%20observerHandle%20Observer%20instance%0A%20%20%20%20%20*%20%20%20to%20disconnect.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unobserveNodes'%2Cvalue%3Afunction%20unobserveNodes(observerHandle)%7BobserverHandle.disconnect()%3B%7D%2F**%0A%20%20%20%20%20*%20Provided%20as%20a%20backwards-compatible%20API%20only.%20%20This%20method%20does%20nothing.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'notifyObserver'%2Cvalue%3Afunction%20notifyObserver()%7B%7D%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20provided%20node%20is%20contained%20with%20this%20element's%0A%20%20%20%20%20*%20light-DOM%20children%20or%20shadow%20root%2C%20including%20any%20nested%20shadow%20roots%0A%20%20%20%20%20*%20of%20children%20therein.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20test%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20given%20%60node%60%20is%20contained%20within%0A%20%20%20%20%20*%20%20%20this%20element's%20light%20or%20shadow%20DOM.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deepContains'%2Cvalue%3Afunction%20deepContains(node)%7Bif(this.node.contains(node))%7Breturn%20true%3B%7Dvar%20n%3Dnode%3Bvar%20doc%3Dnode.ownerDocument%3B%2F%2F%20walk%20from%20node%20to%20%60this%60%20or%20%60document%60%0Awhile(n%26%26n!%3D%3Ddoc%26%26n!%3D%3Dthis.node)%7B%2F%2F%20use%20logical%20parentnode%2C%20or%20native%20ShadowRoot%20host%0An%3Dn.parentNode%7C%7Cn.host%3B%7Dreturn%20n%3D%3D%3Dthis.node%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20root%20node%20of%20this%20node.%20%20Equivalent%20to%20%60getRoodNode()%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BNode%7D%20Top%20most%20element%20in%20the%20dom%20tree%20in%20which%20the%20node%0A%20%20%20%20%20*%20exists.%20If%20the%20node%20is%20connected%20to%20a%20document%20this%20is%20either%20a%0A%20%20%20%20%20*%20shadowRoot%20or%20the%20document%3B%20otherwise%2C%20it%20may%20be%20the%20node%0A%20%20%20%20%20*%20itself%20or%20a%20node%20or%20document%20fragment%20containing%20it.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getOwnerRoot'%2Cvalue%3Afunction%20getOwnerRoot()%7Breturn%20this.node.getRootNode()%3B%7D%2F**%0A%20%20%20%20%20*%20For%20slot%20elements%2C%20returns%20the%20nodes%20assigned%20to%20the%20slot%3B%20otherwise%0A%20%20%20%20%20*%20an%20empty%20array.%20It%20is%20equivalent%20to%20%60%3Cslot%3E.addignedNodes(%7Bflatten%3Atrue%7D)%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20Array%20of%20assigned%20nodes%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getDistributedNodes'%2Cvalue%3Afunction%20getDistributedNodes()%7Breturn%20this.node.localName%3D%3D%3D'slot'%3Fthis.node.assignedNodes(%7Bflatten%3Atrue%7D)%3A%5B%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20an%20array%20of%20all%20slots%20this%20element%20was%20distributed%20to.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLSlotElement%3E%7D%20Description%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getDestinationInsertionPoints'%2Cvalue%3Afunction%20getDestinationInsertionPoints()%7Bvar%20ip%24%3D%5B%5D%3Bvar%20n%3Dthis.node.assignedSlot%3Bwhile(n)%7Bip%24.push(n)%3Bn%3Dn.assignedSlot%3B%7Dreturn%20ip%24%3B%7D%2F**%0A%20%20%20%20%20*%20Calls%20%60importNode%60%20on%20the%20%60ownerDocument%60%20for%20this%20node.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20import%0A%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20deep%20True%20if%20the%20node%20should%20be%20cloned%20deeply%20during%0A%20%20%20%20%20*%20%20%20import%0A%20%20%20%20%20*%20%40return%20%7BNode%7D%20Clone%20of%20given%20node%20imported%20to%20this%20owner%20document%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'importNode'%2Cvalue%3Afunction%20importNode(node%2Cdeep)%7Bvar%20doc%3Dthis.node%20instanceof%20Document%3Fthis.node%3Athis.node.ownerDocument%3Breturn%20doc.importNode(node%2Cdeep)%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20Returns%20a%20flattened%20list%20of%20all%20child%20nodes%20and%0A%20%20%20%20%20*%20nodes%20assigned%20to%20child%20slots.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveChildNodes'%2Cvalue%3Afunction%20getEffectiveChildNodes()%7Breturn%20Polymer.FlattenedNodesObserver.getFlattenedNodes(this.node)%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20filtered%20list%20of%20flattened%20child%20elements%20for%20this%20element%20based%0A%20%20%20%20%20*%20on%20the%20given%20selector.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20filter%20nodes%20against%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLElement%3E%7D%20List%20of%20flattened%20child%20elements%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryDistributedElements'%2Cvalue%3Afunction%20queryDistributedElements(selector)%7Bvar%20c%24%3Dthis.getEffectiveChildNodes()%3Bvar%20list%3D%5B%5D%3Bfor(var%20i%3D0%2Cl%3Dc%24.length%2Cc%3Bi%3Cl%26%26(c%3Dc%24%5Bi%5D)%3Bi%2B%2B)%7Bif(c.nodeType%3D%3D%3DNode.ELEMENT_NODE%26%26matchesSelector(c%2Cselector))%7Blist.push(c)%3B%7D%7Dreturn%20list%3B%7D%2F**%0A%20%20%20%20%20*%20For%20shadow%20roots%2C%20returns%20the%20currently%20focused%20element%20within%20this%0A%20%20%20%20%20*%20shadow%20root.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BNode%7Cundefined%7D%20Currently%20focused%20element%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'activeElement'%2Cget%3Afunction%20get()%7Bvar%20node%3Dthis.node%3Breturn%20node._activeElement!%3D%3Dundefined%3Fnode._activeElement%3Anode.activeElement%3B%7D%7D%5D)%3Breturn%20DomApi%3B%7D()%3Bfunction%20forwardMethods(proto%2Cmethods)%7Bvar%20_loop%3Dfunction%20_loop(i)%7Bvar%20method%3Dmethods%5Bi%5D%3B%2F*%20eslint-disable%20valid-jsdoc%20*%2Fproto%5Bmethod%5D%3D%2F**%20%40this%20%7BDomApi%7D%20*%2Ffunction()%7Breturn%20this.node%5Bmethod%5D.apply(this.node%2Carguments)%3B%7D%3B%2F*%20eslint-enable%20*%2F%7D%3Bfor(var%20i%3D0%3Bi%3Cmethods.length%3Bi%2B%2B)%7B_loop(i)%3B%7D%7Dfunction%20forwardReadOnlyProperties(proto%2Cproperties)%7Bvar%20_loop2%3Dfunction%20_loop2(i)%7Bvar%20name%3Dproperties%5Bi%5D%3BObject.defineProperty(proto%2Cname%2C%7Bget%3Afunction%20get()%7Bvar%20domApi%3D%2F**%20%40type%20%7BDomApi%7D%20*%2Fthis%3Breturn%20domApi.node%5Bname%5D%3B%7D%2Cconfigurable%3Atrue%7D)%3B%7D%3Bfor(var%20i%3D0%3Bi%3Cproperties.length%3Bi%2B%2B)%7B_loop2(i)%3B%7D%7Dfunction%20forwardProperties(proto%2Cproperties)%7Bvar%20_loop3%3Dfunction%20_loop3(i)%7Bvar%20name%3Dproperties%5Bi%5D%3BObject.defineProperty(proto%2Cname%2C%7Bget%3Afunction%20get()%7Bvar%20domApi%3D%2F**%20%40type%20%7BDomApi%7D%20*%2Fthis%3Breturn%20domApi.node%5Bname%5D%3B%7D%2Cset%3Afunction%20set(value)%7B%2F**%20%40type%20%7BDomApi%7D%20*%2Fthis.node%5Bname%5D%3Dvalue%3B%7D%2Cconfigurable%3Atrue%7D)%3B%7D%3Bfor(var%20i%3D0%3Bi%3Cproperties.length%3Bi%2B%2B)%7B_loop3(i)%3B%7D%7DforwardMethods(DomApi.prototype%2C%5B'cloneNode'%2C'appendChild'%2C'insertBefore'%2C'removeChild'%2C'replaceChild'%2C'setAttribute'%2C'removeAttribute'%2C'querySelector'%2C'querySelectorAll'%5D)%3BforwardReadOnlyProperties(DomApi.prototype%2C%5B'parentNode'%2C'firstChild'%2C'lastChild'%2C'nextSibling'%2C'previousSibling'%2C'firstElementChild'%2C'lastElementChild'%2C'nextElementSibling'%2C'previousElementSibling'%2C'childNodes'%2C'children'%2C'classList'%5D)%3BforwardProperties(DomApi.prototype%2C%5B'textContent'%2C'innerHTML'%5D)%3B%2F**%0A%20%20%20*%20Event%20API%20wrapper%20class%20returned%20from%20%60Polymer.dom.(target)%60%20when%0A%20%20%20*%20%60target%60%20is%20an%20%60Event%60.%0A%20%20%20*%2Fvar%20EventApi%3Dfunction()%7Bfunction%20EventApi(event)%7B_classCallCheck(this%2CEventApi)%3Bthis.event%3Devent%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20first%20node%20on%20the%20%60composedPath%60%20of%20this%20event.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!EventTarget%7D%20The%20node%20this%20event%20was%20dispatched%20to%0A%20%20%20%20%20*%2F_createClass(EventApi%2C%5B%7Bkey%3A'rootTarget'%2Cget%3Afunction%20get()%7Breturn%20this.event.composedPath()%5B0%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20local%20(re-targeted)%20target%20for%20this%20event.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!EventTarget%7D%20The%20local%20(re-targeted)%20target%20for%20this%20event.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'localTarget'%2Cget%3Afunction%20get()%7Breturn%20this.event.target%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20%60composedPath%60%20for%20this%20event.%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!EventTarget%3E%7D%20The%20nodes%20this%20event%20propagated%20through%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'path'%2Cget%3Afunction%20get()%7Breturn%20this.event.composedPath()%3B%7D%7D%5D)%3Breturn%20EventApi%3B%7D()%3BPolymer.DomApi%3DDomApi%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20deep%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.cloneNode%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20node%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.appendChild%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20newChild%0A%20%20%20*%20%40param%20%7BNode%7D%20refChild%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.insertBefore%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20node%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.removeChild%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20oldChild%0A%20%20%20*%20%40param%20%7B!Node%7D%20newChild%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.replaceChild%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%0A%20%20%20*%20%40param%20%7Bstring%7D%20value%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.setAttribute%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.removeAttribute%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20selector%0A%20%20%20*%20%40return%20%7B%3FElement%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.querySelector%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20selector%0A%20%20%20*%20%40return%20%7B!NodeList%3C!Element%3E%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.querySelectorAll%3B%2F**%0A%20%20%20*%20Legacy%20DOM%20and%20Event%20manipulation%20API%20wrapper%20factory%20used%20to%20abstract%0A%20%20%20*%20differences%20between%20native%20Shadow%20DOM%20and%20%22Shady%20DOM%22%20when%20polyfilling%20on%0A%20%20%20*%20older%20browsers.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20in%20Polymer%202.x%20use%20of%20%60Polymer.dom%60%20is%20no%20longer%20required%20and%0A%20%20%20*%20in%20the%20majority%20of%20cases%20simply%20facades%20directly%20to%20the%20standard%20native%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40summary%20Legacy%20DOM%20and%20Event%20manipulation%20API%20wrapper%20factory%20used%20to%0A%20%20%20*%20abstract%20differences%20between%20native%20Shadow%20DOM%20and%20%22Shady%20DOM.%22%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7B(Node%7CEvent)%3D%7D%20obj%20Node%20or%20event%20to%20operate%20on%0A%20%20%20*%20%40return%20%7B!DomApi%7C!EventApi%7D%20Wrapper%20providing%20either%20node%20API%20or%20event%20API%0A%20%20%20*%2FPolymer.dom%3Dfunction(obj)%7Bobj%3Dobj%7C%7Cdocument%3Bif(!obj.__domApi)%7Bvar%20helper%3Dvoid%200%3Bif(obj%20instanceof%20Event)%7Bhelper%3Dnew%20EventApi(obj)%3B%7Delse%7Bhelper%3Dnew%20DomApi(obj)%3B%7Dobj.__domApi%3Dhelper%3B%7Dreturn%20obj.__domApi%3B%7D%3BPolymer.dom.matchesSelector%3DmatchesSelector%3B%2F**%0A%20%20%20*%20Forces%20several%20classes%20of%20asynchronously%20queued%20tasks%20to%20flush%3A%0A%20%20%20*%20-%20Debouncers%20added%20via%20%60Polymer.enqueueDebouncer%60%0A%20%20%20*%20-%20ShadyDOM%20distribution%0A%20%20%20*%0A%20%20%20*%20This%20method%20facades%20to%20%60Polymer.flush%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer.dom%0A%20%20%20*%2FPolymer.dom.flush%3DPolymer.flush%3B%2F**%0A%20%20%20*%20Adds%20a%20%60Polymer.Debouncer%60%20to%20a%20list%20of%20globally%20flushable%20tasks.%0A%20%20%20*%0A%20%20%20*%20This%20method%20facades%20to%20%60Polymer.enqueueDebouncer%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer.dom%0A%20%20%20*%20%40param%20%7B!Polymer.Debouncer%7D%20debouncer%20Debouncer%20to%20enqueue%0A%20%20%20*%2FPolymer.dom.addDebouncer%3DPolymer.enqueueDebouncer%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fpolymer.dom.html.js%0A",
            "resourceBytes": 11133,
            "encodedBytes": 0,
            "unusedBytes": 2351
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7Dfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20styleInterface%3Dwindow.ShadyCSS%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20Polymer's%20%22legacy%22%20API%20intended%20to%20be%0A%20%20%20*%20backward-compatible%20to%20the%20greatest%20extent%20possible%20with%20the%20API%0A%20%20%20*%20found%20on%20the%20Polymer%201.x%20%60Polymer.Base%60%20prototype%20applied%20to%20all%20elements%0A%20%20%20*%20defined%20using%20the%20%60Polymer(%7B...%7D)%60%20function.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.ElementMixin%0A%20%20%20*%20%40appliesMixin%20Polymer.GestureEventListeners%0A%20%20%20*%20%40property%20isAttached%20%7Bboolean%7D%20Set%20to%20%60true%60%20in%20this%20element's%0A%20%20%20*%20%20%20%60connectedCallback%60%20and%20%60false%60%20in%20%60disconnectedCallback%60%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20Polymer's%20%22legacy%22%20API%0A%20%20%20*%2FPolymer.LegacyElementMixin%3DPolymer.dedupingMixin(function(base)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_GestureEventListeners%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_DirMixin%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20legacyElementBase%3DPolymer.DirMixin(Polymer.GestureEventListeners(Polymer.ElementMixin(base)))%3B%2F**%0A%20%20%20%20%20*%20Map%20of%20simple%20names%20to%20touch%20action%20names%0A%20%20%20%20%20*%20%40dict%0A%20%20%20%20%20*%2Fvar%20DIRECTION_MAP%3D%7B'x'%3A'pan-x'%2C'y'%3A'pan-y'%2C'none'%3A'none'%2C'all'%3A'auto'%7D%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40extends%20%7BlegacyElementBase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_LegacyElementMixin%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20LegacyElement%3Dfunction(_legacyElementBase)%7B_inherits(LegacyElement%2C_legacyElementBase)%3Bfunction%20LegacyElement()%7B_classCallCheck(this%2CLegacyElement)%3B%2F**%20%40type%20%7Bboolean%7D%20*%2Fvar%20_this%3D_possibleConstructorReturn(this%2C(LegacyElement.__proto__%7C%7CObject.getPrototypeOf(LegacyElement)).call(this))%3B_this.isAttached%3B%2F**%20%40type%20%7BWeakMap%3C!Element%2C%20!Object%3Cstring%2C%20!Function%3E%3E%7D%20*%2F_this.__boundListeners%3B%2F**%20%40type%20%7BObject%3Cstring%2C%20Function%3E%7D%20*%2F_this._debouncers%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Forwards%20%60importMeta%60%20from%20the%20prototype%20(i.e.%20from%20the%20info%20object%0A%20%20%20%20%20%20%20*%20passed%20to%20%60Polymer(%7B...%7D)%60)%20to%20the%20static%20API.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Object%7D%20The%20%60import.meta%60%20object%20set%20on%20the%20prototype%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20%60this%60%20is%20always%20in%20the%20instance%20in%0A%20%20%20%20%20%20%20*%20%20closure%20for%20some%20reason%20even%20in%20a%20static%20method%2C%20rather%20than%20the%20class%0A%20%20%20%20%20%20%20*%2F_createClass(LegacyElement%2C%5B%7Bkey%3A'created'%2C%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20the%20%60constructor%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20created()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Provides%20an%20implementation%20of%20%60connectedCallback%60%0A%20%20%20%20%20%20%20*%20which%20adds%20Polymer%20legacy%20API's%20%60attached%60%20method.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'connectedCallback'%2Cthis).call(this)%3Bthis.isAttached%3Dtrue%3Bthis.attached()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20%60connectedCallback%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attached'%2Cvalue%3Afunction%20attached()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Provides%20an%20implementation%20of%20%60disconnectedCallback%60%0A%20%20%20%20%20%20%20*%20which%20adds%20Polymer%20legacy%20API's%20%60detached%60%20method.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3Bthis.isAttached%3Dfalse%3Bthis.detached()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20%60disconnectedCallback%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'detached'%2Cvalue%3Afunction%20detached()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Provides%20an%20override%20implementation%20of%20%60attributeChangedCallback%60%0A%20%20%20%20%20%20%20*%20which%20adds%20the%20Polymer%20legacy%20API's%20%60attributeChanged%60%20method.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Current%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20namespace%20Attribute%20namespace.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChangedCallback'%2Cvalue%3Afunction%20attributeChangedCallback(name%2Cold%2Cvalue%2Cnamespace)%7Bif(old!%3D%3Dvalue)%7B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'attributeChangedCallback'%2Cthis).call(this%2Cname%2Cold%2Cvalue%2Cnamespace)%3Bthis.attributeChanged(name%2Cold%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20%60attributeChangedChallback%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Current%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChanged'%2Cvalue%3Afunction%20attributeChanged(name%2Cold%2Cvalue)%7B%7D%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20default%20%60Polymer.PropertyEffects%60%20implementation%20to%0A%20%20%20%20%20%20%20*%20add%20support%20for%20class%20initialization%20via%20the%20%60_registered%60%20callback.%0A%20%20%20%20%20%20%20*%20This%20is%20called%20only%20when%20the%20first%20instance%20of%20the%20element%20is%20created.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProperties'%2Cvalue%3Afunction%20_initializeProperties()%7Bvar%20proto%3DObject.getPrototypeOf(this)%3Bif(!proto.hasOwnProperty('__hasRegisterFinished'))%7Bthis._registered()%3B%2F%2F%20backstop%20in%20case%20the%20%60_registered%60%20implementation%20does%20not%20set%20this%0Aproto.__hasRegisterFinished%3Dtrue%3B%7D_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3Bthis.root%3D%2F**%20%40type%20%7BHTMLElement%7D%20*%2Fthis%3Bthis.created()%3B%2F%2F%20Ensure%20listeners%20are%20applied%20immediately%20so%20that%20they%20are%0A%2F%2F%20added%20before%20declarative%20event%20listeners.%20This%20allows%20an%20element%20to%0A%2F%2F%20decorate%20itself%20via%20an%20event%20prior%20to%20any%20declarative%20listeners%0A%2F%2F%20seeing%20the%20event.%20Note%2C%20this%20ensures%20compatibility%20with%201.x%20ordering.%0Athis._applyListeners()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20automatically%20when%20an%20element%20is%20initializing.%0A%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20method%20to%20perform%20class%20registration%20time%0A%20%20%20%20%20%20%20*%20work.%20The%20implementation%20should%20ensure%20the%20work%20is%20performed%0A%20%20%20%20%20%20%20*%20only%20once%20for%20the%20class.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_registered'%2Cvalue%3Afunction%20_registered()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20default%20%60Polymer.PropertyEffects%60%20implementation%20to%0A%20%20%20%20%20%20%20*%20add%20support%20for%20installing%20%60hostAttributes%60%20and%20%60listeners%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7Bthis._ensureAttributes()%3B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'ready'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Ensures%20an%20element%20has%20required%20attributes.%20Called%20when%20the%20element%0A%20%20%20%20%20%20%20*%20is%20being%20readied%20via%20%60ready%60.%20Users%20should%20override%20to%20set%20the%0A%20%20%20%20%20%20%20*%20element's%20required%20attributes.%20The%20implementation%20should%20be%20sure%0A%20%20%20%20%20%20%20*%20to%20check%20and%20not%20override%20existing%20attributes%20added%20by%0A%20%20%20%20%20%20%20*%20the%20user%20of%20the%20element.%20Typically%2C%20setting%20attributes%20should%20be%20left%0A%20%20%20%20%20%20%20*%20to%20the%20element%20user%20and%20not%20done%20here%3B%20reasonable%20exceptions%20include%0A%20%20%20%20%20%20%20*%20setting%20aria%20roles%20and%20focusability.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_ensureAttributes'%2Cvalue%3Afunction%20_ensureAttributes()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20element%20event%20listeners.%20Called%20when%20the%20element%0A%20%20%20%20%20%20%20*%20is%20being%20readied%20via%20%60ready%60.%20Users%20should%20override%20to%0A%20%20%20%20%20%20%20*%20add%20any%20required%20element%20event%20listeners.%0A%20%20%20%20%20%20%20*%20In%20performance%20critical%20elements%2C%20the%20work%20done%20here%20should%20be%20kept%0A%20%20%20%20%20%20%20*%20to%20a%20minimum%20since%20it%20is%20done%20before%20the%20element%20is%20rendered.%20In%0A%20%20%20%20%20%20%20*%20these%20elements%2C%20consider%20adding%20listeners%20asynchronously%20so%20as%20not%20to%0A%20%20%20%20%20%20%20*%20block%20render.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_applyListeners'%2Cvalue%3Afunction%20_applyListeners()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Converts%20a%20typed%20JavaScript%20value%20to%20a%20string.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%20To%20customize%0A%20%20%20%20%20%20%20*%20how%20properties%20are%20serialized%20to%20attributes%20for%20attribute%20bindings%20and%0A%20%20%20%20%20%20%20*%20%60reflectToAttribute%3A%20true%60%20properties%20as%20well%20as%20this%20method%2C%20override%0A%20%20%20%20%20%20%20*%20the%20%60_serializeValue%60%20method%20provided%20by%20%60Polymer.PropertyAccessors%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20deserialize%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20Serialized%20value%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'serialize'%2Cvalue%3Afunction%20serialize(value)%7Breturn%20this._serializeValue(value)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Converts%20a%20string%20to%20a%20typed%20JavaScript%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%20%20To%20customize%0A%20%20%20%20%20%20%20*%20how%20attributes%20are%20deserialized%20to%20properties%20for%20in%0A%20%20%20%20%20%20%20*%20%60attributeChangedCallback%60%2C%20override%20%60_deserializeValue%60%20method%0A%20%20%20%20%20%20%20*%20provided%20by%20%60Polymer.PropertyAccessors%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20String%20to%20deserialize%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20type%20Type%20to%20deserialize%20the%20string%20to%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Returns%20the%20deserialized%20value%20in%20the%20%60type%60%20given.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deserialize'%2Cvalue%3Afunction%20deserialize(value%2Ctype)%7Breturn%20this._deserializeValue(value%2Ctype)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Serializes%20a%20property%20to%20its%20associated%20attribute.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%20to%20reflect.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20attribute%20Attribute%20name%20to%20reflect.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Property%20value%20to%20reflect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'reflectPropertyToAttribute'%2Cvalue%3Afunction%20reflectPropertyToAttribute(property%2Cattribute%2Cvalue)%7Bthis._propertyToAttribute(property%2Cattribute%2Cvalue)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Sets%20a%20typed%20value%20to%20an%20HTML%20attribute%20on%20a%20node.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20serialize.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Attribute%20name%20to%20serialize%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20set%20attribute%20to.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'serializeValueToAttribute'%2Cvalue%3Afunction%20serializeValueToAttribute(value%2Cattribute%2Cnode)%7Bthis._valueToNodeAttribute(%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%2Cvalue%2Cattribute)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Copies%20own%20properties%20(including%20accessor%20descriptors)%20from%20a%20source%0A%20%20%20%20%20%20%20*%20object%20to%20a%20target%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20prototype%20Target%20object%20to%20copy%20properties%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20api%20Source%20object%20to%20copy%20properties%20from.%0A%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20prototype%20object%20that%20was%20passed%20as%20first%20argument.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'extend'%2Cvalue%3Afunction%20extend(prototype%2Capi)%7Bif(!(prototype%26%26api))%7Breturn%20prototype%7C%7Capi%3B%7Dvar%20n%24%3DObject.getOwnPropertyNames(api)%3Bfor(var%20i%3D0%2Cn%3Bi%3Cn%24.length%26%26(n%3Dn%24%5Bi%5D)%3Bi%2B%2B)%7Bvar%20pd%3DObject.getOwnPropertyDescriptor(api%2Cn)%3Bif(pd)%7BObject.defineProperty(prototype%2Cn%2Cpd)%3B%7D%7Dreturn%20prototype%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Copies%20props%20from%20a%20source%20object%20to%20a%20target%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20this%20method%20uses%20a%20simple%20%60for...in%60%20strategy%20for%20enumerating%0A%20%20%20%20%20%20%20*%20properties.%20%20To%20ensure%20only%20%60ownProperties%60%20are%20copied%20from%20source%0A%20%20%20%20%20%20%20*%20to%20target%20and%20that%20accessor%20implementations%20are%20copied%2C%20use%20%60extend%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20target%20Target%20object%20to%20copy%20properties%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20source%20Source%20object%20to%20copy%20properties%20from.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Object%7D%20Target%20object%20that%20was%20passed%20as%20first%20argument.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'mixin'%2Cvalue%3Afunction%20mixin(target%2Csource)%7Bfor(var%20i%20in%20source)%7Btarget%5Bi%5D%3Dsource%5Bi%5D%3B%7Dreturn%20target%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Sets%20the%20prototype%20of%20an%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20object%20The%20object%20on%20which%20to%20set%20the%20prototype.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20prototype%20The%20prototype%20that%20will%20be%20set%20on%20the%20given%0A%20%20%20%20%20%20%20*%20%60object%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20Returns%20the%20given%20%60object%60%20with%20its%20prototype%20set%0A%20%20%20%20%20%20%20*%20to%20the%20given%20%60prototype%60%20object.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'chainObject'%2Cvalue%3Afunction%20chainObject(object%2Cprototype)%7Bif(object%26%26prototype%26%26object!%3D%3Dprototype)%7Bobject.__proto__%3Dprototype%3B%7Dreturn%20object%3B%7D%2F*%20****%20Begin%20Template%20****%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Calls%20%60importNode%60%20on%20the%20%60content%60%20of%20the%20%60template%60%20specified%20and%0A%20%20%20%20%20%20%20*%20returns%20a%20document%20fragment%20containing%20the%20imported%20content.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20template%20HTML%20template%20element%20to%20instance.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!DocumentFragment%7D%20Document%20fragment%20containing%20the%20imported%0A%20%20%20%20%20%20%20*%20%20%20template%20content.%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'instanceTemplate'%2Cvalue%3Afunction%20instanceTemplate(template)%7Bvar%20content%3Dthis.constructor._contentForTemplate(template)%3Bvar%20dom%3D%2F**%20%40type%20%7B!DocumentFragment%7D%20*%2Fdocument.importNode(content%2Ctrue)%3Breturn%20dom%3B%7D%2F*%20****%20Begin%20Events%20****%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Dispatches%20a%20custom%20event%20with%20an%20optional%20detail%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Name%20of%20event%20type.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20detail%20Detail%20value%20containing%20event-specific%0A%20%20%20%20%20%20%20*%20%20%20payload.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%7B%20bubbles%3A%20(boolean%7Cundefined)%2C%20cancelable%3A%20(boolean%7Cundefined)%2C%20composed%3A%20(boolean%7Cundefined)%20%7D%3D%7D%0A%20%20%20%20%20%20%20*%20%20options%20Object%20specifying%20options.%20%20These%20may%20include%3A%0A%20%20%20%20%20%20%20*%20%20%60bubbles%60%20(boolean%2C%20defaults%20to%20%60true%60)%2C%0A%20%20%20%20%20%20%20*%20%20%60cancelable%60%20(boolean%2C%20defaults%20to%20false)%2C%20and%0A%20%20%20%20%20%20%20*%20%20%60node%60%20on%20which%20to%20fire%20the%20event%20(HTMLElement%2C%20defaults%20to%20%60this%60).%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Event%7D%20The%20new%20event%20that%20was%20fired.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'fire'%2Cvalue%3Afunction%20fire(type%2Cdetail%2Coptions)%7Boptions%3Doptions%7C%7C%7B%7D%3Bdetail%3Ddetail%3D%3D%3Dnull%7C%7Cdetail%3D%3D%3Dundefined%3F%7B%7D%3Adetail%3Bvar%20event%3Dnew%20Event(type%2C%7Bbubbles%3Aoptions.bubbles%3D%3D%3Dundefined%3Ftrue%3Aoptions.bubbles%2Ccancelable%3ABoolean(options.cancelable)%2Ccomposed%3Aoptions.composed%3D%3D%3Dundefined%3Ftrue%3Aoptions.composed%7D)%3Bevent.detail%3Ddetail%3Bvar%20node%3Doptions.node%7C%7Cthis%3Bnode.dispatchEvent(event)%3Breturn%20event%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20to%20add%20an%20event%20listener%20on%20a%20given%20element%2C%0A%20%20%20%20%20%20%20*%20late%20bound%20to%20a%20named%20method%20on%20this%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20add%20event%20listener%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%20to%20listen%20for.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Name%20of%20handler%20method%20on%20%60this%60%20to%20call.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'listen'%2Cvalue%3Afunction%20listen(node%2CeventName%2CmethodName)%7Bnode%3D%2F**%20%40type%20%7B!Element%7D%20*%2Fnode%7C%7Cthis%3Bvar%20hbl%3Dthis.__boundListeners%7C%7C(this.__boundListeners%3Dnew%20WeakMap())%3Bvar%20bl%3Dhbl.get(node)%3Bif(!bl)%7Bbl%3D%7B%7D%3Bhbl.set(node%2Cbl)%3B%7Dvar%20key%3DeventName%2BmethodName%3Bif(!bl%5Bkey%5D)%7Bbl%5Bkey%5D%3Dthis._addMethodEventListenerToNode(node%2CeventName%2CmethodName%2Cthis)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20to%20remove%20an%20event%20listener%20from%20a%20given%20element%2C%0A%20%20%20%20%20%20%20*%20late%20bound%20to%20a%20named%20method%20on%20this%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20remove%20event%20listener%20from.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%20to%20stop%20listening%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Name%20of%20handler%20method%20on%20%60this%60%20to%20not%20call%0A%20%20%20%20%20%20%20anymore.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unlisten'%2Cvalue%3Afunction%20unlisten(node%2CeventName%2CmethodName)%7Bnode%3D%2F**%20%40type%20%7B!Element%7D%20*%2Fnode%7C%7Cthis%3Bvar%20bl%3Dthis.__boundListeners%26%26this.__boundListeners.get(node)%3Bvar%20key%3DeventName%2BmethodName%3Bvar%20handler%3Dbl%26%26bl%5Bkey%5D%3Bif(handler)%7Bthis._removeEventListenerFromNode(node%2CeventName%2Chandler)%3Bbl%5Bkey%5D%3Dnull%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20scrolling%20behavior%20to%20all%20direction%2C%20one%20direction%2C%20or%20none.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Valid%20scroll%20directions%3A%0A%20%20%20%20%20%20%20*%20%20%20-%20'all'%3A%20scroll%20in%20any%20direction%0A%20%20%20%20%20%20%20*%20%20%20-%20'x'%3A%20scroll%20only%20in%20the%20'x'%20direction%0A%20%20%20%20%20%20%20*%20%20%20-%20'y'%3A%20scroll%20only%20in%20the%20'y'%20direction%0A%20%20%20%20%20%20%20*%20%20%20-%20'none'%3A%20disable%20scrolling%20for%20this%20node%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20direction%20Direction%20to%20allow%20scrolling%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60all%60.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Element%20to%20apply%20scroll%20direction%20setting.%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'setScrollDirection'%2Cvalue%3Afunction%20setScrollDirection(direction%2Cnode)%7BPolymer.Gestures.setTouchAction(%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%2CDIRECTION_MAP%5Bdirection%5D%7C%7C'auto')%3B%7D%2F*%20****%20End%20Events%20****%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20to%20run%20%60querySelector%60%20on%20this%20local%20DOM%20scope.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20function%20calls%20%60Polymer.dom(this.root).querySelector(slctr)%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20slctr%20Selector%20to%20run%20on%20this%20local%20DOM%20scope%0A%20%20%20%20%20%20%20*%20%40return%20%7BElement%7D%20Element%20found%20by%20the%20selector%2C%20or%20null%20if%20not%20found.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'%24%24'%2Cvalue%3Afunction%20%24%24(slctr)%7Breturn%20this.root.querySelector(slctr)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Return%20the%20element%20whose%20local%20dom%20within%20which%20this%20element%0A%20%20%20%20%20%20%20*%20is%20contained.%20This%20is%20a%20shorthand%20for%0A%20%20%20%20%20%20%20*%20%60this.getRootNode().host%60.%0A%20%20%20%20%20%20%20*%20%40this%20%7BElement%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'distributeContent'%2C%2F**%0A%20%20%20%20%20%20%20*%20Force%20this%20element%20to%20distribute%20its%20children%20to%20its%20local%20dom.%0A%20%20%20%20%20%20%20*%20This%20should%20not%20be%20necessary%20as%20of%20Polymer%202.0.2%20and%20is%20provided%20only%0A%20%20%20%20%20%20%20*%20for%20backwards%20compatibility.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20distributeContent()%7Bif(window.ShadyDOM%26%26this.shadowRoot)%7BShadyDOM.flush()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20nodes%20that%20are%20the%20effective%20childNodes.%20The%20effective%0A%20%20%20%20%20%20%20*%20childNodes%20list%20is%20the%20same%20as%20the%20element's%20childNodes%20except%20that%0A%20%20%20%20%20%20%20*%20any%20%60%3Ccontent%3E%60%20elements%20are%20replaced%20with%20the%20list%20of%20nodes%20distributed%0A%20%20%20%20%20%20%20*%20to%20the%20%60%3Ccontent%3E%60%2C%20the%20result%20of%20its%20%60getDistributedNodes%60%20method.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20effective%20child%20nodes.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveChildNodes'%2Cvalue%3Afunction%20getEffectiveChildNodes()%7Bvar%20thisEl%3D%2F**%20%40type%20%7BElement%7D%20*%2Fthis%3Bvar%20domApi%3D%2F**%20%40type%20%7BPolymer.DomApi%7D%20*%2FPolymer.dom(thisEl)%3Breturn%20domApi.getEffectiveChildNodes()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20nodes%20distributed%20within%20this%20element%20that%20match%0A%20%20%20%20%20%20%20*%20%60selector%60.%20These%20can%20be%20dom%20children%20or%20elements%20distributed%20to%0A%20%20%20%20%20%20%20*%20children%20that%20are%20insertion%20points.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20run.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20distributed%20elements%20that%20match%20selector.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryDistributedElements'%2Cvalue%3Afunction%20queryDistributedElements(selector)%7Bvar%20thisEl%3D%2F**%20%40type%20%7BElement%7D%20*%2Fthis%3Bvar%20domApi%3D%2F**%20%40type%20%7BPolymer.DomApi%7D%20*%2FPolymer.dom(thisEl)%3Breturn%20domApi.queryDistributedElements(selector)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20elements%20that%20are%20the%20effective%20children.%20The%20effective%0A%20%20%20%20%20%20%20*%20children%20list%20is%20the%20same%20as%20the%20element's%20children%20except%20that%0A%20%20%20%20%20%20%20*%20any%20%60%3Ccontent%3E%60%20elements%20are%20replaced%20with%20the%20list%20of%20elements%0A%20%20%20%20%20%20%20*%20distributed%20to%20the%20%60%3Ccontent%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20effective%20children.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveChildren'%2Cvalue%3Afunction%20getEffectiveChildren()%7Bvar%20list%3Dthis.getEffectiveChildNodes()%3Breturn%20list.filter(function(%2F**%20%40type%20%7B!Node%7D%20*%2Fn)%7Breturn%20n.nodeType%3D%3D%3DNode.ELEMENT_NODE%3B%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20string%20of%20text%20content%20that%20is%20the%20concatenation%20of%20the%0A%20%20%20%20%20%20%20*%20text%20content's%20of%20the%20element's%20effective%20childNodes%20(the%20elements%0A%20%20%20%20%20%20%20*%20returned%20by%20%3Ca%20href%3D%22%23getEffectiveChildNodes%3EgetEffectiveChildNodes%3C%2Fa%3E.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20List%20of%20effective%20children.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveTextContent'%2Cvalue%3Afunction%20getEffectiveTextContent()%7Bvar%20cn%3Dthis.getEffectiveChildNodes()%3Bvar%20tc%3D%5B%5D%3Bfor(var%20i%3D0%2Cc%3Bc%3Dcn%5Bi%5D%3Bi%2B%2B)%7Bif(c.nodeType!%3D%3DNode.COMMENT_NODE)%7Btc.push(c.textContent)%3B%7D%7Dreturn%20tc.join('')%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20first%20effective%20childNode%20within%20this%20element%20that%0A%20%20%20%20%20%20%20*%20match%20%60selector%60.%20These%20can%20be%20dom%20child%20nodes%20or%20elements%20distributed%0A%20%20%20%20%20%20%20*%20to%20children%20that%20are%20insertion%20points.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20run.%0A%20%20%20%20%20%20%20*%20%40return%20%7BNode%7D%20First%20effective%20child%20node%20that%20matches%20selector.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryEffectiveChildren'%2Cvalue%3Afunction%20queryEffectiveChildren(selector)%7Bvar%20e%24%3Dthis.queryDistributedElements(selector)%3Breturn%20e%24%26%26e%24%5B0%5D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20effective%20childNodes%20within%20this%20element%20that%0A%20%20%20%20%20%20%20*%20match%20%60selector%60.%20These%20can%20be%20dom%20child%20nodes%20or%20elements%20distributed%0A%20%20%20%20%20%20%20*%20to%20children%20that%20are%20insertion%20points.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20run.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20effective%20child%20nodes%20that%20match%20selector.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryAllEffectiveChildren'%2Cvalue%3Afunction%20queryAllEffectiveChildren(selector)%7Breturn%20this.queryDistributedElements(selector)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20nodes%20distributed%20to%20this%20element's%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20this%20element%20contains%20more%20than%20one%20%60%3Cslot%3E%60%20in%20its%20local%20DOM%2C%0A%20%20%20%20%20%20%20*%20an%20optional%20selector%20may%20be%20passed%20to%20choose%20the%20desired%20content.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20slctr%20CSS%20selector%20to%20choose%20the%20desired%0A%20%20%20%20%20%20%20*%20%20%20%60%3Cslot%3E%60.%20%20Defaults%20to%20%60content%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20distributed%20nodes%20for%20the%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getContentChildNodes'%2Cvalue%3Afunction%20getContentChildNodes(slctr)%7Bvar%20content%3Dthis.root.querySelector(slctr%7C%7C'slot')%3Breturn%20content%3F%2F**%20%40type%20%7BPolymer.DomApi%7D%20*%2FPolymer.dom(content).getDistributedNodes()%3A%5B%5D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20element%20children%20distributed%20to%20this%20element's%0A%20%20%20%20%20%20%20*%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20this%20element%20contains%20more%20than%20one%20%60%3Cslot%3E%60%20in%20its%0A%20%20%20%20%20%20%20*%20local%20DOM%2C%20an%20optional%20selector%20may%20be%20passed%20to%20choose%20the%20desired%0A%20%20%20%20%20%20%20*%20content.%20%20This%20method%20differs%20from%20%60getContentChildNodes%60%20in%20that%20only%0A%20%20%20%20%20%20%20*%20elements%20are%20returned.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20slctr%20CSS%20selector%20to%20choose%20the%20desired%0A%20%20%20%20%20%20%20*%20%20%20%60%3Ccontent%3E%60.%20%20Defaults%20to%20%60content%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLElement%3E%7D%20List%20of%20distributed%20nodes%20for%20the%0A%20%20%20%20%20%20%20*%20%20%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getContentChildren'%2Cvalue%3Afunction%20getContentChildren(slctr)%7Bvar%20children%3D%2F**%20%40type%20%7B!Array%3C!HTMLElement%3E%7D%20*%2Fthis.getContentChildNodes(slctr).filter(function(n)%7Breturn%20n.nodeType%3D%3D%3DNode.ELEMENT_NODE%3B%7D)%3Breturn%20children%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20in%20this%20element's%20light%20DOM%20tree.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3FNode%7D%20node%20The%20element%20to%20be%20checked.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20node%20is%20in%20this%20element's%20light%20DOM%20tree.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isLightDescendant'%2Cvalue%3Afunction%20isLightDescendant(node)%7Bvar%20thisNode%3D%2F**%20%40type%20%7BNode%7D%20*%2Fthis%3Breturn%20thisNode!%3D%3Dnode%26%26thisNode.contains(node)%26%26thisNode.getRootNode()%3D%3D%3Dnode.getRootNode()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20in%20this%20element's%20local%20DOM%20tree.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Element%7D%20node%20The%20element%20to%20be%20checked.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20node%20is%20in%20this%20element's%20local%20DOM%20tree.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isLocalDescendant'%2Cvalue%3Afunction%20isLocalDescendant(node)%7Breturn%20this.root%3D%3D%3Dnode.getRootNode()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20No-op%20for%20backwards%20compatibility.%20This%20should%20now%20be%20handled%20by%0A%20%20%20%20%20%20%20*%20ShadyCss%20library.%0A%20%20%20%20%20%20%20*%20%40param%20%20%7B*%7D%20container%20Unused%0A%20%20%20%20%20%20%20*%20%40param%20%20%7B*%7D%20shouldObserve%20Unused%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'scopeSubtree'%2Cvalue%3Afunction%20scopeSubtree(container%2CshouldObserve)%7B%7D%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20computed%20style%20value%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20The%20css%20property%20name.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Returns%20the%20computed%20css%20property%20value%20for%20the%20given%0A%20%20%20%20%20%20%20*%20%60property%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getComputedStyleValue'%2Cvalue%3Afunction%20getComputedStyleValue(property)%7Breturn%20styleInterface.getComputedStyleValue(%2F**%20%40type%20%7B!Element%7D%20*%2Fthis%2Cproperty)%3B%7D%2F%2F%20debounce%0A%2F**%0A%20%20%20%20%20%20%20*%20Call%20%60debounce%60%20to%20collapse%20multiple%20requests%20for%20a%20named%20task%20into%0A%20%20%20%20%20%20%20*%20one%20invocation%20which%20is%20made%20after%20the%20wait%20time%20has%20elapsed%20with%0A%20%20%20%20%20%20%20*%20no%20new%20request.%20%20If%20no%20wait%20time%20is%20given%2C%20the%20callback%20will%20be%20called%0A%20%20%20%20%20%20%20*%20at%20microtask%20timing%20(guaranteed%20before%20paint).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20debouncedClickAction(e)%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%2F%2F%20will%20not%20call%20%60processClick%60%20more%20than%20once%20per%20100ms%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20this.debounce('click'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20this.processClick()%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%20100)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20String%20to%20identify%20the%20debounce%20job.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction()%3Avoid%7D%20callback%20Function%20that%20is%20called%20(with%20%60this%60%0A%20%20%20%20%20%20%20*%20%20%20context)%20when%20the%20wait%20time%20elapses.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20wait%20Optional%20wait%20time%20in%20milliseconds%20(ms)%20after%20the%0A%20%20%20%20%20%20%20*%20%20%20last%20signal%20that%20must%20elapse%20before%20invoking%20%60callback%60%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Object%7D%20Returns%20a%20debouncer%20object%20on%20which%20exists%20the%0A%20%20%20%20%20%20%20*%20following%20methods%3A%20%60isActive()%60%20returns%20true%20if%20the%20debouncer%20is%0A%20%20%20%20%20%20%20*%20active%3B%20%60cancel()%60%20cancels%20the%20debouncer%20if%20it%20is%20active%3B%0A%20%20%20%20%20%20%20*%20%60flush()%60%20immediately%20invokes%20the%20debounced%20callback%20if%20the%20debouncer%0A%20%20%20%20%20%20%20*%20is%20active.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'debounce'%2Cvalue%3Afunction%20debounce(jobName%2Ccallback%2Cwait)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Breturn%20this._debouncers%5BjobName%5D%3DPolymer.Debouncer.debounce(this._debouncers%5BjobName%5D%2Cwait%3E0%3FPolymer.Async.timeOut.after(wait)%3APolymer.Async.microTask%2Ccallback.bind(this))%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20a%20named%20debouncer%20is%20active.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20The%20name%20of%20the%20debouncer%20started%20with%20%60debounce%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20debouncer%20is%20active%20(has%20not%20yet%20fired).%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isDebouncerActive'%2Cvalue%3Afunction%20isDebouncerActive(jobName)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Bvar%20debouncer%3Dthis._debouncers%5BjobName%5D%3Breturn!!(debouncer%26%26debouncer.isActive())%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Immediately%20calls%20the%20debouncer%20%60callback%60%20and%20inactivates%20it.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20The%20name%20of%20the%20debouncer%20started%20with%20%60debounce%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'flushDebouncer'%2Cvalue%3Afunction%20flushDebouncer(jobName)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Bvar%20debouncer%3Dthis._debouncers%5BjobName%5D%3Bif(debouncer)%7Bdebouncer.flush()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20an%20active%20debouncer.%20%20The%20%60callback%60%20will%20not%20be%20called.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20The%20name%20of%20the%20debouncer%20started%20with%20%60debounce%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'cancelDebouncer'%2Cvalue%3Afunction%20cancelDebouncer(jobName)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Bvar%20debouncer%3Dthis._debouncers%5BjobName%5D%3Bif(debouncer)%7Bdebouncer.cancel()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Runs%20a%20callback%20function%20asynchronously.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20By%20default%20(if%20no%20waitTime%20is%20specified)%2C%20async%20callbacks%20are%20run%20at%0A%20%20%20%20%20%20%20*%20microtask%20timing%2C%20which%20will%20occur%20before%20paint.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Function%7D%20callback%20The%20callback%20function%20to%20run%2C%20bound%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20waitTime%20Time%20to%20wait%20before%20calling%20the%0A%20%20%20%20%20%20%20*%20%20%20%60callback%60.%20%20If%20unspecified%20or%200%2C%20the%20callback%20will%20be%20run%20at%20microtask%0A%20%20%20%20%20%20%20*%20%20%20timing%20(before%20paint).%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20that%20may%20be%20used%20to%20cancel%20the%20async%20job.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'async'%2Cvalue%3Afunction%20async(callback%2CwaitTime)%7Breturn%20waitTime%3E0%3FPolymer.Async.timeOut.run(callback.bind(this)%2CwaitTime)%3A~Polymer.Async.microTask.run(callback.bind(this))%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20an%20async%20operation%20started%20with%20%60async%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20original%20%60async%60%20call%20to%0A%20%20%20%20%20%20%20*%20%20%20cancel.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'cancelAsync'%2Cvalue%3Afunction%20cancelAsync(handle)%7Bhandle%3C0%3FPolymer.Async.microTask.cancel(~handle)%3APolymer.Async.timeOut.cancel(handle)%3B%7D%2F%2F%20other%0A%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20creating%20an%20element%20and%20configuring%20it.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20tag%20HTML%20element%20tag%20to%20create.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20props%20Object%20of%20properties%20to%20configure%20on%20the%0A%20%20%20%20%20%20%20*%20%20%20%20instance.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Element%7D%20Newly%20created%20and%20configured%20element.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'create'%2Cvalue%3Afunction%20create(tag%2Cprops)%7Bvar%20elt%3Ddocument.createElement(tag)%3Bif(props)%7Bif(elt.setProperties)%7Belt.setProperties(props)%3B%7Delse%7Bfor(var%20n%20in%20props)%7Belt%5Bn%5D%3Dprops%5Bn%5D%3B%7D%7D%7Dreturn%20elt%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20importing%20an%20HTML%20document%20imperatively.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20creates%20a%20new%20%60%3Clink%20rel%3D%22import%22%3E%60%20element%20with%0A%20%20%20%20%20%20%20*%20the%20provided%20URL%20and%20appends%20it%20to%20the%20document%20to%20start%20loading.%0A%20%20%20%20%20%20%20*%20In%20the%20%60onload%60%20callback%2C%20the%20%60import%60%20property%20of%20the%20%60link%60%0A%20%20%20%20%20%20%20*%20element%20will%20contain%20the%20imported%20document%20contents.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20href%20URL%20to%20document%20to%20load.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Ffunction(!Event)%3Avoid%3D%7D%20onload%20Callback%20to%20notify%20when%20an%20import%20successfully%0A%20%20%20%20%20%20%20*%20%20%20loaded.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Ffunction(!ErrorEvent)%3Avoid%3D%7D%20onerror%20Callback%20to%20notify%20when%20an%20import%0A%20%20%20%20%20%20%20*%20%20%20unsuccessfully%20loaded.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20optAsync%20True%20if%20the%20import%20should%20be%20loaded%20%60async%60.%0A%20%20%20%20%20%20%20*%20%20%20Defaults%20to%20%60false%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!HTMLLinkElement%7D%20The%20link%20element%20for%20the%20URL%20to%20be%20loaded.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'importHref'%2Cvalue%3Afunction%20importHref(href%2Conload%2Conerror%2CoptAsync)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Avar%20loadFn%3Donload%3Fonload.bind(this)%3Anull%3Bvar%20errorFn%3Donerror%3Fonerror.bind(this)%3Anull%3Breturn%20Polymer.importHref(href%2CloadFn%2CerrorFn%2CoptAsync)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Polyfill%20for%20Element.prototype.matches%2C%20which%20is%20sometimes%20still%0A%20%20%20%20%20%20%20*%20prefixed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20test.%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Element%3D%7D%20node%20Element%20to%20test%20the%20selector%20against.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20element%20matches%20the%20selector.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'elementMatches'%2Cvalue%3Afunction%20elementMatches(selector%2Cnode)%7Breturn%20Polymer.dom.matchesSelector(%2F**%20%40type%20%7B!Element%7D%20*%2Fnode%7C%7Cthis%2Cselector)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Toggles%20an%20HTML%20attribute%20on%20or%20off.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20HTML%20attribute%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20bool%20Boolean%20to%20force%20the%20attribute%20on%20or%20off.%0A%20%20%20%20%20%20%20*%20%20%20%20When%20unspecified%2C%20the%20state%20of%20the%20attribute%20will%20be%20reversed.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Node%20to%20target.%20%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'toggleAttribute'%2Cvalue%3Afunction%20toggleAttribute(name%2Cbool%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bif(arguments.length%3D%3D1)%7Bbool%3D!node.hasAttribute(name)%3B%7Dif(bool)%7Bnode.setAttribute(name%2C'')%3B%7Delse%7Bnode.removeAttribute(name)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Toggles%20a%20CSS%20class%20on%20or%20off.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20CSS%20class%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20bool%20Boolean%20to%20force%20the%20class%20on%20or%20off.%0A%20%20%20%20%20%20%20*%20%20%20%20When%20unspecified%2C%20the%20state%20of%20the%20class%20will%20be%20reversed.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Node%20to%20target.%20%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'toggleClass'%2Cvalue%3Afunction%20toggleClass(name%2Cbool%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bif(arguments.length%3D%3D1)%7Bbool%3D!node.classList.contains(name)%3B%7Dif(bool)%7Bnode.classList.add(name)%3B%7Delse%7Bnode.classList.remove(name)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Cross-platform%20helper%20for%20setting%20an%20element's%20CSS%20%60transform%60%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20transformText%20Transform%20setting.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Element%20to%20apply%20the%20transform%20to.%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60this%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'transform'%2Cvalue%3Afunction%20transform(transformText%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bnode.style.webkitTransform%3DtransformText%3Bnode.style.transform%3DtransformText%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Cross-platform%20helper%20for%20setting%20an%20element's%20CSS%20%60translate3d%60%0A%20%20%20%20%20%20%20*%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20x%20X%20offset.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20y%20Y%20offset.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20z%20Z%20offset.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Element%20to%20apply%20the%20transform%20to.%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'translate3d'%2Cvalue%3Afunction%20translate3d(x%2Cy%2Cz%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bthis.transform('translate3d('%2Bx%2B'%2C'%2By%2B'%2C'%2Bz%2B')'%2Cnode)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20an%20array%2C%20if%20it%20exists.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20the%20array%20is%20specified%20by%20path%2C%20a%20change%20notification%20is%0A%20%20%20%20%20%20%20*%20generated%2C%20so%20that%20observers%2C%20data%20bindings%20and%20computed%0A%20%20%20%20%20%20%20*%20properties%20watching%20that%20path%20can%20update.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20the%20array%20is%20passed%20directly%2C%20**no%20change%0A%20%20%20%20%20%20%20*%20notification%20is%20generated**.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cnumber%7Cstring%3E%7D%20arrayOrPath%20Path%20to%20array%20from%20which%20to%20remove%20the%20item%0A%20%20%20%20%20%20%20*%20%20%20(or%20the%20array%20itself).%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20to%20remove.%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20containing%20item%20removed.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'arrayDelete'%2Cvalue%3Afunction%20arrayDelete(arrayOrPath%2Citem)%7Bvar%20index%3Dvoid%200%3Bif(Array.isArray(arrayOrPath))%7Bindex%3DarrayOrPath.indexOf(item)%3Bif(index%3E%3D0)%7Breturn%20arrayOrPath.splice(index%2C1)%3B%7D%7Delse%7Bvar%20arr%3DPolymer.Path.get(this%2CarrayOrPath)%3Bindex%3Darr.indexOf(item)%3Bif(index%3E%3D0)%7Breturn%20this.splice(arrayOrPath%2Cindex%2C1)%3B%7D%7Dreturn%20null%3B%7D%2F%2F%20logging%0A%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.log%60%2F%60warn%60%2F%60error%60%20as%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20level%20One%20of%20'log'%2C%20'warn'%2C%20'error'%0A%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_logger'%2Cvalue%3Afunction%20_logger(level%2Cargs)%7Bvar%20_console%3B%2F%2F%20accept%20%5B'foo'%2C%20'bar'%5D%20and%20%5B%5B'foo'%2C%20'bar'%5D%5D%0Aif(Array.isArray(args)%26%26args.length%3D%3D%3D1%26%26Array.isArray(args%5B0%5D))%7Bargs%3Dargs%5B0%5D%3B%7Dswitch(level)%7Bcase'log'%3Acase'warn'%3Acase'error'%3A(_console%3Dconsole)%5Blevel%5D.apply(_console%2C_toConsumableArray(args))%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.log%60%20as%20an%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_log'%2Cvalue%3Afunction%20_log()%7Bfor(var%20_len%3Darguments.length%2Cargs%3DArray(_len)%2C_key%3D0%3B_key%3C_len%3B_key%2B%2B)%7Bargs%5B_key%5D%3Darguments%5B_key%5D%3B%7Dthis._logger('log'%2Cargs)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.warn%60%20as%20an%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_warn'%2Cvalue%3Afunction%20_warn()%7Bfor(var%20_len2%3Darguments.length%2Cargs%3DArray(_len2)%2C_key2%3D0%3B_key2%3C_len2%3B_key2%2B%2B)%7Bargs%5B_key2%5D%3Darguments%5B_key2%5D%3B%7Dthis._logger('warn'%2Cargs)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.error%60%20as%20an%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_error'%2Cvalue%3Afunction%20_error()%7Bfor(var%20_len3%3Darguments.length%2Cargs%3DArray(_len3)%2C_key3%3D0%3B_key3%3C_len3%3B_key3%2B%2B)%7Bargs%5B_key3%5D%3Darguments%5B_key3%5D%3B%7Dthis._logger('error'%2Cargs)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Formats%20a%20message%20using%20the%20element%20type%20an%20a%20method%20name.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Method%20name%20to%20associate%20with%20message%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20with%20formatting%20information%20for%20%60console%60%0A%20%20%20%20%20%20%20*%20%20%20logging.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_logf'%2Cvalue%3Afunction%20_logf(methodName)%7Bfor(var%20_len4%3Darguments.length%2Cargs%3DArray(_len4%3E1%3F_len4-1%3A0)%2C_key4%3D1%3B_key4%3C_len4%3B_key4%2B%2B)%7Bargs%5B_key4-1%5D%3Darguments%5B_key4%5D%3B%7Dreturn%5B'%5B%25s%3A%3A%25s%5D'%2Cthis.is%2CmethodName%5D.concat(args)%3B%7D%7D%2C%7Bkey%3A'domHost'%2Cget%3Afunction%20get()%7Bvar%20root%3Dthis.getRootNode()%3Breturn%20root%20instanceof%20DocumentFragment%3F%2F**%20%40type%20%7BShadowRoot%7D%20*%2Froot.host%3Aroot%3B%7D%7D%5D%2C%5B%7Bkey%3A'importMeta'%2Cget%3Afunction%20get()%7Breturn%20this.prototype.importMeta%3B%7D%7D%5D)%3Breturn%20LegacyElement%3B%7D(legacyElementBase)%3BLegacyElement.prototype.is%3D''%3Breturn%20LegacyElement%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Flegacy-element-mixin.html.js%0A",
            "resourceBytes": 37092,
            "encodedBytes": 0,
            "unusedBytes": 9668
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20lifecycleProps%3D%7Battached%3Atrue%2Cdetached%3Atrue%2Cready%3Atrue%2Ccreated%3Atrue%2CbeforeRegister%3Atrue%2Cregistered%3Atrue%2CattributeChanged%3Atrue%2Clisteners%3Atrue%2ChostAttributes%3Atrue%7D%3Bvar%20excludeOnInfo%3D%7Battached%3Atrue%2Cdetached%3Atrue%2Cready%3Atrue%2Ccreated%3Atrue%2CbeforeRegister%3Atrue%2Cregistered%3Atrue%2CattributeChanged%3Atrue%2Cbehaviors%3Atrue%2C_noAccessors%3Atrue%7D%3Bvar%20excludeOnBehaviors%3DObject.assign(%7Blisteners%3Atrue%2ChostAttributes%3Atrue%2Cproperties%3Atrue%2Cobservers%3Atrue%7D%2CexcludeOnInfo)%3Bfunction%20copyProperties(source%2Ctarget%2CexcludeProps)%7Bvar%20noAccessors%3Dsource._noAccessors%3Bfor(var%20p%20in%20source)%7Bif(!(p%20in%20excludeProps))%7Bif(noAccessors)%7Btarget%5Bp%5D%3Dsource%5Bp%5D%3B%7Delse%7Bvar%20pd%3DObject.getOwnPropertyDescriptor(source%2Cp)%3Bif(pd)%7B%2F%2F%20ensure%20property%20is%20configurable%20so%20that%20a%20later%20behavior%20can%0A%2F%2F%20re-configure%20it.%0Apd.configurable%3Dtrue%3BObject.defineProperty(target%2Cp%2Cpd)%3B%7D%7D%7D%7D%7D%2F**%0A%20%20%20%20%20*%20Applies%20a%20%22legacy%22%20behavior%20or%20array%20of%20behaviors%20to%20the%20provided%20class.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20this%20method%20will%20automatically%20also%20apply%20the%20%60Polymer.LegacyElementMixin%60%0A%20%20%20%20%20*%20to%20ensure%20that%20any%20legacy%20behaviors%20can%20rely%20on%20legacy%20Polymer%20API%20on%0A%20%20%20%20%20*%20the%20underlying%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40template%20T%0A%20%20%20%20%20*%20%40param%20%7B!Object%7C!Array%3C!Object%3E%7D%20behaviors%20Behavior%20object%20or%20array%20of%20behaviors.%0A%20%20%20%20%20*%20%40param%20%7Bfunction(new%3AT)%7D%20klass%20Element%20class.%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3AT)%7D%20Returns%20a%20new%20Element%20class%20extended%20by%20the%0A%20%20%20%20%20*%20passed%20in%20%60behaviors%60%20and%20also%20by%20%60Polymer.LegacyElementMixin%60.%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%2C%20checkTypes%7D%0A%20%20%20%20%20*%2Ffunction%20mixinBehaviors(behaviors%2Cklass)%7Breturn%20GenerateClassFromInfo(%7B%7D%2CPolymer.LegacyElementMixin(klass)%2Cbehaviors)%3B%7D%2F%2F%20NOTE%3A%0A%2F%2F%201.x%0A%2F%2F%20Behaviors%20were%20mixed%20in%20*in%20reverse%20order*%20and%20de-duped%20on%20the%20fly.%0A%2F%2F%20The%20rule%20was%20that%20behavior%20properties%20were%20copied%20onto%20the%20element%0A%2F%2F%20prototype%20if%20and%20only%20if%20the%20property%20did%20not%20already%20exist.%0A%2F%2F%20Given%3A%20Polymer%7B%20behaviors%3A%20%5BA%2C%20B%2C%20C%2C%20A%2C%20B%5D%7D%2C%20property%20copy%20order%20was%3A%0A%2F%2F%20(1)%2C%20B%2C%20(2)%2C%20A%2C%20(3)%20C.%20This%20means%20prototype%20properties%20win%20over%0A%2F%2F%20B%20properties%20win%20over%20A%20win%20over%20C.%20This%20mirrors%20what%20would%20happen%0A%2F%2F%20with%20inheritance%20if%20element%20extended%20B%20extended%20A%20extended%20C.%0A%2F%2F%0A%2F%2F%20Again%20given%2C%20Polymer%7B%20behaviors%3A%20%5BA%2C%20B%2C%20C%2C%20A%2C%20B%5D%7D%2C%20the%20resulting%0A%2F%2F%20%60behaviors%60%20array%20was%20%5BC%2C%20A%2C%20B%5D.%0A%2F%2F%20Behavior%20lifecycle%20methods%20were%20called%20in%20behavior%20array%20order%0A%2F%2F%20followed%20by%20the%20element%2C%20e.g.%20(1)%20C.created%2C%20(2)%20A.created%2C%0A%2F%2F%20(3)%20B.created%2C%20(4)%20element.created.%20There%20was%20no%20support%20for%0A%2F%2F%20super%2C%20and%20%22super-behavior%22%20methods%20were%20callable%20only%20by%20name).%0A%2F%2F%0A%2F%2F%202.x%0A%2F%2F%20Behaviors%20are%20made%20into%20proper%20mixins%20which%20live%20in%20the%0A%2F%2F%20element's%20prototype%20chain.%20Behaviors%20are%20placed%20in%20the%20element%20prototype%0A%2F%2F%20eldest%20to%20youngest%20and%20de-duped%20youngest%20to%20oldest%3A%0A%2F%2F%20So%2C%20first%20%5BA%2C%20B%2C%20C%2C%20A%2C%20B%5D%20becomes%20%5BC%2C%20A%2C%20B%5D%20then%2C%0A%2F%2F%20the%20element%20prototype%20becomes%20(oldest)%20(1)%20Polymer.Element%2C%20(2)%20class(C)%2C%0A%2F%2F%20(3)%20class(A)%2C%20(4)%20class(B)%2C%20(5)%20class(Polymer(%7B...%7D)).%0A%2F%2F%20Result%3A%0A%2F%2F%20This%20means%20element%20properties%20win%20over%20B%20properties%20win%20over%20A%20win%0A%2F%2F%20over%20C.%20(same%20as%201.x)%0A%2F%2F%20If%20lifecycle%20is%20called%20(super%20then%20me)%2C%20order%20is%0A%2F%2F%20(1)%20C.created%2C%20(2)%20A.created%2C%20(3)%20B.created%2C%20(4)%20element.created%0A%2F%2F%20(again%20same%20as%201.x)%0Afunction%20applyBehaviors(proto%2Cbehaviors%2Clifecycle)%7Bfor(var%20i%3D0%3Bi%3Cbehaviors.length%3Bi%2B%2B)%7BapplyInfo(proto%2Cbehaviors%5Bi%5D%2Clifecycle%2CexcludeOnBehaviors)%3B%7D%7Dfunction%20applyInfo(proto%2Cinfo%2Clifecycle%2CexcludeProps)%7BcopyProperties(info%2Cproto%2CexcludeProps)%3Bfor(var%20p%20in%20lifecycleProps)%7Bif(info%5Bp%5D)%7Blifecycle%5Bp%5D%3Dlifecycle%5Bp%5D%7C%7C%5B%5D%3Blifecycle%5Bp%5D.push(info%5Bp%5D)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BArray%7D%20behaviors%20List%20of%20behaviors%20to%20flatten.%0A%20%20%20%20%20*%20%40param%20%7BArray%3D%7D%20list%20Target%20list%20to%20flatten%20behaviors%20into.%0A%20%20%20%20%20*%20%40param%20%7BArray%3D%7D%20exclude%20List%20of%20behaviors%20to%20exclude%20from%20the%20list.%0A%20%20%20%20%20*%20%40return%20%7B!Array%7D%20Returns%20the%20list%20of%20flattened%20behaviors.%0A%20%20%20%20%20*%2Ffunction%20flattenBehaviors(behaviors%2Clist%2Cexclude)%7Blist%3Dlist%7C%7C%5B%5D%3Bfor(var%20i%3Dbehaviors.length-1%3Bi%3E%3D0%3Bi--)%7Bvar%20b%3Dbehaviors%5Bi%5D%3Bif(b)%7Bif(Array.isArray(b))%7BflattenBehaviors(b%2Clist)%3B%7Delse%7B%2F%2F%20dedup%0Aif(list.indexOf(b)%3C0%26%26(!exclude%7C%7Cexclude.indexOf(b)%3C0))%7Blist.unshift(b)%3B%7D%7D%7Delse%7Bconsole.warn('behavior%20is%20null%2C%20check%20for%20missing%20or%20404%20import')%3B%7D%7Dreturn%20list%3B%7D%2F*%20Note%20about%20construction%20and%20extension%20of%20legacy%20classes.%0A%20%20%20%20%20%20%5BChanged%20in%20Q4%202018%20to%20optimize%20performance.%5D%0A%0A%20%20%20%20%20%20When%20calling%20%60Polymer%60%20or%20%60mixinBehaviors%60%2C%20the%20generated%20class%20below%20is%0A%20%20%20%20%20%20made.%20The%20list%20of%20behaviors%20was%20previously%20made%20into%20one%20generated%20class%20per%0A%20%20%20%20%20%20behavior%2C%20but%20this%20is%20no%20longer%20the%20case%20as%20behaviors%20are%20now%20called%0A%20%20%20%20%20%20manually.%20Note%2C%20there%20may%20*still*%20be%20multiple%20generated%20classes%20in%20the%0A%20%20%20%20%20%20element's%20prototype%20chain%20if%20extension%20is%20used%20with%20%60mixinBehaviors%60.%0A%0A%20%20%20%20%20%20The%20generated%20class%20is%20directly%20tied%20to%20the%20info%20object%20and%20behaviors%0A%20%20%20%20%20%20used%20to%20create%20it.%20That%20list%20of%20behaviors%20is%20filtered%20so%20it's%20only%20the%0A%20%20%20%20%20%20behaviors%20not%20active%20on%20the%20superclass.%20In%20order%20to%20call%20through%20to%20the%0A%20%20%20%20%20%20entire%20list%20of%20lifecycle%20methods%2C%20it's%20important%20to%20call%20%60super%60.%0A%0A%20%20%20%20%20%20The%20element's%20%60properties%60%20and%20%60observers%60%20are%20controlled%20via%20the%20finalization%0A%20%20%20%20%20%20mechanism%20provided%20by%20%60PropertiesMixin%60.%20%60Properties%60%20and%20%60observers%60%20are%0A%20%20%20%20%20%20collected%20by%20manually%20traversing%20the%20prototype%20chain%20and%20merging.%0A%0A%20%20%20%20%20%20To%20limit%20changes%2C%20the%20%60_registered%60%20method%20is%20called%20via%20%60_initializeProperties%60%0A%20%20%20%20%20%20and%20not%20%60_finalizeClass%60.%0A%20%20%20%20*%2F%2F**%0A%20%20%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Polymer%20info%20object%0A%20%20%20%20%20*%20%40param%20%7Bfunction(new%3AHTMLElement)%7D%20Base%20base%20class%20to%20extend%20with%20info%20object%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20behaviors%20behaviors%20to%20copy%20into%20the%20element%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3AHTMLElement)%7D%20Generated%20class%0A%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20GenerateClassFromInfo(info%2CBase%2Cbehaviors)%7B%2F%2F%20manages%20behavior%20and%20lifecycle%20processing%20(filled%20in%20after%20class%20definition)%0Avar%20behaviorList%3Dvoid%200%3Bvar%20lifecycle%3D%7B%7D%3B%2F**%20%40private%20*%2Fvar%20PolymerGenerated%3Dfunction(_Base)%7B_inherits(PolymerGenerated%2C_Base)%3Bfunction%20PolymerGenerated()%7B_classCallCheck(this%2CPolymerGenerated)%3Breturn%20_possibleConstructorReturn(this%2C(PolymerGenerated.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated)).apply(this%2Carguments))%3B%7D_createClass(PolymerGenerated%2C%5B%7Bkey%3A'created'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20created()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'created'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.created%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_registered'%2Cvalue%3Afunction%20_registered()%7B%2F*%20NOTE%3A%20%60beforeRegister%60%20is%20called%20here%20for%20bc%2C%20but%20the%20behavior%0A%20%20%20%20%20%20%20%20%20%20%20%20is%20different%20than%20in%201.x.%20In%201.0%2C%20the%20method%20was%20called%20*after*%0A%20%20%20%20%20%20%20%20%20%20%20%20mixing%20prototypes%20together%20but%20*before*%20processing%20of%20meta-objects.%0A%20%20%20%20%20%20%20%20%20%20%20%20However%2C%20dynamic%20effects%20can%20still%20be%20set%20here%20and%20can%20be%20done%20either%0A%20%20%20%20%20%20%20%20%20%20%20%20in%20%60beforeRegister%60%20or%20%60registered%60.%20It%20is%20no%20longer%20possible%20to%20set%0A%20%20%20%20%20%20%20%20%20%20%20%20%60is%60%20in%20%60beforeRegister%60%20as%20you%20could%20in%201.x.%0A%20%20%20%20%20%20%20%20%20%20*%2F%2F%2F%20only%20proceed%20if%20the%20generated%20class'%20prototype%20has%20not%20been%20registered.%0Avar%20generatedProto%3DPolymerGenerated.prototype%3Bif(!generatedProto.hasOwnProperty('__hasRegisterFinished'))%7BgeneratedProto.__hasRegisterFinished%3Dtrue%3B%2F%2F%20ensure%20superclass%20is%20registered%20first.%0A_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'_registered'%2Cthis).call(this)%3B%2F%2F%20copy%20properties%20onto%20the%20generated%20class%20lazily%20if%20we're%20optimizing%2C%0Aif(Polymer.legacyOptimizations)%7BcopyPropertiesToProto(generatedProto)%3B%7D%2F%2F%20make%20sure%20legacy%20lifecycle%20is%20called%20on%20the%20*element*'s%20prototype%0A%2F%2F%20and%20not%20the%20generated%20class%20prototype%3B%20if%20the%20element%20has%20been%0A%2F%2F%20extended%2C%20these%20are%20*not*%20the%20same.%0Avar%20proto%3DObject.getPrototypeOf(this)%3Bvar%20list%3Dlifecycle.beforeRegister%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(proto)%3B%7D%7Dlist%3Dlifecycle.registered%3Bif(list)%7Bfor(var%20_i%3D0%3B_i%3Clist.length%3B_i%2B%2B)%7Blist%5B_i%5D.call(proto)%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_applyListeners'%2Cvalue%3Afunction%20_applyListeners()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'_applyListeners'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.listeners%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Bvar%20listeners%3Dlist%5Bi%5D%3Bif(listeners)%7Bfor(var%20l%20in%20listeners)%7Bthis._addMethodEventListenerToNode(this%2Cl%2Clisteners%5Bl%5D)%3B%7D%7D%7D%7D%7D%2F%2F%20note%3A%20exception%20to%20%22super%20then%20me%22%20rule%3B%0A%2F%2F%20do%20work%20before%20calling%20super%20so%20that%20super%20attributes%0A%2F%2F%20only%20apply%20if%20not%20already%20set.%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_ensureAttributes'%2Cvalue%3Afunction%20_ensureAttributes()%7Bvar%20list%3Dlifecycle.hostAttributes%3Bif(list)%7Bfor(var%20i%3Dlist.length-1%3Bi%3E%3D0%3Bi--)%7Bvar%20hostAttributes%3Dlist%5Bi%5D%3Bfor(var%20a%20in%20hostAttributes)%7Bthis._ensureAttribute(a%2ChostAttributes%5Ba%5D)%3B%7D%7D%7D_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'_ensureAttributes'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'ready'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.ready%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attached'%2Cvalue%3Afunction%20attached()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'attached'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.attached%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'detached'%2Cvalue%3Afunction%20detached()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'detached'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.detached%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Implements%20native%20Custom%20Elements%20%60attributeChangedCallback%60%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20an%20attribute%20value%20to%20a%20property%20via%20%60_attributeToProperty%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute%20that%20changed%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20New%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChanged'%2Cvalue%3Afunction%20attributeChanged(name%2Cold%2Cvalue)%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'attributeChanged'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.attributeChanged%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this%2Cname%2Cold%2Cvalue)%3B%7D%7D%7D%7D%5D%2C%5B%7Bkey%3A'_finalizeClass'%2C%2F%2F%20explicitly%20not%20calling%20super._finalizeClass%0Avalue%3Afunction%20_finalizeClass()%7B%2F%2F%20if%20calling%20via%20a%20subclass%20that%20hasn't%20been%20generated%2C%20pass%20through%20to%20super%0Aif(!this.hasOwnProperty(window.JSCompiler_renameProperty('generatedFrom'%2Cthis)))%7B_get(PolymerGenerated.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated)%2C'_finalizeClass'%2Cthis).call(this)%3B%7Delse%7B%2F%2F%20interleave%20properties%20and%20observers%20per%20behavior%20and%20%60info%60%0Aif(behaviorList)%7Bfor(var%20i%3D0%2Cb%3Bi%3CbehaviorList.length%3Bi%2B%2B)%7Bb%3DbehaviorList%5Bi%5D%3Bif(b.properties)%7Bthis.createProperties(b.properties)%3B%7Dif(b.observers)%7Bthis.createObservers(b.observers%2Cb.properties)%3B%7D%7D%7Dif(info.properties)%7Bthis.createProperties(info.properties)%3B%7Dif(info.observers)%7Bthis.createObservers(info.observers%2Cinfo.properties)%3B%7D%2F%2F%20make%20sure%20to%20prepare%20the%20element%20template%0Athis._prepareTemplate()%3B%7D%7D%7D%2C%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Bvar%20properties%3D%7B%7D%3Bif(behaviorList)%7Bfor(var%20i%3D0%3Bi%3CbehaviorList.length%3Bi%2B%2B)%7BObject.assign(properties%2CbehaviorList%5Bi%5D.properties)%3B%7D%7DObject.assign(properties%2Cinfo.properties)%3Breturn%20properties%3B%7D%7D%2C%7Bkey%3A'observers'%2Cget%3Afunction%20get()%7Bvar%20observers%3D%5B%5D%3Bif(behaviorList)%7Bfor(var%20i%3D0%2Cb%3Bi%3CbehaviorList.length%3Bi%2B%2B)%7Bb%3DbehaviorList%5Bi%5D%3Bif(b.observers)%7Bobservers%3Dobservers.concat(b.observers)%3B%7D%7D%7Dif(info.observers)%7Bobservers%3Dobservers.concat(info.observers)%3B%7Dreturn%20observers%3B%7D%7D%5D)%3Breturn%20PolymerGenerated%3B%7D(Base)%3B%2F%2F%20apply%20behaviors%2C%20note%20actual%20copying%20is%20done%20lazily%20at%20first%20instance%20creation%0Aif(behaviors)%7B%2F%2F%20NOTE%3A%20ensure%20the%20behavior%20is%20extending%20a%20class%20with%0A%2F%2F%20legacy%20element%20api.%20This%20is%20necessary%20since%20behaviors%20expect%20to%20be%20able%0A%2F%2F%20to%20access%201.x%20legacy%20api.%0Aif(!Array.isArray(behaviors))%7Bbehaviors%3D%5Bbehaviors%5D%3B%7Dvar%20superBehaviors%3DBase.prototype.behaviors%3B%2F%2F%20get%20flattened%2C%20deduped%20list%20of%20behaviors%20*not*%20already%20on%20super%20class%0AbehaviorList%3DflattenBehaviors(behaviors%2Cnull%2CsuperBehaviors)%3BPolymerGenerated.prototype.behaviors%3DsuperBehaviors%3FsuperBehaviors.concat(behaviors)%3AbehaviorList%3B%7Dvar%20copyPropertiesToProto%3Dfunction%20copyPropertiesToProto(proto)%7Bif(behaviorList)%7BapplyBehaviors(proto%2CbehaviorList%2Clifecycle)%3B%7DapplyInfo(proto%2Cinfo%2Clifecycle%2CexcludeOnInfo)%3B%7D%3B%2F%2F%20copy%20properties%20if%20we're%20not%20optimizing%0Aif(!Polymer.legacyOptimizations)%7BcopyPropertiesToProto(PolymerGenerated.prototype)%3B%7DPolymerGenerated.generatedFrom%3Dinfo%3Breturn%20PolymerGenerated%3B%7D%2F**%0A%20%20%20%20%20*%20Generates%20a%20class%20that%20extends%20%60Polymer.LegacyElement%60%20based%20on%20the%0A%20%20%20%20%20*%20provided%20info%20object.%20%20Metadata%20objects%20on%20the%20%60info%60%20object%0A%20%20%20%20%20*%20(%60properties%60%2C%20%60observers%60%2C%20%60listeners%60%2C%20%60behaviors%60%2C%20%60is%60)%20are%20used%0A%20%20%20%20%20*%20for%20Polymer's%20meta-programming%20systems%2C%20and%20any%20functions%20are%20copied%0A%20%20%20%20%20*%20to%20the%20generated%20class.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Valid%20%22metadata%22%20values%20are%20as%20follows%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60is%60%3A%20String%20providing%20the%20tag%20name%20to%20register%20the%20element%20under.%20In%0A%20%20%20%20%20*%20addition%2C%20if%20a%20%60dom-module%60%20with%20the%20same%20id%20exists%2C%20the%20first%20template%0A%20%20%20%20%20*%20in%20that%20%60dom-module%60%20will%20be%20stamped%20into%20the%20shadow%20root%20of%20this%20element%2C%0A%20%20%20%20%20*%20with%20support%20for%20declarative%20event%20listeners%20(%60on-...%60)%2C%20Polymer%20data%0A%20%20%20%20%20*%20bindings%20(%60%5B%5B...%5D%5D%60%20and%20%60%7B%7B...%7D%7D%60)%2C%20and%20id-based%20node%20finding%20into%0A%20%20%20%20%20*%20%60this.%24%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60properties%60%3A%20Object%20describing%20property-related%20metadata%20used%20by%20Polymer%0A%20%20%20%20%20*%20features%20(key%3A%20property%20names%2C%20value%3A%20object%20containing%20property%20metadata).%0A%20%20%20%20%20*%20Valid%20keys%20in%20per-property%20metadata%20include%3A%0A%20%20%20%20%20*%20-%20%60type%60%20(String%7CNumber%7CObject%7CArray%7C...)%3A%20Used%20by%0A%20%20%20%20%20*%20%20%20%60attributeChangedCallback%60%20to%20determine%20how%20string-based%20attributes%0A%20%20%20%20%20*%20%20%20are%20deserialized%20to%20JavaScript%20property%20values.%0A%20%20%20%20%20*%20-%20%60notify%60%20(boolean)%3A%20Causes%20a%20change%20in%20the%20property%20to%20fire%20a%0A%20%20%20%20%20*%20%20%20non-bubbling%20event%20called%20%60%3Cproperty%3E-changed%60.%20Elements%20that%20have%0A%20%20%20%20%20*%20%20%20enabled%20two-way%20binding%20to%20the%20property%20use%20this%20event%20to%20observe%20changes.%0A%20%20%20%20%20*%20-%20%60readOnly%60%20(boolean)%3A%20Creates%20a%20getter%20for%20the%20property%2C%20but%20no%20setter.%0A%20%20%20%20%20*%20%20%20To%20set%20a%20read-only%20property%2C%20use%20the%20private%20setter%20method%0A%20%20%20%20%20*%20%20%20%60_setProperty(property%2C%20value)%60.%0A%20%20%20%20%20*%20-%20%60observer%60%20(string)%3A%20Observer%20method%20name%20that%20will%20be%20called%20when%0A%20%20%20%20%20*%20%20%20the%20property%20changes.%20The%20arguments%20of%20the%20method%20are%0A%20%20%20%20%20*%20%20%20%60(value%2C%20previousValue)%60.%0A%20%20%20%20%20*%20-%20%60computed%60%20(string)%3A%20String%20describing%20method%20and%20dependent%20properties%0A%20%20%20%20%20*%20%20%20for%20computing%20the%20value%20of%20this%20property%20(e.g.%20%60'computeFoo(bar%2C%20zot)'%60).%0A%20%20%20%20%20*%20%20%20Computed%20properties%20are%20read-only%20by%20default%20and%20can%20only%20be%20changed%0A%20%20%20%20%20*%20%20%20via%20the%20return%20value%20of%20the%20computing%20method.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60observers%60%3A%20Array%20of%20strings%20describing%20multi-property%20observer%20methods%0A%20%20%20%20%20*%20%20and%20their%20dependent%20properties%20(e.g.%20%60'observeABC(a%2C%20b%2C%20c)'%60).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60listeners%60%3A%20Object%20describing%20event%20listeners%20to%20be%20added%20to%20each%0A%20%20%20%20%20*%20%20instance%20of%20this%20element%20(key%3A%20event%20name%2C%20value%3A%20method%20name).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60behaviors%60%3A%20Array%20of%20additional%20%60info%60%20objects%20containing%20metadata%0A%20%20%20%20%20*%20and%20callbacks%20in%20the%20same%20format%20as%20the%20%60info%60%20object%20here%20which%20are%0A%20%20%20%20%20*%20merged%20into%20this%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60hostAttributes%60%3A%20Object%20listing%20attributes%20to%20be%20applied%20to%20the%20host%0A%20%20%20%20%20*%20%20once%20created%20(key%3A%20attribute%20name%2C%20value%3A%20attribute%20value).%20%20Values%0A%20%20%20%20%20*%20%20are%20serialized%20based%20on%20the%20type%20of%20the%20value.%20%20Host%20attributes%20should%0A%20%20%20%20%20*%20%20generally%20be%20limited%20to%20attributes%20such%20as%20%60tabIndex%60%20and%20%60aria-...%60.%0A%20%20%20%20%20*%20%20Attributes%20in%20%60hostAttributes%60%20are%20only%20applied%20if%20a%20user-supplied%0A%20%20%20%20%20*%20%20attribute%20is%20not%20already%20present%20(attributes%20in%20markup%20override%0A%20%20%20%20%20*%20%20%60hostAttributes%60).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20In%20addition%2C%20the%20following%20Polymer-specific%20callbacks%20may%20be%20provided%3A%0A%20%20%20%20%20*%20-%20%60registered%60%3A%20called%20after%20first%20instance%20of%20this%20element%2C%0A%20%20%20%20%20*%20-%20%60created%60%3A%20called%20during%20%60constructor%60%0A%20%20%20%20%20*%20-%20%60attached%60%3A%20called%20during%20%60connectedCallback%60%0A%20%20%20%20%20*%20-%20%60detached%60%3A%20called%20during%20%60disconnectedCallback%60%0A%20%20%20%20%20*%20-%20%60ready%60%3A%20called%20before%20first%20%60attached%60%2C%20after%20all%20properties%20of%0A%20%20%20%20%20*%20%20%20this%20element%20have%20been%20propagated%20to%20its%20template%20and%20all%20observers%0A%20%20%20%20%20*%20%20%20have%20run%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Object%20containing%20Polymer%20metadata%20and%20functions%0A%20%20%20%20%20*%20%20%20to%20become%20class%20methods.%0A%20%20%20%20%20*%20%40template%20T%0A%20%20%20%20%20*%20%40param%20%7Bfunction(T)%3AT%7D%20mixin%20Optional%20mixin%20to%20apply%20to%20legacy%20base%20class%0A%20%20%20%20%20*%20%20%20before%20extending%20with%20Polymer%20metaprogramming.%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3AHTMLElement)%7D%20Generated%20class%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%2FPolymer.Class%3Dfunction(info%2Cmixin)%7Bif(!info)%7Bconsole.warn('Polymer.Class%20requires%20%60info%60%20argument')%3B%7Dvar%20klass%3Dmixin%3Fmixin(Polymer.LegacyElementMixin(HTMLElement))%3APolymer.LegacyElementMixin(HTMLElement)%3Bklass%3DGenerateClassFromInfo(info%2Cklass%2Cinfo.behaviors)%3Bif(info._enableDisableUpgrade)%7Bklass%3DPolymer.DisableUpgradeMixin(klass)%3B%7D%2F%2F%20decorate%20klass%20with%20registration%20info%0Aklass.is%3Dklass.prototype.is%3Dinfo.is%3Breturn%20klass%3B%7D%3BPolymer.mixinBehaviors%3DmixinBehaviors%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fclass.html.js%0A",
            "resourceBytes": 19044,
            "encodedBytes": 0,
            "unusedBytes": 2304
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Legacy%20class%20factory%20and%20registration%20helper%20for%20defining%20Polymer%0A%20%20%20%20%20*%20elements.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20is%20equivalent%20to%0A%20%20%20%20%20*%20%60customElements.define(info.is%2C%20Polymer.Class(info))%3B%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20See%20%60Polymer.Class%60%20for%20details%20on%20valid%20legacy%20metadata%20format%20for%20%60info%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40global%0A%20%20%20%20%20*%20%40override%0A%20%20%20%20%20*%20%40function%20Polymer%0A%20%20%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Object%20containing%20Polymer%20metadata%20and%20functions%0A%20%20%20%20%20*%20%20%20to%20become%20class%20methods.%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3A%20HTMLElement)%7D%20Generated%20class%0A%20%20%20%20%20*%20%40suppress%20%7Bduplicate%2C%20invalidCasts%2C%20checkTypes%7D%0A%20%20%20%20%20*%2Fwindow.Polymer._polymerFn%3Dfunction(info)%7B%2F%2F%20if%20input%20is%20a%20%60class%60%20(aka%20a%20function%20with%20a%20prototype)%2C%20use%20the%20prototype%0A%2F%2F%20remember%20that%20the%20%60constructor%60%20will%20never%20be%20called%0Avar%20klass%3Dvoid%200%3Bif(typeof%20info%3D%3D%3D'function')%7Bklass%3Dinfo%3B%7Delse%7Bklass%3DPolymer.Class(info)%3B%7DcustomElements.define(klass.is%2C%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fklass)%3Breturn%20klass%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fpolymer-fn.html.js%0A",
            "resourceBytes": 1111,
            "encodedBytes": 0,
            "unusedBytes": 0
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F%2F%20Common%20implementation%20for%20mixin%20%26%20behavior%0Afunction%20mutablePropertyChange(inst%2Cproperty%2Cvalue%2Cold%2CmutableData)%7Bvar%20isObject%3Dvoid%200%3Bif(mutableData)%7BisObject%3D(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%3D%3D%3D'object'%26%26value!%3D%3Dnull%3B%2F%2F%20Pull%20%60old%60%20for%20Objects%20from%20temp%20cache%2C%20but%20treat%20%60null%60%20as%20a%20primitive%0Aif(isObject)%7Bold%3Dinst.__dataTemp%5Bproperty%5D%3B%7D%7D%2F%2F%20Strict%20equality%20check%2C%20but%20return%20false%20for%20NaN%3D%3D%3DNaN%0Avar%20shouldChange%3Dold!%3D%3Dvalue%26%26(old%3D%3D%3Dold%7C%7Cvalue%3D%3D%3Dvalue)%3B%2F%2F%20Objects%20are%20stored%20in%20temporary%20cache%20(cleared%20at%20end%20of%0A%2F%2F%20turn)%2C%20which%20is%20used%20for%20dirty-checking%0Aif(isObject%26%26shouldChange)%7Binst.__dataTemp%5Bproperty%5D%3Dvalue%3B%7Dreturn%20shouldChange%3B%7D%2F**%0A%20%20%20*%20Element%20class%20mixin%20to%20skip%20strict%20dirty-checking%20for%20objects%20and%20arrays%0A%20%20%20*%20(always%20consider%20them%20to%20be%20%22dirty%22)%2C%20for%20use%20on%20elements%20utilizing%0A%20%20%20*%20%60Polymer.PropertyEffects%60%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20cause%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20apply%20this%20mixin%20or%20enable%20the%0A%20%20%20*%20%60Polymer.OptionalMutableData%60%20mixin.%0A%20%20%20*%0A%20%20%20*%20In%20order%20to%20make%20the%20dirty%20check%20strategy%20configurable%2C%20see%0A%20%20%20*%20%60Polymer.OptionalMutableData%60.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20as%20opposed%20to%20using%20strict%20dirty%20checking%20with%20immutable%0A%20%20%20*%20patterns%20or%20Polymer's%20path%20notification%20API.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20to%20skip%20strict%20dirty-checking%20for%20objects%0A%20%20%20*%20%20%20and%20arrays%0A%20%20%20*%2FPolymer.MutableData%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_MutableData%7D%0A%20%20%20%20%20*%2Fvar%20MutableData%3Dfunction(_superClass)%7B_inherits(MutableData%2C_superClass)%3Bfunction%20MutableData()%7B_classCallCheck(this%2CMutableData)%3Breturn%20_possibleConstructorReturn(this%2C(MutableData.__proto__%7C%7CObject.getPrototypeOf(MutableData)).apply(this%2Carguments))%3B%7D_createClass(MutableData%2C%5B%7Bkey%3A'_shouldPropertyChange'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20provide%20option%20for%20skipping%0A%20%20%20%20%20%20%20*%20strict%20equality%20checking%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%0A%20%20%20%20%20%20%20*%20cache%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Ctrue)%3B%7D%7D%5D)%3Breturn%20MutableData%3B%7D(superClass)%3Breturn%20MutableData%3B%7D)%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20to%20add%20the%20optional%20ability%20to%20skip%20strict%0A%20%20%20*%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%0A%20%20%20*%20%22dirty%22)%20by%20setting%20a%20%60mutable-data%60%20attribute%20on%20an%20element%20instance.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20allow%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20enable%20this%20mixin%20or%20apply%20the%0A%20%20%20*%20%60Polymer.MutableData%60%20mixin.%0A%20%20%20*%0A%20%20%20*%20While%20this%20mixin%20adds%20the%20ability%20to%20forgo%20Object%2FArray%20dirty%20checking%2C%0A%20%20%20*%20the%20%60mutableData%60%20flag%20defaults%20to%20false%20and%20must%20be%20set%20on%20the%20instance.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20by%20relying%20on%20%60mutableData%3A%20true%60%20as%20opposed%20to%20using%0A%20%20%20*%20strict%20dirty%20checking%20with%20immutable%20patterns%20or%20Polymer's%20path%20notification%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20to%20optionally%20skip%20strict%20dirty-checking%0A%20%20%20*%20%20%20for%20objects%20and%20arrays%0A%20%20%20*%2FPolymer.OptionalMutableData%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_OptionalMutableData%7D%0A%20%20%20%20%20*%2Fvar%20OptionalMutableData%3Dfunction(_superClass2)%7B_inherits(OptionalMutableData%2C_superClass2)%3Bfunction%20OptionalMutableData()%7B_classCallCheck(this%2COptionalMutableData)%3Breturn%20_possibleConstructorReturn(this%2C(OptionalMutableData.__proto__%7C%7CObject.getPrototypeOf(OptionalMutableData)).apply(this%2Carguments))%3B%7D_createClass(OptionalMutableData%2C%5B%7Bkey%3A'_shouldPropertyChange'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20provide%20option%20for%20skipping%0A%20%20%20%20%20%20%20*%20strict%20equality%20checking%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20When%20%60this.mutableData%60%20is%20true%20on%20this%20instance%2C%20this%20method%0A%20%20%20%20%20%20%20*%20pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%20cache%0A%20%20%20%20%20%20%20*%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Cthis.mutableData)%3B%7D%7D%5D%2C%5B%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Breturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20Instance-level%20flag%20for%20configuring%20the%20dirty-checking%20strategy%0A%20%20%20%20%20%20%20%20%20%20%20*%20for%20this%20element.%20%20When%20true%2C%20Objects%20and%20Arrays%20will%20skip%20dirty%0A%20%20%20%20%20%20%20%20%20%20%20*%20checking%2C%20otherwise%20strict%20equality%20checking%20will%20be%20used.%0A%20%20%20%20%20%20%20%20%20%20%20*%2FmutableData%3ABoolean%7D%3B%7D%7D%5D)%3Breturn%20OptionalMutableData%3B%7D(superClass)%3Breturn%20OptionalMutableData%3B%7D)%3B%2F%2F%20Export%20for%20use%20by%20legacy%20behavior%0APolymer.MutableData._mutablePropertyChange%3DmutablePropertyChange%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fmutable-data.html.js%0A",
            "resourceBytes": 10198,
            "encodedBytes": 0,
            "unusedBytes": 2679
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7Dfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F%2F%20Base%20class%20for%20HTMLTemplateElement%20extension%20that%20has%20property%20effects%0A%2F%2F%20machinery%20for%20propagating%20host%20properties%20to%20children.%20This%20is%20an%20ES5%0A%2F%2F%20class%20only%20because%20Babel%20(incorrectly)%20requires%20super()%20in%20the%20class%0A%2F%2F%20constructor%20even%20though%20no%20%60this%60%20is%20used%20and%20it%20returns%20an%20instance.%0Avar%20newInstance%3Dnull%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BHTMLTemplateElement%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20HTMLTemplateElementExtension()%7Breturn%20newInstance%3B%7DHTMLTemplateElementExtension.prototype%3DObject.create(HTMLTemplateElement.prototype%2C%7Bconstructor%3A%7Bvalue%3AHTMLTemplateElementExtension%2Cwritable%3Atrue%7D%7D)%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40extends%20%7BHTMLTemplateElementExtension%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20DataTemplate%3DPolymer.PropertyEffects(HTMLTemplateElementExtension)%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_MutableData%7D%0A%20%20%20%20%20*%20%40extends%20%7BDataTemplate%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20MutableDataTemplate%3DPolymer.MutableData(DataTemplate)%3B%2F%2F%20Applies%20a%20DataTemplate%20subclass%20to%20a%20%3Ctemplate%3E%20instance%0Afunction%20upgradeTemplate(template%2Cconstructor)%7BnewInstance%3Dtemplate%3BObject.setPrototypeOf(template%2Cconstructor.prototype)%3Bnew%20constructor()%3BnewInstance%3Dnull%3B%7D%2F**%0A%20%20%20%20%20*%20Base%20class%20for%20TemplateInstance.%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20base%3DPolymer.PropertyEffects(function()%7Bfunction%20_class()%7B_classCallCheck(this%2C_class)%3B%7Dreturn%20_class%3B%7D())%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40customElement%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.PropertyEffects%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20TemplateInstanceBase%3Dfunction(_base)%7B_inherits(TemplateInstanceBase%2C_base)%3Bfunction%20TemplateInstanceBase(props)%7B_classCallCheck(this%2CTemplateInstanceBase)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(TemplateInstanceBase.__proto__%7C%7CObject.getPrototypeOf(TemplateInstanceBase)).call(this))%3B_this._configureProperties(props)%3B_this.root%3D_this._stampTemplate(_this.__dataHost)%3B%2F%2F%20Save%20list%20of%20stamped%20children%0Avar%20children%3D_this.children%3D%5B%5D%3Bfor(var%20n%3D_this.root.firstChild%3Bn%3Bn%3Dn.nextSibling)%7Bchildren.push(n)%3Bn.__templatizeInstance%3D_this%3B%7Dif(_this.__templatizeOwner%26%26_this.__templatizeOwner.__hideTemplateChildren__)%7B_this._showHideChildren(true)%3B%7D%2F%2F%20Flush%20props%20only%20when%20props%20are%20passed%20if%20instance%20props%20exist%0A%2F%2F%20or%20when%20there%20isn't%20instance%20props.%0Avar%20options%3D_this.__templatizeOptions%3Bif(props%26%26options.instanceProps%7C%7C!options.instanceProps)%7B_this._enableProperties()%3B%7Dreturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Configure%20the%20given%20%60props%60%20by%20calling%20%60_setPendingProperty%60.%20Also%0A%20%20%20%20%20%20%20*%20sets%20any%20properties%20stored%20in%20%60__hostProps%60.%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Object%20of%20property%20name-value%20pairs%20to%20set.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F_createClass(TemplateInstanceBase%2C%5B%7Bkey%3A'_configureProperties'%2Cvalue%3Afunction%20_configureProperties(props)%7Bvar%20options%3Dthis.__templatizeOptions%3Bif(options.forwardHostProp)%7Bfor(var%20hprop%20in%20this.__hostProps)%7Bthis._setPendingProperty(hprop%2Cthis.__dataHost%5B'_host_'%2Bhprop%5D)%3B%7D%7D%2F%2F%20Any%20instance%20props%20passed%20in%20the%20constructor%20will%20overwrite%20host%20props%3B%0A%2F%2F%20normally%20this%20would%20be%20a%20user%20error%20but%20we%20don't%20specifically%20filter%20them%0Afor(var%20iprop%20in%20props)%7Bthis._setPendingProperty(iprop%2Cprops%5Biprop%5D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Forwards%20a%20host%20property%20to%20this%20instance.%20%20This%20method%20should%20be%0A%20%20%20%20%20%20%20*%20called%20on%20instances%20from%20the%20%60options.forwardHostProp%60%20callback%0A%20%20%20%20%20%20%20*%20to%20propagate%20changes%20of%20host%20properties%20to%20each%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20enqueues%20the%20change%2C%20which%20are%20flushed%20as%20a%20batch.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20or%20path%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20the%20property%20to%20forward%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'forwardHostProp'%2Cvalue%3Afunction%20forwardHostProp(prop%2Cvalue)%7Bif(this._setPendingPropertyOrPath(prop%2Cvalue%2Cfalse%2Ctrue))%7Bthis.__dataHost._enqueueClient(this)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20point%20for%20adding%20custom%20or%20simulated%20event%20handling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20event%20listener%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20add%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addEventListenerToNode'%2Cvalue%3Afunction%20_addEventListenerToNode(node%2CeventName%2Chandler)%7Bvar%20_this2%3Dthis%3Bif(this._methodHost%26%26this.__templatizeOptions.parentModel)%7B%2F%2F%20If%20this%20instance%20should%20be%20considered%20a%20parent%20model%2C%20decorate%0A%2F%2F%20events%20this%20template%20instance%20as%20%60model%60%0Athis._methodHost._addEventListenerToNode(node%2CeventName%2Cfunction(e)%7Be.model%3D_this2%3Bhandler(e)%3B%7D)%3B%7Delse%7B%2F%2F%20Otherwise%20delegate%20to%20the%20template's%20host%20(which%20could%20be)%0A%2F%2F%20another%20template%20instance%0Avar%20templateHost%3Dthis.__dataHost.__dataHost%3Bif(templateHost)%7BtemplateHost._addEventListenerToNode(node%2CeventName%2Chandler)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Shows%20or%20hides%20the%20template%20instance%20top%20level%20child%20elements.%20For%0A%20%20%20%20%20%20%20*%20text%20nodes%2C%20%60textContent%60%20is%20removed%20while%20%22hidden%22%20and%20replaced%20when%0A%20%20%20%20%20%20%20*%20%22shown.%22%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hide%20Set%20to%20true%20to%20hide%20the%20children%3B%0A%20%20%20%20%20%20%20*%20set%20to%20false%20to%20show%20them.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_showHideChildren'%2Cvalue%3Afunction%20_showHideChildren(hide)%7Bvar%20c%3Dthis.children%3Bfor(var%20i%3D0%3Bi%3Cc.length%3Bi%2B%2B)%7Bvar%20n%3Dc%5Bi%5D%3B%2F%2F%20Ignore%20non-changes%0Aif(Boolean(hide)!%3DBoolean(n.__hideTemplateChildren__))%7Bif(n.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bif(hide)%7Bn.__polymerTextContent__%3Dn.textContent%3Bn.textContent%3D''%3B%7Delse%7Bn.textContent%3Dn.__polymerTextContent__%3B%7D%2F%2F%20remove%20and%20replace%20slot%0A%7Delse%20if(n.localName%3D%3D%3D'slot')%7Bif(hide)%7Bn.__polymerReplaced__%3Ddocument.createComment('hidden-slot')%3Bn.parentNode.replaceChild(n.__polymerReplaced__%2Cn)%3B%7Delse%7Bvar%20replace%3Dn.__polymerReplaced__%3Bif(replace)%7Breplace.parentNode.replaceChild(n%2Creplace)%3B%7D%7D%7Delse%20if(n.style)%7Bif(hide)%7Bn.__polymerDisplay__%3Dn.style.display%3Bn.style.display%3D'none'%3B%7Delse%7Bn.style.display%3Dn.__polymerDisplay__%3B%7D%7D%7Dn.__hideTemplateChildren__%3Dhide%3Bif(n._showHideChildren)%7Bn._showHideChildren(hide)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20property-effects%20implementation%20to%20intercept%0A%20%20%20%20%20%20%20*%20textContent%20bindings%20while%20children%20are%20%22hidden%22%20and%20cache%20in%0A%20%20%20%20%20%20%20*%20private%20storage%20for%20later%20retrieval.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20The%20node%20to%20set%20a%20property%20on%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20The%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20to%20set%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setUnmanagedPropertyToNode'%2Cvalue%3Afunction%20_setUnmanagedPropertyToNode(node%2Cprop%2Cvalue)%7Bif(node.__hideTemplateChildren__%26%26node.nodeType%3D%3DNode.TEXT_NODE%26%26prop%3D%3D'textContent')%7Bnode.__polymerTextContent__%3Dvalue%3B%7Delse%7B_get(TemplateInstanceBase.prototype.__proto__%7C%7CObject.getPrototypeOf(TemplateInstanceBase.prototype)%2C'_setUnmanagedPropertyToNode'%2Cthis).call(this%2Cnode%2Cprop%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Find%20the%20parent%20model%20of%20this%20template%20instance.%20%20The%20parent%20model%0A%20%20%20%20%20%20%20*%20is%20either%20another%20templatize%20instance%20that%20had%20option%20%60parentModel%3A%20true%60%2C%0A%20%20%20%20%20%20%20*%20or%20else%20the%20host%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Polymer_PropertyEffects%7D%20The%20parent%20model%20of%20this%20instance%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'dispatchEvent'%2C%2F**%0A%20%20%20%20%20%20%20*%20Stub%20of%20HTMLElement's%20%60dispatchEvent%60%2C%20so%20that%20effects%20that%20may%0A%20%20%20%20%20%20%20*%20dispatch%20events%20safely%20no-op.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BEvent%7D%20event%20Event%20to%20dispatch%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Always%20true.%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20dispatchEvent(event)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Areturn%20true%3B%7D%7D%2C%7Bkey%3A'parentModel'%2Cget%3Afunction%20get()%7Bvar%20model%3Dthis.__parentModel%3Bif(!model)%7Bvar%20options%3Dvoid%200%3Bmodel%3Dthis%3Bdo%7B%2F%2F%20A%20template%20instance's%20%60__dataHost%60%20is%20a%20%3Ctemplate%3E%0A%2F%2F%20%60model.__dataHost.__dataHost%60%20is%20the%20template's%20host%0Amodel%3Dmodel.__dataHost.__dataHost%3B%7Dwhile((options%3Dmodel.__templatizeOptions)%26%26!options.parentModel)%3Bthis.__parentModel%3Dmodel%3B%7Dreturn%20model%3B%7D%7D%5D)%3Breturn%20TemplateInstanceBase%3B%7D(base)%3B%2F**%20%40type%20%7B!DataTemplate%7D%20*%2FTemplateInstanceBase.prototype.__dataHost%3B%2F**%20%40type%20%7B!TemplatizeOptions%7D%20*%2FTemplateInstanceBase.prototype.__templatizeOptions%3B%2F**%20%40type%20%7B!Polymer_PropertyEffects%7D%20*%2FTemplateInstanceBase.prototype._methodHost%3B%2F**%20%40type%20%7B!Object%7D%20*%2FTemplateInstanceBase.prototype.__templatizeOwner%3B%2F**%20%40type%20%7B!Object%7D%20*%2FTemplateInstanceBase.prototype.__hostProps%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BTemplateInstanceBase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_MutableData%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20MutableTemplateInstanceBase%3DPolymer.MutableData(TemplateInstanceBase)%3Bfunction%20findMethodHost(template)%7B%2F%2F%20Technically%20this%20should%20be%20the%20owner%20of%20the%20outermost%20template.%0A%2F%2F%20In%20shadow%20dom%2C%20this%20is%20always%20getRootNode().host%2C%20but%20we%20can%0A%2F%2F%20approximate%20this%20via%20cooperation%20with%20our%20dataHost%20always%20setting%0A%2F%2F%20%60_methodHost%60%20as%20long%20as%20there%20were%20bindings%20(or%20id's)%20on%20this%0A%2F%2F%20instance%20causing%20it%20to%20get%20a%20dataHost.%0Avar%20templateHost%3Dtemplate.__dataHost%3Breturn%20templateHost%26%26templateHost._methodHost%7C%7CtemplateHost%3B%7D%2F*%20eslint-disable%20valid-jsdoc%20*%2F%2F**%0A%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20class.prototype%20is%20not%20defined%20for%20some%20reason%0A%20%20%20%20%20*%2Ffunction%20createTemplatizerClass(template%2CtemplateInfo%2Coptions)%7B%2F%2F%20Anonymous%20class%20created%20by%20the%20templatize%0Avar%20base%3Doptions.mutableData%3FMutableTemplateInstanceBase%3ATemplateInstanceBase%3B%2F%2F%20Affordance%20for%20global%20mixins%20onto%20TemplatizeInstance%0Aif(Polymer.Templatize.mixin)%7Bbase%3DPolymer.Templatize.mixin(base)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fvar%20klass%3Dfunction(_base2)%7B_inherits(klass%2C_base2)%3Bfunction%20klass()%7B_classCallCheck(this%2Cklass)%3Breturn%20_possibleConstructorReturn(this%2C(klass.__proto__%7C%7CObject.getPrototypeOf(klass)).apply(this%2Carguments))%3B%7Dreturn%20klass%3B%7D(base)%3Bklass.prototype.__templatizeOptions%3Doptions%3Bklass.prototype._bindTemplate(template)%3BaddNotifyEffects(klass%2Ctemplate%2CtemplateInfo%2Coptions)%3Breturn%20klass%3B%7D%2F**%0A%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20class.prototype%20is%20not%20defined%20for%20some%20reason%0A%20%20%20%20%20*%2Ffunction%20addPropagateEffects(template%2CtemplateInfo%2Coptions)%7Bvar%20userForwardHostProp%3Doptions.forwardHostProp%3Bif(userForwardHostProp)%7B%2F%2F%20Provide%20data%20API%20and%20property%20effects%20on%20memoized%20template%20class%0Avar%20klass%3DtemplateInfo.templatizeTemplateClass%3Bif(!klass)%7Bvar%20_base3%3Doptions.mutableData%3FMutableDataTemplate%3ADataTemplate%3B%2F**%20%40private%20*%2Fklass%3DtemplateInfo.templatizeTemplateClass%3Dfunction(_base4)%7B_inherits(TemplatizedTemplate%2C_base4)%3Bfunction%20TemplatizedTemplate()%7B_classCallCheck(this%2CTemplatizedTemplate)%3Breturn%20_possibleConstructorReturn(this%2C(TemplatizedTemplate.__proto__%7C%7CObject.getPrototypeOf(TemplatizedTemplate)).apply(this%2Carguments))%3B%7Dreturn%20TemplatizedTemplate%3B%7D(_base3)%3B%2F%2F%20Add%20template%20-%20%3Einstances%20effects%0A%2F%2F%20and%20host%20%3C-%20template%20effects%0Avar%20hostProps%3DtemplateInfo.hostProps%3Bfor(var%20prop%20in%20hostProps)%7Bklass.prototype._addPropertyEffect('_host_'%2Bprop%2Cklass.prototype.PROPERTY_EFFECT_TYPES.PROPAGATE%2C%7Bfn%3AcreateForwardHostPropEffect(prop%2CuserForwardHostProp)%7D)%3Bklass.prototype._createNotifyingProperty('_host_'%2Bprop)%3B%7D%7DupgradeTemplate(template%2Cklass)%3B%2F%2F%20Mix%20any%20pre-bound%20data%20into%20__data%3B%20no%20need%20to%20flush%20this%20to%0A%2F%2F%20instances%20since%20they%20pull%20from%20the%20template%20at%20instance-time%0Aif(template.__dataProto)%7B%2F%2F%20Note%2C%20generally%20%60__dataProto%60%20could%20be%20chained%2C%20but%20it's%20guaranteed%0A%2F%2F%20to%20not%20be%20since%20this%20is%20a%20vanilla%20template%20we%20just%20added%20effects%20to%0AObject.assign(template.__data%2Ctemplate.__dataProto)%3B%7D%2F%2F%20Clear%20any%20pending%20data%20for%20performance%0Atemplate.__dataTemp%3D%7B%7D%3Btemplate.__dataPending%3Dnull%3Btemplate.__dataOld%3Dnull%3Btemplate._enableProperties()%3B%7D%7D%2F*%20eslint-enable%20valid-jsdoc%20*%2Ffunction%20createForwardHostPropEffect(hostProp%2CuserForwardHostProp)%7Breturn%20function%20forwardHostProp(template%2Cprop%2Cprops)%7BuserForwardHostProp.call(template.__templatizeOwner%2Cprop.substring('_host_'.length)%2Cprops%5Bprop%5D)%3B%7D%3B%7Dfunction%20addNotifyEffects(klass%2Ctemplate%2CtemplateInfo%2Coptions)%7Bvar%20hostProps%3DtemplateInfo.hostProps%7C%7C%7B%7D%3Bfor(var%20iprop%20in%20options.instanceProps)%7Bdelete%20hostProps%5Biprop%5D%3Bvar%20userNotifyInstanceProp%3Doptions.notifyInstanceProp%3Bif(userNotifyInstanceProp)%7Bklass.prototype._addPropertyEffect(iprop%2Cklass.prototype.PROPERTY_EFFECT_TYPES.NOTIFY%2C%7Bfn%3AcreateNotifyInstancePropEffect(iprop%2CuserNotifyInstanceProp)%7D)%3B%7D%7Dif(options.forwardHostProp%26%26template.__dataHost)%7Bfor(var%20hprop%20in%20hostProps)%7Bklass.prototype._addPropertyEffect(hprop%2Cklass.prototype.PROPERTY_EFFECT_TYPES.NOTIFY%2C%7Bfn%3AcreateNotifyHostPropEffect()%7D)%3B%7D%7D%7Dfunction%20createNotifyInstancePropEffect(instProp%2CuserNotifyInstanceProp)%7Breturn%20function%20notifyInstanceProp(inst%2Cprop%2Cprops)%7BuserNotifyInstanceProp.call(inst.__templatizeOwner%2Cinst%2Cprop%2Cprops%5Bprop%5D)%3B%7D%3B%7Dfunction%20createNotifyHostPropEffect()%7Breturn%20function%20notifyHostProp(inst%2Cprop%2Cprops)%7Binst.__dataHost._setPendingPropertyOrPath('_host_'%2Bprop%2Cprops%5Bprop%5D%2Ctrue%2Ctrue)%3B%7D%3B%7D%2F**%0A%20%20%20%20%20*%20Module%20for%20preparing%20and%20stamping%20instances%20of%20templates%20that%20utilize%0A%20%20%20%20%20*%20Polymer's%20data-binding%20and%20declarative%20event%20listener%20features.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Get%20a%20template%20from%20somewhere%2C%20e.g.%20light%20DOM%0A%20%20%20%20%20*%20%20%20%20%20let%20template%20%3D%20this.querySelector('template')%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Prepare%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20let%20TemplateClass%20%3D%20Polymer.Templatize.templatize(template)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Instance%20the%20template%20with%20an%20initial%20data%20model%0A%20%20%20%20%20*%20%20%20%20%20let%20instance%20%3D%20new%20TemplateClass(%7BmyProp%3A%20'initial'%7D)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Insert%20the%20instance's%20DOM%20somewhere%2C%20e.g.%20element's%20shadow%20DOM%0A%20%20%20%20%20*%20%20%20%20%20this.shadowRoot.appendChild(instance.root)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Changing%20a%20property%20on%20the%20instance%20will%20propagate%20to%20bindings%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20in%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20instance.myProp%20%3D%20'new%20value'%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20%60options%60%20dictionary%20passed%20to%20%60templatize%60%20allows%20for%20customizing%0A%20%20%20%20%20*%20features%20of%20the%20generated%20template%20class%2C%20including%20how%20outer-scope%20host%0A%20%20%20%20%20*%20properties%20should%20be%20forwarded%20into%20template%20instances%2C%20how%20any%20instance%0A%20%20%20%20%20*%20properties%20added%20into%20the%20template's%20scope%20should%20be%20notified%20out%20to%0A%20%20%20%20%20*%20the%20host%2C%20and%20whether%20the%20instance%20should%20be%20decorated%20as%20a%20%22parent%20model%22%0A%20%20%20%20%20*%20of%20any%20event%20handlers.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Customize%20property%20forwarding%20and%20event%20model%20decoration%0A%20%20%20%20%20*%20%20%20%20%20let%20TemplateClass%20%3D%20Polymer.Templatize.templatize(template%2C%20this%2C%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20parentModel%3A%20true%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20forwardHostProp(property%2C%20value)%20%7B...%7D%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20instanceProps%3A%20%7B...%7D%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20notifyInstanceProp(instance%2C%20property%2C%20value)%20%7B...%7D%2C%0A%20%20%20%20%20*%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40summary%20Module%20for%20preparing%20and%20stamping%20instances%20of%20templates%0A%20%20%20%20%20*%20%20%20utilizing%20Polymer%20templating%20features.%0A%20%20%20%20%20*%2FPolymer.Templatize%3D%7B%2F**%0A%20%20%20%20%20%20%20*%20Returns%20an%20anonymous%20%60Polymer.PropertyEffects%60%20class%20bound%20to%20the%0A%20%20%20%20%20%20%20*%20%60%3Ctemplate%3E%60%20provided.%20%20Instancing%20the%20class%20will%20result%20in%20the%0A%20%20%20%20%20%20%20*%20template%20being%20stamped%20into%20a%20document%20fragment%20stored%20as%20the%20instance's%0A%20%20%20%20%20%20%20*%20%60root%60%20property%2C%20after%20which%20it%20can%20be%20appended%20to%20the%20DOM.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Templates%20may%20utilize%20all%20Polymer%20data-binding%20features%20as%20well%20as%0A%20%20%20%20%20%20%20*%20declarative%20event%20listeners.%20%20Event%20listeners%20and%20inline%20computing%0A%20%20%20%20%20%20%20*%20functions%20in%20the%20template%20will%20be%20called%20on%20the%20host%20of%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20constructor%20returned%20takes%20a%20single%20argument%20dictionary%20of%20initial%0A%20%20%20%20%20%20%20*%20property%20values%20to%20propagate%20into%20template%20bindings.%20%20Additionally%0A%20%20%20%20%20%20%20*%20host%20properties%20can%20be%20forwarded%20in%2C%20and%20instance%20properties%20can%20be%0A%20%20%20%20%20%20%20*%20notified%20out%20by%20providing%20optional%20callbacks%20in%20the%20%60options%60%20dictionary.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Valid%20configuration%20in%20%60options%60%20are%20as%20follows%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20-%20%60forwardHostProp(property%2C%20value)%60%3A%20Called%20when%20a%20property%20referenced%0A%20%20%20%20%20%20%20*%20%20%20in%20the%20template%20changed%20on%20the%20template's%20host.%20As%20this%20library%20does%0A%20%20%20%20%20%20%20*%20%20%20not%20retain%20references%20to%20templates%20instanced%20by%20the%20user%2C%20it%20is%20the%0A%20%20%20%20%20%20%20*%20%20%20templatize%20owner's%20responsibility%20to%20forward%20host%20property%20changes%20into%0A%20%20%20%20%20%20%20*%20%20%20user-stamped%20instances.%20%20The%20%60instance.forwardHostProp(property%2C%20value)%60%0A%20%20%20%20%20%20%20*%20%20%20%20method%20on%20the%20generated%20class%20should%20be%20called%20to%20forward%20host%0A%20%20%20%20%20%20%20*%20%20%20properties%20into%20the%20template%20to%20prevent%20unnecessary%20property-changed%0A%20%20%20%20%20%20%20*%20%20%20notifications.%20Any%20properties%20referenced%20in%20the%20template%20that%20are%20not%0A%20%20%20%20%20%20%20*%20%20%20defined%20in%20%60instanceProps%60%20will%20be%20notified%20up%20to%20the%20template's%20host%0A%20%20%20%20%20%20%20*%20%20%20automatically.%0A%20%20%20%20%20%20%20*%20-%20%60instanceProps%60%3A%20Dictionary%20of%20property%20names%20that%20will%20be%20added%0A%20%20%20%20%20%20%20*%20%20%20to%20the%20instance%20by%20the%20templatize%20owner.%20%20These%20properties%20shadow%20any%0A%20%20%20%20%20%20%20*%20%20%20host%20properties%2C%20and%20changes%20within%20the%20template%20to%20these%20properties%0A%20%20%20%20%20%20%20*%20%20%20will%20result%20in%20%60notifyInstanceProp%60%20being%20called.%0A%20%20%20%20%20%20%20*%20-%20%60mutableData%60%3A%20When%20%60true%60%2C%20the%20generated%20class%20will%20skip%20strict%0A%20%20%20%20%20%20%20*%20%20%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%0A%20%20%20%20%20%20%20*%20%20%20%22dirty%22).%0A%20%20%20%20%20%20%20*%20-%20%60notifyInstanceProp(instance%2C%20property%2C%20value)%60%3A%20Called%20when%0A%20%20%20%20%20%20%20*%20%20%20an%20instance%20property%20changes.%20%20Users%20may%20choose%20to%20call%20%60notifyPath%60%0A%20%20%20%20%20%20%20*%20%20%20on%20e.g.%20the%20owner%20to%20notify%20the%20change.%0A%20%20%20%20%20%20%20*%20-%20%60parentModel%60%3A%20When%20%60true%60%2C%20events%20handled%20by%20declarative%20event%20listeners%0A%20%20%20%20%20%20%20*%20%20%20(%60on-event%3D%22handler%22%60)%20will%20be%20decorated%20with%20a%20%60model%60%20property%20pointing%0A%20%20%20%20%20%20%20*%20%20%20to%20the%20template%20instance%20that%20stamped%20it.%20%20It%20will%20also%20be%20returned%0A%20%20%20%20%20%20%20*%20%20%20from%20%60instance.parentModel%60%20in%20cases%20where%20template%20instance%20nesting%0A%20%20%20%20%20%20%20*%20%20%20causes%20an%20inner%20model%20to%20shadow%20an%20outer%20model.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20All%20callbacks%20are%20called%20bound%20to%20the%20%60owner%60.%20Any%20context%0A%20%20%20%20%20%20%20*%20needed%20for%20the%20callbacks%20(such%20as%20references%20to%20%60instances%60%20stamped)%0A%20%20%20%20%20%20%20*%20should%20be%20stored%20on%20the%20%60owner%60%20such%20that%20they%20can%20be%20retrieved%20via%0A%20%20%20%20%20%20%20*%20%60this%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20When%20%60options.forwardHostProp%60%20is%20declared%20as%20an%20option%2C%20any%20properties%0A%20%20%20%20%20%20%20*%20referenced%20in%20the%20template%20will%20be%20automatically%20forwarded%20from%20the%20host%20of%0A%20%20%20%20%20%20%20*%20the%20%60%3Ctemplate%3E%60%20to%20instances%2C%20with%20the%20exception%20of%20any%20properties%20listed%20in%0A%20%20%20%20%20%20%20*%20the%20%60options.instanceProps%60%20object.%20%20%60instanceProps%60%20are%20assumed%20to%20be%0A%20%20%20%20%20%20%20*%20managed%20by%20the%20owner%20of%20the%20instances%2C%20either%20passed%20into%20the%20constructor%0A%20%20%20%20%20%20%20*%20or%20set%20after%20the%20fact.%20%20Note%2C%20any%20properties%20passed%20into%20the%20constructor%20will%0A%20%20%20%20%20%20%20*%20always%20be%20set%20to%20the%20instance%20(regardless%20of%20whether%20they%20would%20normally%0A%20%20%20%20%20%20%20*%20be%20forwarded%20from%20the%20host).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20%60templatize()%60%20can%20be%20run%20only%20once%20for%20a%20given%20%60%3Ctemplate%3E%60.%0A%20%20%20%20%20%20%20*%20Further%20calls%20will%20result%20in%20an%20error.%20Also%2C%20there%20is%20a%20special%0A%20%20%20%20%20%20%20*%20behavior%20if%20the%20template%20was%20duplicated%20through%20a%20mechanism%20such%20as%0A%20%20%20%20%20%20%20*%20%60%3Cdom-repeat%3E%60%20or%20%60%3Ctest-fixture%3E%60.%20In%20this%20case%2C%20all%20calls%20to%0A%20%20%20%20%20%20%20*%20%60templatize()%60%20return%20the%20same%20class%20for%20all%20duplicates%20of%20a%20template.%0A%20%20%20%20%20%20%20*%20The%20class%20returned%20from%20%60templatize()%60%20is%20generated%20only%20once%20using%0A%20%20%20%20%20%20%20*%20the%20%60options%60%20from%20the%20first%20call.%20This%20means%20that%20any%20%60options%60%0A%20%20%20%20%20%20%20*%20provided%20to%20subsequent%20calls%20will%20be%20ignored.%20Therefore%2C%20it%20is%20very%0A%20%20%20%20%20%20%20*%20important%20not%20to%20close%20over%20any%20variables%20inside%20the%20callbacks.%20Also%2C%0A%20%20%20%20%20%20%20*%20arrow%20functions%20must%20be%20avoided%20because%20they%20bind%20the%20outer%20%60this%60.%0A%20%20%20%20%20%20%20*%20Inside%20the%20callbacks%2C%20any%20contextual%20information%20can%20be%20accessed%0A%20%20%20%20%20%20%20*%20through%20%60this%60%2C%20which%20points%20to%20the%20%60owner%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Templatize%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20templatize%0A%20%20%20%20%20%20%20*%20%40param%20%7BPolymer_PropertyEffects%3D%7D%20owner%20Owner%20of%20the%20template%20instances%3B%0A%20%20%20%20%20%20%20*%20%20%20any%20optional%20callbacks%20will%20be%20bound%20to%20this%20owner.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20options%20Options%20dictionary%20(see%20summary%20for%20details)%0A%20%20%20%20%20%20%20*%20%40return%20%7Bfunction(new%3ATemplateInstanceBase)%7D%20Generated%20class%20bound%20to%20the%20template%0A%20%20%20%20%20%20%20*%20%20%20provided%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2Ftemplatize%3Afunction%20templatize(template%2Cowner%2Coptions)%7B%2F%2F%20Under%20strictTemplatePolicy%2C%20the%20templatized%20element%20must%20be%20owned%0A%2F%2F%20by%20a%20(trusted)%20Polymer%20element%2C%20indicated%20by%20existence%20of%20_methodHost%3B%0A%2F%2F%20e.g.%20for%20dom-if%20%26%20dom-repeat%20in%20main%20document%2C%20_methodHost%20is%20null%0Aif(Polymer.strictTemplatePolicy%26%26!findMethodHost(template))%7Bthrow%20new%20Error('strictTemplatePolicy%3A%20template%20owner%20not%20trusted')%3B%7Doptions%3D%2F**%20%40type%20%7B!TemplatizeOptions%7D%20*%2Foptions%7C%7C%7B%7D%3Bif(template.__templatizeOwner)%7Bthrow%20new%20Error('A%20%3Ctemplate%3E%20can%20only%20be%20templatized%20once')%3B%7Dtemplate.__templatizeOwner%3Downer%3Bvar%20ctor%3Downer%3Fowner.constructor%3ATemplateInstanceBase%3Bvar%20templateInfo%3Dctor._parseTemplate(template)%3B%2F%2F%20Get%20memoized%20base%20class%20for%20the%20prototypical%20template%2C%20which%0A%2F%2F%20includes%20property%20effects%20for%20binding%20template%20%26%20forwarding%0Avar%20baseClass%3DtemplateInfo.templatizeInstanceClass%3Bif(!baseClass)%7BbaseClass%3DcreateTemplatizerClass(template%2CtemplateInfo%2Coptions)%3BtemplateInfo.templatizeInstanceClass%3DbaseClass%3B%7D%2F%2F%20Host%20property%20forwarding%20must%20be%20installed%20onto%20template%20instance%0AaddPropagateEffects(template%2CtemplateInfo%2Coptions)%3B%2F%2F%20Subclass%20base%20class%20and%20add%20reference%20for%20this%20specific%20template%0A%2F**%20%40private%20*%2Fvar%20klass%3Dfunction(_baseClass)%7B_inherits(TemplateInstance%2C_baseClass)%3Bfunction%20TemplateInstance()%7B_classCallCheck(this%2CTemplateInstance)%3Breturn%20_possibleConstructorReturn(this%2C(TemplateInstance.__proto__%7C%7CObject.getPrototypeOf(TemplateInstance)).apply(this%2Carguments))%3B%7Dreturn%20TemplateInstance%3B%7D(baseClass)%3Bklass.prototype._methodHost%3DfindMethodHost(template)%3Bklass.prototype.__dataHost%3Dtemplate%3Bklass.prototype.__templatizeOwner%3Downer%3Bklass.prototype.__hostProps%3DtemplateInfo.hostProps%3Bklass%3D%2F**%20%40type%20%7Bfunction(new%3ATemplateInstanceBase)%7D%20*%2Fklass%3B%2F%2Feslint-disable-line%20no-self-assign%0Areturn%20klass%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20template%20%22model%22%20associated%20with%20a%20given%20element%2C%20which%0A%20%20%20%20%20%20%20*%20serves%20as%20the%20binding%20scope%20for%20the%20template%20instance%20the%20element%20is%0A%20%20%20%20%20%20%20*%20contained%20in.%20A%20template%20model%20is%20an%20instance%20of%0A%20%20%20%20%20%20%20*%20%60TemplateInstanceBase%60%2C%20and%20should%20be%20used%20to%20manipulate%20data%0A%20%20%20%20%20%20%20*%20associated%20with%20this%20template%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20let%20model%20%3D%20modelForElement(el)%3B%0A%20%20%20%20%20%20%20*%20%20%20if%20(model.index%20%3C%2010)%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20model.set('item.checked'%2C%20true)%3B%0A%20%20%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Templatize%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20template%20The%20model%20will%20be%20returned%20for%0A%20%20%20%20%20%20%20*%20%20%20elements%20stamped%20from%20this%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%3D%7D%20node%20Node%20for%20which%20to%20return%20a%20template%20model.%0A%20%20%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Template%20instance%20representing%20the%0A%20%20%20%20%20%20%20*%20%20%20binding%20scope%20for%20the%20element%0A%20%20%20%20%20%20%20*%2FmodelForElement%3Afunction%20modelForElement(template%2Cnode)%7Bvar%20model%3Dvoid%200%3Bwhile(node)%7B%2F%2F%20An%20element%20with%20a%20__templatizeInstance%20marks%20the%20top%20boundary%0A%2F%2F%20of%20a%20scope%3B%20walk%20up%20until%20we%20find%20one%2C%20and%20then%20ensure%20that%0A%2F%2F%20its%20__dataHost%20matches%20%60this%60%2C%20meaning%20this%20dom-repeat%20stamped%20it%0Aif(model%3Dnode.__templatizeInstance)%7B%2F%2F%20Found%20an%20element%20stamped%20by%20another%20template%3B%20keep%20walking%20up%0A%2F%2F%20from%20its%20__dataHost%0Aif(model.__dataHost!%3Dtemplate)%7Bnode%3Dmodel.__dataHost%3B%7Delse%7Breturn%20model%3B%7D%7Delse%7B%2F%2F%20Still%20in%20a%20template%20scope%2C%20keep%20going%20up%20until%0A%2F%2F%20a%20__templatizeInstance%20is%20found%0Anode%3Dnode.parentNode%3B%7D%7Dreturn%20null%3B%7D%7D%3BPolymer.TemplateInstanceBase%3DTemplateInstanceBase%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Ftemplatize.html.js%0A",
            "resourceBytes": 24612,
            "encodedBytes": 0,
            "unusedBytes": 10875
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20TemplateInstanceBase%3DPolymer.TemplateInstanceBase%3B%2F%2F%20eslint-disable-line%0A%2F**%0A%20%20%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20%20%20*%20%20%20_templatizerTemplate%3A%20HTMLTemplateElement%2C%0A%20%20%20%20%20*%20%20%20_parentModel%3A%20boolean%2C%0A%20%20%20%20%20*%20%20%20_instanceProps%3A%20Object%2C%0A%20%20%20%20%20*%20%20%20_forwardHostPropV2%3A%20Function%2C%0A%20%20%20%20%20*%20%20%20_notifyInstancePropV2%3A%20Function%2C%0A%20%20%20%20%20*%20%20%20ctor%3A%20TemplateInstanceBase%0A%20%20%20%20%20*%20%7D%7D%0A%20%20%20%20%20*%2Fvar%20TemplatizerUser%3Dvoid%200%3B%2F%2F%20eslint-disable-line%0A%2F**%0A%20%20%20%20%20*%20The%20%60Polymer.Templatizer%60%20behavior%20adds%20methods%20to%20generate%20instances%20of%0A%20%20%20%20%20*%20templates%20that%20are%20each%20managed%20by%20an%20anonymous%20%60Polymer.PropertyEffects%60%0A%20%20%20%20%20*%20instance%20where%20data-bindings%20in%20the%20stamped%20template%20content%20are%20bound%20to%0A%20%20%20%20%20*%20accessors%20on%20itself.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20behavior%20is%20provided%20in%20Polymer%202.x%20as%20a%20hybrid-element%20convenience%0A%20%20%20%20%20*%20only.%20%20For%20non-hybrid%20usage%2C%20the%20%60Polymer.Templatize%60%20library%0A%20%20%20%20%20*%20should%20be%20used%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Get%20a%20template%20from%20somewhere%2C%20e.g.%20light%20DOM%0A%20%20%20%20%20*%20%20%20%20%20let%20template%20%3D%20this.querySelector('template')%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Prepare%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20this.templatize(template)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Instance%20the%20template%20with%20an%20initial%20data%20model%0A%20%20%20%20%20*%20%20%20%20%20let%20instance%20%3D%20this.stamp(%7BmyProp%3A%20'initial'%7D)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Insert%20the%20instance's%20DOM%20somewhere%2C%20e.g.%20light%20DOM%0A%20%20%20%20%20*%20%20%20%20%20Polymer.dom(this).appendChild(instance.root)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Changing%20a%20property%20on%20the%20instance%20will%20propagate%20to%20bindings%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20in%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20instance.myProp%20%3D%20'new%20value'%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Users%20of%20%60Templatizer%60%20may%20need%20to%20implement%20the%20following%20abstract%0A%20%20%20%20%20*%20API's%20to%20determine%20how%20properties%20and%20paths%20from%20the%20host%20should%20be%0A%20%20%20%20%20*%20forwarded%20into%20to%20instances%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_forwardHostPropV2%3A%20function(prop%2C%20value)%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Likewise%2C%20users%20may%20implement%20these%20additional%20abstract%20API's%20to%20determine%0A%20%20%20%20%20*%20how%20instance-specific%20properties%20that%20change%20on%20the%20instance%20should%20be%0A%20%20%20%20%20*%20forwarded%20out%20to%20the%20host%2C%20if%20necessary.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_notifyInstancePropV2%3A%20function(inst%2C%20prop%2C%20value)%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20In%20order%20to%20determine%20which%20properties%20are%20instance-specific%20and%20require%0A%20%20%20%20%20*%20custom%20notification%20via%20%60_notifyInstanceProp%60%2C%20define%20an%20%60_instanceProps%60%0A%20%20%20%20%20*%20object%20containing%20keys%20for%20each%20instance%20prop%2C%20for%20example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_instanceProps%3A%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20item%3A%20true%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20index%3A%20true%0A%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Any%20properties%20used%20in%20the%20template%20that%20are%20not%20defined%20in%20_instanceProp%0A%20%20%20%20%20*%20will%20be%20forwarded%20out%20to%20the%20Templatize%20%60owner%60%20automatically.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Users%20may%20also%20implement%20the%20following%20abstract%20function%20to%20show%20or%0A%20%20%20%20%20*%20hide%20any%20DOM%20generated%20using%20%60stamp%60%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_showHideChildren%3A%20function(shouldHide)%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%20that%20some%20callbacks%20are%20suffixed%20with%20%60V2%60%20in%20the%20Polymer%202.x%20behavior%0A%20%20%20%20%20*%20as%20the%20implementations%20will%20need%20to%20differ%20from%20the%20callbacks%20required%0A%20%20%20%20%20*%20by%20the%201.x%20Templatizer%20API%20due%20to%20changes%20in%20the%20%60TemplateInstance%60%20API%0A%20%20%20%20%20*%20between%20versions%201.x%20and%202.x.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2FPolymer.Templatizer%3D%7B%2F**%0A%20%20%20%20%20%20%20*%20Generates%20an%20anonymous%20%60TemplateInstance%60%20class%20(stored%20as%20%60this.ctor%60)%0A%20%20%20%20%20%20%20*%20for%20the%20provided%20template.%20%20This%20method%20should%20be%20called%20once%20per%0A%20%20%20%20%20%20%20*%20template%20to%20prepare%20an%20element%20for%20stamping%20the%20template%2C%20followed%0A%20%20%20%20%20%20%20*%20by%20%60stamp%60%20to%20create%20new%20instances%20of%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20prepare%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20mutableData%20When%20%60true%60%2C%20the%20generated%20class%20will%20skip%0A%20%20%20%20%20%20%20*%20%20%20strict%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%0A%20%20%20%20%20%20%20*%20%20%20be%20%22dirty%22).%20Defaults%20to%20false.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40this%20%7BTemplatizerUser%7D%0A%20%20%20%20%20%20%20*%2Ftemplatize%3Afunction%20templatize(template%2CmutableData)%7Bthis._templatizerTemplate%3Dtemplate%3Bthis.ctor%3DPolymer.Templatize.templatize(template%2Cthis%2C%7BmutableData%3ABoolean(mutableData)%2CparentModel%3Athis._parentModel%2CinstanceProps%3Athis._instanceProps%2CforwardHostProp%3Athis._forwardHostPropV2%2CnotifyInstanceProp%3Athis._notifyInstancePropV2%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Creates%20an%20instance%20of%20the%20template%20prepared%20by%20%60templatize%60.%20%20The%20object%0A%20%20%20%20%20%20%20*%20returned%20is%20an%20instance%20of%20the%20anonymous%20class%20generated%20by%20%60templatize%60%0A%20%20%20%20%20%20%20*%20whose%20%60root%60%20property%20is%20a%20document%20fragment%20containing%20newly%20cloned%0A%20%20%20%20%20%20%20*%20template%20content%2C%20and%20which%20has%20property%20accessors%20corresponding%20to%0A%20%20%20%20%20%20%20*%20properties%20referenced%20in%20template%20bindings.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20model%20Object%20containing%20initial%20property%20values%20to%0A%20%20%20%20%20%20%20*%20%20%20populate%20into%20the%20template%20bindings.%0A%20%20%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Returns%20the%20created%20instance%20of%0A%20%20%20%20%20%20%20*%20the%20template%20prepared%20by%20%60templatize%60.%0A%20%20%20%20%20%20%20*%20%40this%20%7BTemplatizerUser%7D%0A%20%20%20%20%20%20%20*%2Fstamp%3Afunction%20stamp(model)%7Breturn%20new%20this.ctor(model)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20template%20%22model%22%20(%60TemplateInstance%60)%20associated%20with%0A%20%20%20%20%20%20%20*%20a%20given%20element%2C%20which%20serves%20as%20the%20binding%20scope%20for%20the%20template%0A%20%20%20%20%20%20%20*%20instance%20the%20element%20is%20contained%20in.%20%20A%20template%20model%20should%20be%20used%0A%20%20%20%20%20%20%20*%20to%20manipulate%20data%20associated%20with%20this%20template%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLElement%7D%20el%20Element%20for%20which%20to%20return%20a%20template%20model.%0A%20%20%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Model%20representing%20the%20binding%20scope%20for%0A%20%20%20%20%20%20%20*%20%20%20the%20element.%0A%20%20%20%20%20%20%20*%20%40this%20%7BTemplatizerUser%7D%0A%20%20%20%20%20%20%20*%2FmodelForElement%3Afunction%20modelForElement(el)%7Breturn%20Polymer.Templatize.modelForElement(this._templatizerTemplate%2Cel)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Ftemplatizer-behavior.html.js%0A",
            "resourceBytes": 5584,
            "encodedBytes": 0,
            "unusedBytes": 471
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BHTMLElement%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_OptionalMutableData%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_GestureEventListeners%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20domBindBase%3DPolymer.GestureEventListeners(Polymer.OptionalMutableData(Polymer.PropertyEffects(HTMLElement)))%3B%2F**%0A%20%20%20%20%20*%20Custom%20element%20to%20allow%20using%20Polymer's%20template%20features%20(data%20binding%2C%0A%20%20%20%20%20*%20declarative%20event%20listeners%2C%20etc.)%20in%20the%20main%20document%20without%20defining%0A%20%20%20%20%20*%20a%20new%20custom%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%3Ctemplate%3E%60%20tags%20utilizing%20bindings%20may%20be%20wrapped%20with%20the%20%60%3Cdom-bind%3E%60%0A%20%20%20%20%20*%20element%2C%20which%20will%20immediately%20stamp%20the%20wrapped%20template%20into%20the%20main%0A%20%20%20%20%20*%20document%20and%20bind%20elements%20to%20the%20%60dom-bind%60%20element%20itself%20as%20the%0A%20%20%20%20%20*%20binding%20scope.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40customElement%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.PropertyEffects%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.OptionalMutableData%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.GestureEventListeners%0A%20%20%20%20%20*%20%40extends%20%7BdomBindBase%7D%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40summary%20Custom%20element%20to%20allow%20using%20Polymer's%20template%20features%20(data%0A%20%20%20%20%20*%20%20%20binding%2C%20declarative%20event%20listeners%2C%20etc.)%20in%20the%20main%20document.%0A%20%20%20%20%20*%2Fvar%20DomBind%3Dfunction(_domBindBase)%7B_inherits(DomBind%2C_domBindBase)%3B_createClass(DomBind%2Cnull%2C%5B%7Bkey%3A'observedAttributes'%2Cget%3Afunction%20get()%7Breturn%5B'mutable-data'%5D%3B%7D%7D%5D)%3Bfunction%20DomBind()%7B_classCallCheck(this%2CDomBind)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(DomBind.__proto__%7C%7CObject.getPrototypeOf(DomBind)).call(this))%3Bif(Polymer.strictTemplatePolicy)%7Bthrow%20new%20Error('strictTemplatePolicy%3A%20dom-bind%20not%20allowed')%3B%7D_this.root%3Dnull%3B_this.%24%3Dnull%3B_this.__children%3Dnull%3Breturn%20_this%3B%7D%2F**%20%40return%20%7Bvoid%7D%20*%2F_createClass(DomBind%2C%5B%7Bkey%3A'attributeChangedCallback'%2Cvalue%3Afunction%20attributeChangedCallback()%7B%2F%2F%20assumes%20only%20one%20observed%20attribute%0Athis.mutableData%3Dtrue%3B%7D%2F**%20%40return%20%7Bvoid%7D%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7Bthis.style.display%3D'none'%3Bthis.render()%3B%7D%2F**%20%40return%20%7Bvoid%7D%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7Bthis.__removeChildren()%3B%7D%7D%2C%7Bkey%3A'__insertChildren'%2Cvalue%3Afunction%20__insertChildren()%7Bthis.parentNode.insertBefore(this.root%2Cthis)%3B%7D%7D%2C%7Bkey%3A'__removeChildren'%2Cvalue%3Afunction%20__removeChildren()%7Bif(this.__children)%7Bfor(var%20i%3D0%3Bi%3Cthis.__children.length%3Bi%2B%2B)%7Bthis.root.appendChild(this.__children%5Bi%5D)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Forces%20the%20element%20to%20render%20its%20content.%20This%20is%20typically%20only%0A%20%20%20%20%20%20%20*%20necessary%20to%20call%20if%20HTMLImports%20with%20the%20async%20attribute%20are%20used.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'render'%2Cvalue%3Afunction%20render()%7Bvar%20_this2%3Dthis%3Bvar%20template%3Dvoid%200%3Bif(!this.__children)%7Btemplate%3D%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Ftemplate%7C%7Cthis.querySelector('template')%3Bif(!template)%7B%2F%2F%20Wait%20until%20childList%20changes%20and%20template%20should%20be%20there%20by%20then%0Avar%20observer%3Dnew%20MutationObserver(function()%7Btemplate%3D%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2F_this2.querySelector('template')%3Bif(template)%7Bobserver.disconnect()%3B_this2.render()%3B%7Delse%7Bthrow%20new%20Error('dom-bind%20requires%20a%20%3Ctemplate%3E%20child')%3B%7D%7D)%3Bobserver.observe(this%2C%7BchildList%3Atrue%7D)%3Breturn%3B%7Dthis.root%3Dthis._stampTemplate(template)%3Bthis.%24%3Dthis.root.%24%3Bthis.__children%3D%5B%5D%3Bfor(var%20n%3Dthis.root.firstChild%3Bn%3Bn%3Dn.nextSibling)%7Bthis.__children%5Bthis.__children.length%5D%3Dn%3B%7Dthis._enableProperties()%3B%7Dthis.__insertChildren()%3Bthis.dispatchEvent(new%20CustomEvent('dom-change'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3B%7D%7D%5D)%3Breturn%20DomBind%3B%7D(domBindBase)%3BcustomElements.define('dom-bind'%2CDomBind)%3B%2F**%20%40const%20*%2FPolymer.DomBind%3DDomBind%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-bind.html.js%0A",
            "resourceBytes": 5022,
            "encodedBytes": 0,
            "unusedBytes": 1943
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Class%20representing%20a%20static%20string%20value%20which%20can%20be%20used%20to%20filter%0A%20%20%20%20%20*%20strings%20by%20asseting%20that%20they%20have%20been%20created%20via%20this%20class.%20The%0A%20%20%20%20%20*%20%60value%60%20property%20returns%20the%20string%20passed%20to%20the%20constructor.%0A%20%20%20%20%20*%2Fvar%20LiteralString%3Dfunction()%7Bfunction%20LiteralString(string)%7B_classCallCheck(this%2CLiteralString)%3B%2F**%20%40type%20%7Bstring%7D%20*%2Fthis.value%3Dstring.toString()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20LiteralString%20string%20value%0A%20%20%20%20%20%20%20*%2F_createClass(LiteralString%2C%5B%7Bkey%3A'toString'%2Cvalue%3Afunction%20toString()%7Breturn%20this.value%3B%7D%7D%5D)%3Breturn%20LiteralString%3B%7D()%3B%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Object%20to%20stringify%20into%20HTML%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20HTML%20stringified%20form%20of%20%60obj%60%0A%20%20%20%20%20*%2Ffunction%20literalValue(value)%7Bif(value%20instanceof%20LiteralString)%7Breturn(%2F**%20%40type%20%7B!LiteralString%7D%20*%2Fvalue.value)%3B%7Delse%7Bthrow%20new%20Error('non-literal%20value%20passed%20to%20Polymer.htmlLiteral%3A%20'%2Bvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Object%20to%20stringify%20into%20HTML%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20HTML%20stringified%20form%20of%20%60obj%60%0A%20%20%20%20%20*%2Ffunction%20htmlValue(value)%7Bif(value%20instanceof%20HTMLTemplateElement)%7Breturn(%2F**%20%40type%20%7B!HTMLTemplateElement%20%7D%20*%2Fvalue.innerHTML)%3B%7Delse%20if(value%20instanceof%20LiteralString)%7Breturn%20literalValue(value)%3B%7Delse%7Bthrow%20new%20Error('non-template%20value%20passed%20to%20Polymer.html%3A%20'%2Bvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20A%20template%20literal%20tag%20that%20creates%20an%20HTML%20%3Ctemplate%3E%20element%20from%20the%0A%20%20%20%20%20*%20contents%20of%20the%20string.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20allows%20you%20to%20write%20a%20Polymer%20Template%20in%20JavaScript.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Templates%20can%20be%20composed%20by%20interpolating%20%60HTMLTemplateElement%60s%20in%0A%20%20%20%20%20*%20expressions%20in%20the%20JavaScript%20template%20literal.%20The%20nested%20template's%0A%20%20%20%20%20*%20%60innerHTML%60%20is%20included%20in%20the%20containing%20template.%20%20The%20only%20other%0A%20%20%20%20%20*%20values%20allowed%20in%20expressions%20are%20those%20returned%20from%20%60Polymer.htmlLiteral%60%0A%20%20%20%20%20*%20which%20ensures%20only%20literal%20values%20from%20JS%20source%20ever%20reach%20the%20HTML%2C%20to%0A%20%20%20%20%20*%20guard%20against%20XSS%20risks.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20All%20other%20values%20are%20disallowed%20in%20expressions%20to%20help%20prevent%20XSS%0A%20%20%20%20%20*%20attacks%3B%20however%2C%20%60Polymer.htmlLiteral%60%20can%20be%20used%20to%20compose%20static%0A%20%20%20%20%20*%20string%20values%20into%20templates.%20This%20is%20useful%20to%20compose%20strings%20into%0A%20%20%20%20%20*%20places%20that%20do%20not%20accept%20html%2C%20like%20the%20css%20text%20of%20a%20%60style%60%0A%20%20%20%20%20*%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20template()%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20return%20Polymer.html%60%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cstyle%3E%3Ahost%7B%20content%3A%22...%22%20%7D%3C%2Fstyle%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22shadowed%22%3E%24%7Bthis.partialTemplate%7D%3C%2Fdiv%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%24%7Bsuper.template%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20partialTemplate()%20%7B%20return%20Polymer.html%60%3Cspan%3EPartial!%3C%2Fspan%3E%60%3B%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40param%20%7B!ITemplateArray%7D%20strings%20Constant%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40param%20%7B...*%7D%20values%20Variable%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40return%20%7B!HTMLTemplateElement%7D%20Constructed%20HTMLTemplateElement%0A%20%20%20%20%20*%2FPolymer.html%3Dfunction%20html(strings)%7Bvar%20template%3D%2F**%20%40type%20%7B!HTMLTemplateElement%7D%20*%2Fdocument.createElement('template')%3Bfor(var%20_len%3Darguments.length%2Cvalues%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bvalues%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dtemplate.innerHTML%3Dvalues.reduce(function(acc%2Cv%2Cidx)%7Breturn%20acc%2BhtmlValue(v)%2Bstrings%5Bidx%2B1%5D%3B%7D%2Cstrings%5B0%5D)%3Breturn%20template%3B%7D%3B%2F**%0A%20%20%20%20%20*%20An%20html%20literal%20tag%20that%20can%20be%20used%20with%20%60Polymer.html%60%20to%20compose.%0A%20%20%20%20%20*%20a%20literal%20string.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20template()%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20return%20Polymer.html%60%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cstyle%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%3Ahost%20%7B%20display%3A%20block%3B%20%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%24%7BstyleTemplate%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3C%2Fstyle%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22shadowed%22%3E%24%7BstaticValue%7D%3C%2Fdiv%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%24%7Bsuper.template%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20styleTemplate()%20%7B%20return%20Polymer.htmlLiteral%60.shadowed%20%7B%20background%3A%20gray%3B%20%7D%60%3B%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40param%20%7B!ITemplateArray%7D%20strings%20Constant%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40param%20%7B...*%7D%20values%20Variable%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40return%20%7B!LiteralString%7D%20Constructed%20literal%20string%0A%20%20%20%20%20*%2FPolymer.htmlLiteral%3Dfunction(strings)%7Bfor(var%20_len2%3Darguments.length%2Cvalues%3DArray(_len2%3E1%3F_len2-1%3A0)%2C_key2%3D1%3B_key2%3C_len2%3B_key2%2B%2B)%7Bvalues%5B_key2-1%5D%3Darguments%5B_key2%5D%3B%7Dreturn%20new%20LiteralString(values.reduce(function(acc%2Cv%2Cidx)%7Breturn%20acc%2BliteralValue(v)%2Bstrings%5Bidx%2B1%5D%3B%7D%2Cstrings%5B0%5D))%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fhtml-tag.html.js%0A",
            "resourceBytes": 5107,
            "encodedBytes": 0,
            "unusedBytes": 1377
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Base%20class%20that%20provides%20the%20core%20API%20for%20Polymer's%20meta-programming%0A%20%20%20*%20features%20including%20template%20stamping%2C%20data-binding%2C%20attribute%20deserialization%2C%0A%20%20%20*%20and%20property%20change%20observation.%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40constructor%0A%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20*%20%40extends%20%7BHTMLElement%7D%0A%20%20%20*%20%40appliesMixin%20Polymer.ElementMixin%0A%20%20%20*%20%40summary%20Custom%20element%20base%20class%20that%20provides%20the%20core%20API%20for%20Polymer's%0A%20%20%20*%20%20%20key%20meta-programming%20features%20including%20template%20stamping%2C%20data-binding%2C%0A%20%20%20*%20%20%20attribute%20deserialization%2C%20and%20property%20change%20observation%0A%20%20%20*%2FPolymer.Element%3DPolymer.ElementMixin(HTMLElement)%3B%2F%2F%20NOTE%3A%20this%20is%20here%20for%20modulizer%20to%20export%20%60html%60%20for%20the%20module%20version%20of%20this%20file%0APolymer.html%3DPolymer.html%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Fpolymer-element.html.js%0A",
            "resourceBytes": 939,
            "encodedBytes": 0,
            "unusedBytes": 0
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20TemplateInstanceBase%3DPolymer.TemplateInstanceBase%3B%2F%2F%20eslint-disable-line%0A%2F**%0A%20%20%20*%20%40constructor%0A%20%20%20*%20%40implements%20%7BPolymer_OptionalMutableData%7D%0A%20%20%20*%20%40extends%20%7BPolymer.Element%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Fvar%20domRepeatBase%3DPolymer.OptionalMutableData(Polymer.Element)%3B%2F**%0A%20%20%20*%20The%20%60%3Cdom-repeat%3E%60%20element%20will%20automatically%20stamp%20and%20binds%20one%20instance%0A%20%20%20*%20of%20template%20content%20to%20each%20object%20in%20a%20user-provided%20array.%0A%20%20%20*%20%60dom-repeat%60%20accepts%20an%20%60items%60%20property%2C%20and%20one%20instance%20of%20the%20template%0A%20%20%20*%20is%20stamped%20for%20each%20item%20into%20the%20DOM%20at%20the%20location%20of%20the%20%60dom-repeat%60%0A%20%20%20*%20element.%20%20The%20%60item%60%20property%20will%20be%20set%20on%20each%20instance's%20binding%0A%20%20%20*%20scope%2C%20thus%20templates%20should%20bind%20to%20sub-properties%20of%20%60item%60.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3Cdom-module%20id%3D%22employee-list%22%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3Ctemplate%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdiv%3E%20Employee%20list%3A%20%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%3Cdom-repeat%20items%3D%22%7B%7Bemployees%7D%7D%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Ctemplate%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3EFirst%20name%3A%20%3Cspan%3E%7B%7Bitem.first%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3ELast%20name%3A%20%3Cspan%3E%7B%7Bitem.last%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-repeat%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%0A%20%20%20*%20%3C%2Fdom-module%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20With%20the%20following%20custom%20element%20definition%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60js%0A%20%20%20*%20class%20EmployeeList%20extends%20Polymer.Element%20%7B%0A%20%20%20*%20%20%20static%20get%20is()%20%7B%20return%20'employee-list'%3B%20%7D%0A%20%20%20*%20%20%20static%20get%20properties()%20%7B%0A%20%20%20*%20%20%20%20%20return%20%7B%0A%20%20%20*%20%20%20%20%20%20%20employees%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20value()%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20return%20%5B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Bob'%2C%20last%3A%20'Smith'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Sally'%2C%20last%3A%20'Johnson'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20...%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%20%7D%3B%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20Notifications%20for%20changes%20to%20items%20sub-properties%20will%20be%20forwarded%20to%20template%0A%20%20%20*%20instances%2C%20which%20will%20update%20via%20the%20normal%20structured%20data%20notification%20system.%0A%20%20%20*%0A%20%20%20*%20Mutations%20to%20the%20%60items%60%20array%20itself%20should%20be%20made%20using%20the%20Array%0A%20%20%20*%20mutation%20API's%20on%20%60Polymer.Base%60%20(%60push%60%2C%20%60pop%60%2C%20%60splice%60%2C%20%60shift%60%2C%0A%20%20%20*%20%60unshift%60)%2C%20and%20template%20instances%20will%20be%20kept%20in%20sync%20with%20the%20data%20in%20the%0A%20%20%20*%20array.%0A%20%20%20*%0A%20%20%20*%20Events%20caught%20by%20event%20handlers%20within%20the%20%60dom-repeat%60%20template%20will%20be%0A%20%20%20*%20decorated%20with%20a%20%60model%60%20property%2C%20which%20represents%20the%20binding%20scope%20for%0A%20%20%20*%20each%20template%20instance.%20%20The%20model%20is%20an%20instance%20of%20Polymer.Base%2C%20and%20should%0A%20%20%20*%20be%20used%20to%20manipulate%20data%20on%20the%20instance%2C%20for%20example%0A%20%20%20*%20%60event.model.set('item.checked'%2C%20true)%3B%60.%0A%20%20%20*%0A%20%20%20*%20Alternatively%2C%20the%20model%20for%20a%20template%20instance%20for%20an%20element%20stamped%20by%0A%20%20%20*%20a%20%60dom-repeat%60%20can%20be%20obtained%20using%20the%20%60modelForElement%60%20API%20on%20the%0A%20%20%20*%20%60dom-repeat%60%20that%20stamped%20it%2C%20for%20example%0A%20%20%20*%20%60this.%24.domRepeat.modelForElement(event.target).set('item.checked'%2C%20true)%3B%60.%0A%20%20%20*%20This%20may%20be%20useful%20for%20manipulating%20instance%20data%20of%20event%20targets%20obtained%0A%20%20%20*%20by%20event%20handlers%20on%20parents%20of%20the%20%60dom-repeat%60%20(event%20delegation).%0A%20%20%20*%0A%20%20%20*%20A%20view-specific%20filter%2Fsort%20may%20be%20applied%20to%20each%20%60dom-repeat%60%20by%20supplying%20a%0A%20%20%20*%20%60filter%60%20and%2For%20%60sort%60%20property.%20%20This%20may%20be%20a%20string%20that%20names%20a%20function%20on%0A%20%20%20*%20the%20host%2C%20or%20a%20function%20may%20be%20assigned%20to%20the%20property%20directly.%20%20The%20functions%0A%20%20%20*%20should%20implemented%20following%20the%20standard%20%60Array%60%20filter%2Fsort%20API.%0A%20%20%20*%0A%20%20%20*%20In%20order%20to%20re-run%20the%20filter%20or%20sort%20functions%20based%20on%20changes%20to%20sub-fields%0A%20%20%20*%20of%20%60items%60%2C%20the%20%60observe%60%20property%20may%20be%20set%20as%20a%20space-separated%20list%20of%0A%20%20%20*%20%60item%60%20sub-fields%20that%20should%20cause%20a%20re-filter%2Fsort%20when%20modified.%20%20If%0A%20%20%20*%20the%20filter%20or%20sort%20function%20depends%20on%20properties%20not%20contained%20in%20%60items%60%2C%0A%20%20%20*%20the%20user%20should%20observe%20changes%20to%20those%20properties%20and%20call%20%60render%60%20to%20update%0A%20%20%20*%20the%20view%20based%20on%20the%20dependency%20change.%0A%20%20%20*%0A%20%20%20*%20For%20example%2C%20for%20an%20%60dom-repeat%60%20with%20a%20filter%20of%20the%20following%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60js%0A%20%20%20*%20isEngineer(item)%20%7B%0A%20%20%20*%20%20%20return%20item.type%20%3D%3D%20'engineer'%20%7C%7C%20item.manager.type%20%3D%3D%20'engineer'%3B%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20Then%20the%20%60observe%60%20property%20should%20be%20configured%20as%20follows%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3Cdom-repeat%20items%3D%22%7B%7Bemployees%7D%7D%22%20filter%3D%22isEngineer%22%20observe%3D%22type%20manager.type%22%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40extends%20%7BdomRepeatBase%7D%0A%20%20%20*%20%40appliesMixin%20Polymer.OptionalMutableData%0A%20%20%20*%20%40summary%20Custom%20element%20for%20stamping%20instance%20of%20a%20template%20bound%20to%0A%20%20%20*%20%20%20items%20in%20an%20array.%0A%20%20%20*%2Fvar%20DomRepeat%3Dfunction(_domRepeatBase)%7B_inherits(DomRepeat%2C_domRepeatBase)%3B_createClass(DomRepeat%2Cnull%2C%5B%7Bkey%3A'is'%2C%2F%2F%20Not%20needed%20to%20find%20template%3B%20can%20be%20removed%20once%20the%20analyzer%0A%2F%2F%20can%20find%20the%20tag%20name%20from%20customElements.define%20call%0Aget%3Afunction%20get()%7Breturn'dom-repeat'%3B%7D%7D%2C%7Bkey%3A'template'%2Cget%3Afunction%20get()%7Breturn%20null%3B%7D%7D%2C%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7B%2F**%0A%20%20%20%20%20%20%20*%20Fired%20whenever%20DOM%20is%20added%20or%20removed%20by%20this%20template%20(by%0A%20%20%20%20%20%20%20*%20default%2C%20rendering%20occurs%20lazily).%20%20To%20force%20immediate%20rendering%2C%20call%0A%20%20%20%20%20%20%20*%20%60render%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20dom-change%0A%20%20%20%20%20%20%20*%2Freturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20An%20array%20containing%20items%20determining%20how%20many%20instances%20of%20the%20template%0A%20%20%20%20%20%20%20%20%20*%20to%20stamp%20and%20that%20that%20each%20template%20instance%20should%20bind%20to.%0A%20%20%20%20%20%20%20%20%20*%2Fitems%3A%7Btype%3AArray%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20name%20of%20the%20variable%20to%20add%20to%20the%20binding%20scope%20for%20the%20array%0A%20%20%20%20%20%20%20%20%20*%20element%20associated%20with%20a%20given%20template%20instance.%0A%20%20%20%20%20%20%20%20%20*%2Fas%3A%7Btype%3AString%2Cvalue%3A'item'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20name%20of%20the%20variable%20to%20add%20to%20the%20binding%20scope%20with%20the%20index%0A%20%20%20%20%20%20%20%20%20*%20of%20the%20instance%20in%20the%20sorted%20and%20filtered%20list%20of%20rendered%20items.%0A%20%20%20%20%20%20%20%20%20*%20Note%2C%20for%20the%20index%20in%20the%20%60this.items%60%20array%2C%20use%20the%20value%20of%20the%0A%20%20%20%20%20%20%20%20%20*%20%60itemsIndexAs%60%20property.%0A%20%20%20%20%20%20%20%20%20*%2FindexAs%3A%7Btype%3AString%2Cvalue%3A'index'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20name%20of%20the%20variable%20to%20add%20to%20the%20binding%20scope%20with%20the%20index%0A%20%20%20%20%20%20%20%20%20*%20of%20the%20instance%20in%20the%20%60this.items%60%20array.%20Note%2C%20for%20the%20index%20of%0A%20%20%20%20%20%20%20%20%20*%20this%20instance%20in%20the%20sorted%20and%20filtered%20list%20of%20rendered%20items%2C%0A%20%20%20%20%20%20%20%20%20*%20use%20the%20value%20of%20the%20%60indexAs%60%20property.%0A%20%20%20%20%20%20%20%20%20*%2FitemsIndexAs%3A%7Btype%3AString%2Cvalue%3A'itemsIndex'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20A%20function%20that%20should%20determine%20the%20sort%20order%20of%20the%20items.%20%20This%0A%20%20%20%20%20%20%20%20%20*%20property%20should%20either%20be%20provided%20as%20a%20string%2C%20indicating%20a%20method%0A%20%20%20%20%20%20%20%20%20*%20name%20on%20the%20element's%20host%2C%20or%20else%20be%20an%20actual%20function.%20%20The%0A%20%20%20%20%20%20%20%20%20*%20function%20should%20match%20the%20sort%20function%20passed%20to%20%60Array.sort%60.%0A%20%20%20%20%20%20%20%20%20*%20Using%20a%20sort%20function%20has%20no%20effect%20on%20the%20underlying%20%60items%60%20array.%0A%20%20%20%20%20%20%20%20%20*%2Fsort%3A%7Btype%3AFunction%2Cobserver%3A'__sortChanged'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20A%20function%20that%20can%20be%20used%20to%20filter%20items%20out%20of%20the%20view.%20%20This%0A%20%20%20%20%20%20%20%20%20*%20property%20should%20either%20be%20provided%20as%20a%20string%2C%20indicating%20a%20method%0A%20%20%20%20%20%20%20%20%20*%20name%20on%20the%20element's%20host%2C%20or%20else%20be%20an%20actual%20function.%20%20The%0A%20%20%20%20%20%20%20%20%20*%20function%20should%20match%20the%20sort%20function%20passed%20to%20%60Array.filter%60.%0A%20%20%20%20%20%20%20%20%20*%20Using%20a%20filter%20function%20has%20no%20effect%20on%20the%20underlying%20%60items%60%20array.%0A%20%20%20%20%20%20%20%20%20*%2Ffilter%3A%7Btype%3AFunction%2Cobserver%3A'__filterChanged'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20using%20a%20%60filter%60%20or%20%60sort%60%20function%2C%20the%20%60observe%60%20property%0A%20%20%20%20%20%20%20%20%20*%20should%20be%20set%20to%20a%20space-separated%20list%20of%20the%20names%20of%20item%0A%20%20%20%20%20%20%20%20%20*%20sub-fields%20that%20should%20trigger%20a%20re-sort%20or%20re-filter%20when%20changed.%0A%20%20%20%20%20%20%20%20%20*%20These%20should%20generally%20be%20fields%20of%20%60item%60%20that%20the%20sort%20or%20filter%0A%20%20%20%20%20%20%20%20%20*%20function%20depends%20on.%0A%20%20%20%20%20%20%20%20%20*%2Fobserve%3A%7Btype%3AString%2Cobserver%3A'__observeChanged'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20using%20a%20%60filter%60%20or%20%60sort%60%20function%2C%20the%20%60delay%60%20property%0A%20%20%20%20%20%20%20%20%20*%20determines%20a%20debounce%20time%20in%20ms%20after%20a%20change%20to%20observed%20item%0A%20%20%20%20%20%20%20%20%20*%20properties%20that%20must%20pass%20before%20the%20filter%20or%20sort%20is%20re-run.%0A%20%20%20%20%20%20%20%20%20*%20This%20is%20useful%20in%20rate-limiting%20shuffling%20of%20the%20view%20when%0A%20%20%20%20%20%20%20%20%20*%20item%20changes%20may%20be%20frequent.%0A%20%20%20%20%20%20%20%20%20*%2Fdelay%3ANumber%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Count%20of%20currently%20rendered%20items%20after%20%60filter%60%20(if%20any)%20has%20been%20applied.%0A%20%20%20%20%20%20%20%20%20*%20If%20%22chunking%20mode%22%20is%20enabled%2C%20%60renderedItemCount%60%20is%20updated%20each%20time%20a%0A%20%20%20%20%20%20%20%20%20*%20set%20of%20template%20instances%20is%20rendered.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FrenderedItemCount%3A%7Btype%3ANumber%2Cnotify%3Atrue%2CreadOnly%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20an%20initial%20count%20of%20template%20instances%20to%20render%20after%20setting%0A%20%20%20%20%20%20%20%20%20*%20the%20%60items%60%20array%2C%20before%20the%20next%20paint%2C%20and%20puts%20the%20%60dom-repeat%60%0A%20%20%20%20%20%20%20%20%20*%20into%20%22chunking%20mode%22.%20%20The%20remaining%20items%20will%20be%20created%20and%20rendered%0A%20%20%20%20%20%20%20%20%20*%20incrementally%20at%20each%20animation%20frame%20therof%20until%20all%20instances%20have%0A%20%20%20%20%20%20%20%20%20*%20been%20rendered.%0A%20%20%20%20%20%20%20%20%20*%2FinitialCount%3A%7Btype%3ANumber%2Cobserver%3A'__initializeChunking'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20%60initialCount%60%20is%20used%2C%20this%20property%20defines%20a%20frame%20rate%20(in%0A%20%20%20%20%20%20%20%20%20*%20fps)%20to%20target%20by%20throttling%20the%20number%20of%20instances%20rendered%20each%0A%20%20%20%20%20%20%20%20%20*%20frame%20to%20not%20exceed%20the%20budget%20for%20the%20target%20frame%20rate.%20%20The%0A%20%20%20%20%20%20%20%20%20*%20framerate%20is%20effectively%20the%20number%20of%20%60requestAnimationFrame%60s%20that%0A%20%20%20%20%20%20%20%20%20*%20it%20tries%20to%20allow%20to%20actually%20fire%20in%20a%20given%20second.%20It%20does%20this%0A%20%20%20%20%20%20%20%20%20*%20by%20measuring%20the%20time%20between%20%60rAF%60s%20and%20continuously%20adjusting%20the%0A%20%20%20%20%20%20%20%20%20*%20number%20of%20items%20created%20each%20%60rAF%60%20to%20maintain%20the%20target%20framerate.%0A%20%20%20%20%20%20%20%20%20*%20Setting%20this%20to%20a%20higher%20number%20allows%20lower%20latency%20and%20higher%0A%20%20%20%20%20%20%20%20%20*%20throughput%20for%20event%20handlers%20and%20other%20tasks%2C%20but%20results%20in%20a%0A%20%20%20%20%20%20%20%20%20*%20longer%20time%20for%20the%20remaining%20items%20to%20complete%20rendering.%0A%20%20%20%20%20%20%20%20%20*%2FtargetFramerate%3A%7Btype%3ANumber%2Cvalue%3A20%7D%2C_targetFrameTime%3A%7Btype%3ANumber%2Ccomputed%3A'__computeFrameTime(targetFramerate)'%7D%7D%3B%7D%7D%2C%7Bkey%3A'observers'%2Cget%3Afunction%20get()%7Breturn%5B'__itemsChanged(items.*)'%5D%3B%7D%7D%5D)%3Bfunction%20DomRepeat()%7B_classCallCheck(this%2CDomRepeat)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(DomRepeat.__proto__%7C%7CObject.getPrototypeOf(DomRepeat)).call(this))%3B_this.__instances%3D%5B%5D%3B_this.__limit%3DInfinity%3B_this.__pool%3D%5B%5D%3B_this.__renderDebouncer%3Dnull%3B_this.__itemsIdxToInstIdx%3D%7B%7D%3B_this.__chunkCount%3Dnull%3B_this.__lastChunkTime%3Dnull%3B_this.__sortFn%3Dnull%3B_this.__filterFn%3Dnull%3B_this.__observePaths%3Dnull%3B_this.__ctor%3Dnull%3B_this.__isDetached%3Dtrue%3B_this.template%3Dnull%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_createClass(DomRepeat%2C%5B%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7B_get(DomRepeat.prototype.__proto__%7C%7CObject.getPrototypeOf(DomRepeat.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3Bthis.__isDetached%3Dtrue%3Bfor(var%20i%3D0%3Bi%3Cthis.__instances.length%3Bi%2B%2B)%7Bthis.__detachInstance(i)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7B_get(DomRepeat.prototype.__proto__%7C%7CObject.getPrototypeOf(DomRepeat.prototype)%2C'connectedCallback'%2Cthis).call(this)%3Bthis.style.display%3D'none'%3B%2F%2F%20only%20perform%20attachment%20if%20the%20element%20was%20previously%20detached.%0Aif(this.__isDetached)%7Bthis.__isDetached%3Dfalse%3Bvar%20parent%3Dthis.parentNode%3Bfor(var%20i%3D0%3Bi%3Cthis.__instances.length%3Bi%2B%2B)%7Bthis.__attachInstance(i%2Cparent)%3B%7D%7D%7D%7D%2C%7Bkey%3A'__ensureTemplatized'%2Cvalue%3Afunction%20__ensureTemplatized()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Templatizing%20(generating%20the%20instance%20constructor)%20needs%20to%20wait%0A%2F%2F%20until%20ready%2C%20since%20won't%20have%20its%20template%20content%20handed%20back%20to%0A%2F%2F%20it%20until%20then%0Aif(!this.__ctor)%7Bvar%20template%3Dthis.template%3D%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Fthis.querySelector('template')%3Bif(!template)%7B%2F%2F%20%2F%2F%20Wait%20until%20childList%20changes%20and%20template%20should%20be%20there%20by%20then%0Avar%20observer%3Dnew%20MutationObserver(function()%7Bif(_this2.querySelector('template'))%7Bobserver.disconnect()%3B_this2.__render()%3B%7Delse%7Bthrow%20new%20Error('dom-repeat%20requires%20a%20%3Ctemplate%3E%20child')%3B%7D%7D)%3Bobserver.observe(this%2C%7BchildList%3Atrue%7D)%3Breturn%20false%3B%7D%2F%2F%20Template%20instance%20props%20that%20should%20be%20excluded%20from%20forwarding%0Avar%20instanceProps%3D%7B%7D%3BinstanceProps%5Bthis.as%5D%3Dtrue%3BinstanceProps%5Bthis.indexAs%5D%3Dtrue%3BinstanceProps%5Bthis.itemsIndexAs%5D%3Dtrue%3Bthis.__ctor%3DPolymer.Templatize.templatize(template%2Cthis%2C%7BmutableData%3Athis.mutableData%2CparentModel%3Atrue%2CinstanceProps%3AinstanceProps%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20to%20set%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20property%20to%0A%20%20%20%20%20%20%20%20%20%20%20*%2FforwardHostProp%3Afunction%20forwardHostProp(prop%2Cvalue)%7Bvar%20i%24%3Dthis.__instances%3Bfor(var%20i%3D0%2Cinst%3Bi%3Ci%24.length%26%26(inst%3Di%24%5Bi%5D)%3Bi%2B%2B)%7Binst.forwardHostProp(prop%2Cvalue)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20inst%20Instance%20to%20notify%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20to%20notify%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20notify%0A%20%20%20%20%20%20%20%20%20%20%20*%2FnotifyInstanceProp%3Afunction%20notifyInstanceProp(inst%2Cprop%2Cvalue)%7Bif(Polymer.Path.matches(this.as%2Cprop))%7Bvar%20idx%3Dinst%5Bthis.itemsIndexAs%5D%3Bif(prop%3D%3Dthis.as)%7Bthis.items%5Bidx%5D%3Dvalue%3B%7Dvar%20path%3DPolymer.Path.translate(this.as%2C'items.'%2Bidx%2Cprop)%3Bthis.notifyPath(path%2Cvalue)%3B%7D%7D%7D)%3B%7Dreturn%20true%3B%7D%7D%2C%7Bkey%3A'__getMethodHost'%2Cvalue%3Afunction%20__getMethodHost()%7B%2F%2F%20Technically%20this%20should%20be%20the%20owner%20of%20the%20outermost%20template.%0A%2F%2F%20In%20shadow%20dom%2C%20this%20is%20always%20getRootNode().host%2C%20but%20we%20can%0A%2F%2F%20approximate%20this%20via%20cooperation%20with%20our%20dataHost%20always%20setting%0A%2F%2F%20%60_methodHost%60%20as%20long%20as%20there%20were%20bindings%20(or%20id's)%20on%20this%0A%2F%2F%20instance%20causing%20it%20to%20get%20a%20dataHost.%0Areturn%20this.__dataHost._methodHost%7C%7Cthis.__dataHost%3B%7D%7D%2C%7Bkey%3A'__functionFromPropertyValue'%2Cvalue%3Afunction%20__functionFromPropertyValue(functionOrMethodName)%7Bif(typeof%20functionOrMethodName%3D%3D%3D'string')%7Bvar%20methodName%3DfunctionOrMethodName%3Bvar%20obj%3Dthis.__getMethodHost()%3Breturn%20function()%7Breturn%20obj%5BmethodName%5D.apply(obj%2Carguments)%3B%7D%3B%7Dreturn%20functionOrMethodName%3B%7D%7D%2C%7Bkey%3A'__sortChanged'%2Cvalue%3Afunction%20__sortChanged(sort)%7Bthis.__sortFn%3Dthis.__functionFromPropertyValue(sort)%3Bif(this.items)%7Bthis.__debounceRender(this.__render)%3B%7D%7D%7D%2C%7Bkey%3A'__filterChanged'%2Cvalue%3Afunction%20__filterChanged(filter)%7Bthis.__filterFn%3Dthis.__functionFromPropertyValue(filter)%3Bif(this.items)%7Bthis.__debounceRender(this.__render)%3B%7D%7D%7D%2C%7Bkey%3A'__computeFrameTime'%2Cvalue%3Afunction%20__computeFrameTime(rate)%7Breturn%20Math.ceil(1000%2Frate)%3B%7D%7D%2C%7Bkey%3A'__initializeChunking'%2Cvalue%3Afunction%20__initializeChunking()%7Bif(this.initialCount)%7Bthis.__limit%3Dthis.initialCount%3Bthis.__chunkCount%3Dthis.initialCount%3Bthis.__lastChunkTime%3Dperformance.now()%3B%7D%7D%7D%2C%7Bkey%3A'__tryRenderChunk'%2Cvalue%3Afunction%20__tryRenderChunk()%7B%2F%2F%20Debounced%20so%20that%20multiple%20calls%20through%20%60_render%60%20between%20animation%0A%2F%2F%20frames%20only%20queue%20one%20new%20rAF%20(e.g.%20array%20mutation%20%26%20chunked%20render)%0Aif(this.items%26%26this.__limit%3Cthis.items.length)%7Bthis.__debounceRender(this.__requestRenderChunk)%3B%7D%7D%7D%2C%7Bkey%3A'__requestRenderChunk'%2Cvalue%3Afunction%20__requestRenderChunk()%7Bvar%20_this3%3Dthis%3BrequestAnimationFrame(function()%7Breturn%20_this3.__renderChunk()%3B%7D)%3B%7D%7D%2C%7Bkey%3A'__renderChunk'%2Cvalue%3Afunction%20__renderChunk()%7B%2F%2F%20Simple%20auto%20chunkSize%20throttling%20algorithm%20based%20on%20feedback%20loop%3A%0A%2F%2F%20measure%20actual%20time%20between%20frames%20and%20scale%20chunk%20count%20by%20ratio%0A%2F%2F%20of%20target%2Factual%20frame%20time%0Avar%20currChunkTime%3Dperformance.now()%3Bvar%20ratio%3Dthis._targetFrameTime%2F(currChunkTime-this.__lastChunkTime)%3Bthis.__chunkCount%3DMath.round(this.__chunkCount*ratio)%7C%7C1%3Bthis.__limit%2B%3Dthis.__chunkCount%3Bthis.__lastChunkTime%3DcurrChunkTime%3Bthis.__debounceRender(this.__render)%3B%7D%7D%2C%7Bkey%3A'__observeChanged'%2Cvalue%3Afunction%20__observeChanged()%7Bthis.__observePaths%3Dthis.observe%26%26this.observe.replace('.*'%2C'.').split('%20')%3B%7D%7D%2C%7Bkey%3A'__itemsChanged'%2Cvalue%3Afunction%20__itemsChanged(change)%7Bif(this.items%26%26!Array.isArray(this.items))%7Bconsole.warn('dom-repeat%20expected%20array%20for%20%60items%60%2C%20found'%2Cthis.items)%3B%7D%2F%2F%20If%20path%20was%20to%20an%20item%20(e.g.%20'items.3'%20or%20'items.3.foo')%2C%20forward%20the%0A%2F%2F%20path%20to%20that%20instance%20synchronously%20(returns%20false%20for%20non-item%20paths)%0Aif(!this.__handleItemPath(change.path%2Cchange.value))%7B%2F%2F%20Otherwise%2C%20the%20array%20was%20reset%20('items')%20or%20spliced%20('items.splices')%2C%0A%2F%2F%20so%20queue%20a%20full%20refresh%0Athis.__initializeChunking()%3Bthis.__debounceRender(this.__render)%3B%7D%7D%7D%2C%7Bkey%3A'__handleObservedPaths'%2Cvalue%3Afunction%20__handleObservedPaths(path)%7B%2F%2F%20Handle%20cases%20where%20path%20changes%20should%20cause%20a%20re-sort%2Ffilter%0Aif(this.__sortFn%7C%7Cthis.__filterFn)%7Bif(!path)%7B%2F%2F%20Always%20re-render%20if%20the%20item%20itself%20changed%0Athis.__debounceRender(this.__render%2Cthis.delay)%3B%7Delse%20if(this.__observePaths)%7B%2F%2F%20Otherwise%2C%20re-render%20if%20the%20path%20changed%20matches%20an%20observed%20path%0Avar%20paths%3Dthis.__observePaths%3Bfor(var%20i%3D0%3Bi%3Cpaths.length%3Bi%2B%2B)%7Bif(path.indexOf(paths%5Bi%5D)%3D%3D%3D0)%7Bthis.__debounceRender(this.__render%2Cthis.delay)%3B%7D%7D%7D%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7Bfunction(this%3ADomRepeat)%7D%20fn%20Function%20to%20debounce.%0A%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20delay%20Delay%20in%20ms%20to%20debounce%20by.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'__debounceRender'%2Cvalue%3Afunction%20__debounceRender(fn)%7Bvar%20delay%3Darguments.length%3E1%26%26arguments%5B1%5D!%3D%3Dundefined%3Farguments%5B1%5D%3A0%3Bthis.__renderDebouncer%3DPolymer.Debouncer.debounce(this.__renderDebouncer%2Cdelay%3E0%3FPolymer.Async.timeOut.after(delay)%3APolymer.Async.microTask%2Cfn.bind(this))%3BPolymer.enqueueDebouncer(this.__renderDebouncer)%3B%7D%2F**%0A%20%20%20%20%20*%20Forces%20the%20element%20to%20render%20its%20content.%20Normally%20rendering%20is%0A%20%20%20%20%20*%20asynchronous%20to%20a%20provoking%20change.%20This%20is%20done%20for%20efficiency%20so%0A%20%20%20%20%20*%20that%20multiple%20changes%20trigger%20only%20a%20single%20render.%20The%20render%20method%0A%20%20%20%20%20*%20should%20be%20called%20if%2C%20for%20example%2C%20template%20rendering%20is%20required%20to%0A%20%20%20%20%20*%20validate%20application%20state.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'render'%2Cvalue%3Afunction%20render()%7B%2F%2F%20Queue%20this%20repeater%2C%20then%20flush%20all%20in%20order%0Athis.__debounceRender(this.__render)%3BPolymer.flush()%3B%7D%7D%2C%7Bkey%3A'__render'%2Cvalue%3Afunction%20__render()%7Bif(!this.__ensureTemplatized())%7B%2F%2F%20No%20template%20found%20yet%0Areturn%3B%7Dthis.__applyFullRefresh()%3B%2F%2F%20Reset%20the%20pool%0A%2F%2F%20TODO(kschaaf)%3A%20Reuse%20pool%20across%20turns%20and%20nested%20templates%0A%2F%2F%20Now%20that%20objects%2Farrays%20are%20re-evaluated%20when%20set%2C%20we%20can%20safely%0A%2F%2F%20reuse%20pooled%20instances%20across%20turns%2C%20however%20we%20still%20need%20to%20decide%0A%2F%2F%20semantics%20regarding%20how%20long%20to%20hold%2C%20how%20many%20to%20hold%2C%20etc.%0Athis.__pool.length%3D0%3B%2F%2F%20Set%20rendered%20item%20count%0Athis._setRenderedItemCount(this.__instances.length)%3B%2F%2F%20Notify%20users%0Athis.dispatchEvent(new%20CustomEvent('dom-change'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3B%2F%2F%20Check%20to%20see%20if%20we%20need%20to%20render%20more%20items%0Athis.__tryRenderChunk()%3B%7D%7D%2C%7Bkey%3A'__applyFullRefresh'%2Cvalue%3Afunction%20__applyFullRefresh()%7Bvar%20_this4%3Dthis%3Bvar%20items%3Dthis.items%7C%7C%5B%5D%3Bvar%20isntIdxToItemsIdx%3Dnew%20Array(items.length)%3Bfor(var%20i%3D0%3Bi%3Citems.length%3Bi%2B%2B)%7BisntIdxToItemsIdx%5Bi%5D%3Di%3B%7D%2F%2F%20Apply%20user%20filter%0Aif(this.__filterFn)%7BisntIdxToItemsIdx%3DisntIdxToItemsIdx.filter(function(i%2Cidx%2Carray)%7Breturn%20_this4.__filterFn(items%5Bi%5D%2Cidx%2Carray)%3B%7D)%3B%7D%2F%2F%20Apply%20user%20sort%0Aif(this.__sortFn)%7BisntIdxToItemsIdx.sort(function(a%2Cb)%7Breturn%20_this4.__sortFn(items%5Ba%5D%2Citems%5Bb%5D)%3B%7D)%3B%7D%2F%2F%20items-%3Einst%20map%20kept%20for%20item%20path%20forwarding%0Avar%20itemsIdxToInstIdx%3Dthis.__itemsIdxToInstIdx%3D%7B%7D%3Bvar%20instIdx%3D0%3B%2F%2F%20Generate%20instances%20and%20assign%20items%0Avar%20limit%3DMath.min(isntIdxToItemsIdx.length%2Cthis.__limit)%3Bfor(%3BinstIdx%3Climit%3BinstIdx%2B%2B)%7Bvar%20inst%3Dthis.__instances%5BinstIdx%5D%3Bvar%20itemIdx%3DisntIdxToItemsIdx%5BinstIdx%5D%3Bvar%20item%3Ditems%5BitemIdx%5D%3BitemsIdxToInstIdx%5BitemIdx%5D%3DinstIdx%3Bif(inst)%7Binst._setPendingProperty(this.as%2Citem)%3Binst._setPendingProperty(this.indexAs%2CinstIdx)%3Binst._setPendingProperty(this.itemsIndexAs%2CitemIdx)%3Binst._flushProperties()%3B%7Delse%7Bthis.__insertInstance(item%2CinstIdx%2CitemIdx)%3B%7D%7D%2F%2F%20Remove%20any%20extra%20instances%20from%20previous%20state%0Afor(var%20_i%3Dthis.__instances.length-1%3B_i%3E%3DinstIdx%3B_i--)%7Bthis.__detachAndRemoveInstance(_i)%3B%7D%7D%7D%2C%7Bkey%3A'__detachInstance'%2Cvalue%3Afunction%20__detachInstance(idx)%7Bvar%20inst%3Dthis.__instances%5Bidx%5D%3Bfor(var%20i%3D0%3Bi%3Cinst.children.length%3Bi%2B%2B)%7Bvar%20el%3Dinst.children%5Bi%5D%3Binst.root.appendChild(el)%3B%7Dreturn%20inst%3B%7D%7D%2C%7Bkey%3A'__attachInstance'%2Cvalue%3Afunction%20__attachInstance(idx%2Cparent)%7Bvar%20inst%3Dthis.__instances%5Bidx%5D%3Bparent.insertBefore(inst.root%2Cthis)%3B%7D%7D%2C%7Bkey%3A'__detachAndRemoveInstance'%2Cvalue%3Afunction%20__detachAndRemoveInstance(idx)%7Bvar%20inst%3Dthis.__detachInstance(idx)%3Bif(inst)%7Bthis.__pool.push(inst)%3B%7Dthis.__instances.splice(idx%2C1)%3B%7D%7D%2C%7Bkey%3A'__stampInstance'%2Cvalue%3Afunction%20__stampInstance(item%2CinstIdx%2CitemIdx)%7Bvar%20model%3D%7B%7D%3Bmodel%5Bthis.as%5D%3Ditem%3Bmodel%5Bthis.indexAs%5D%3DinstIdx%3Bmodel%5Bthis.itemsIndexAs%5D%3DitemIdx%3Breturn%20new%20this.__ctor(model)%3B%7D%7D%2C%7Bkey%3A'__insertInstance'%2Cvalue%3Afunction%20__insertInstance(item%2CinstIdx%2CitemIdx)%7Bvar%20inst%3Dthis.__pool.pop()%3Bif(inst)%7B%2F%2F%20TODO(kschaaf)%3A%20If%20the%20pool%20is%20shared%20across%20turns%2C%20hostProps%0A%2F%2F%20need%20to%20be%20re-set%20to%20reused%20instances%20in%20addition%20to%20item%0Ainst._setPendingProperty(this.as%2Citem)%3Binst._setPendingProperty(this.indexAs%2CinstIdx)%3Binst._setPendingProperty(this.itemsIndexAs%2CitemIdx)%3Binst._flushProperties()%3B%7Delse%7Binst%3Dthis.__stampInstance(item%2CinstIdx%2CitemIdx)%3B%7Dvar%20beforeRow%3Dthis.__instances%5BinstIdx%2B1%5D%3Bvar%20beforeNode%3DbeforeRow%3FbeforeRow.children%5B0%5D%3Athis%3Bthis.parentNode.insertBefore(inst.root%2CbeforeNode)%3Bthis.__instances%5BinstIdx%5D%3Dinst%3Breturn%20inst%3B%7D%2F%2F%20Implements%20extension%20point%20from%20Templatize%20mixin%0A%2F**%0A%20%20%20%20%20*%20Shows%20or%20hides%20the%20template%20instance%20top%20level%20child%20elements.%20For%0A%20%20%20%20%20*%20text%20nodes%2C%20%60textContent%60%20is%20removed%20while%20%22hidden%22%20and%20replaced%20when%0A%20%20%20%20%20*%20%22shown.%22%0A%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hidden%20Set%20to%20true%20to%20hide%20the%20children%3B%0A%20%20%20%20%20*%20set%20to%20false%20to%20show%20them.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_showHideChildren'%2Cvalue%3Afunction%20_showHideChildren(hidden)%7Bfor(var%20i%3D0%3Bi%3Cthis.__instances.length%3Bi%2B%2B)%7Bthis.__instances%5Bi%5D._showHideChildren(hidden)%3B%7D%7D%2F%2F%20Called%20as%20a%20side%20effect%20of%20a%20host%20items.%3Ckey%3E.%3Cpath%3E%20path%20change%2C%0A%2F%2F%20responsible%20for%20notifying%20item.%3Cpath%3E%20changes%20to%20inst%20for%20key%0A%7D%2C%7Bkey%3A'__handleItemPath'%2Cvalue%3Afunction%20__handleItemPath(path%2Cvalue)%7Bvar%20itemsPath%3Dpath.slice(6)%3B%2F%2F%20'items.'.length%20%3D%3D%206%0Avar%20dot%3DitemsPath.indexOf('.')%3Bvar%20itemsIdx%3Ddot%3C0%3FitemsPath%3AitemsPath.substring(0%2Cdot)%3B%2F%2F%20If%20path%20was%20index%20into%20array...%0Aif(itemsIdx%3D%3DparseInt(itemsIdx%2C10))%7Bvar%20itemSubPath%3Ddot%3C0%3F''%3AitemsPath.substring(dot%2B1)%3B%2F%2F%20If%20the%20path%20is%20observed%2C%20it%20will%20trigger%20a%20full%20refresh%0Athis.__handleObservedPaths(itemSubPath)%3B%2F%2F%20Note%2C%20even%20if%20a%20rull%20refresh%20is%20triggered%2C%20always%20do%20the%20path%0A%2F%2F%20notification%20because%20unless%20mutableData%20is%20used%20for%20dom-repeat%0A%2F%2F%20and%20all%20elements%20in%20the%20instance%20subtree%2C%20a%20full%20refresh%20may%0A%2F%2F%20not%20trigger%20the%20proper%20update.%0Avar%20instIdx%3Dthis.__itemsIdxToInstIdx%5BitemsIdx%5D%3Bvar%20inst%3Dthis.__instances%5BinstIdx%5D%3Bif(inst)%7Bvar%20itemPath%3Dthis.as%2B(itemSubPath%3F'.'%2BitemSubPath%3A'')%3B%2F%2F%20This%20is%20effectively%20%60notifyPath%60%2C%20but%20avoids%20some%20of%20the%20overhead%0A%2F%2F%20of%20the%20public%20API%0Ainst._setPendingPropertyOrPath(itemPath%2Cvalue%2Cfalse%2Ctrue)%3Binst._flushProperties()%3B%7Dreturn%20true%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20item%20associated%20with%20a%20given%20element%20stamped%20by%0A%20%20%20%20%20*%20this%20%60dom-repeat%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%2C%20to%20modify%20sub-properties%20of%20the%20item%2C%0A%20%20%20%20%20*%20%60modelForElement(el).set('item.%3Csub-prop%3E'%2C%20value)%60%0A%20%20%20%20%20*%20should%20be%20used.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20el%20Element%20for%20which%20to%20return%20the%20item.%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20associated%20with%20the%20element.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'itemForElement'%2Cvalue%3Afunction%20itemForElement(el)%7Bvar%20instance%3Dthis.modelForElement(el)%3Breturn%20instance%26%26instance%5Bthis.as%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20inst%20index%20for%20a%20given%20element%20stamped%20by%20this%20%60dom-repeat%60.%0A%20%20%20%20%20*%20If%20%60sort%60%20is%20provided%2C%20the%20index%20will%20reflect%20the%20sorted%20order%20(rather%0A%20%20%20%20%20*%20than%20the%20original%20array%20order).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20el%20Element%20for%20which%20to%20return%20the%20index.%0A%20%20%20%20%20*%20%40return%20%7B%3Fnumber%7D%20Row%20index%20associated%20with%20the%20element%20(note%20this%20may%0A%20%20%20%20%20*%20%20%20not%20correspond%20to%20the%20array%20index%20if%20a%20user%20%60sort%60%20is%20applied).%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'indexForElement'%2Cvalue%3Afunction%20indexForElement(el)%7Bvar%20instance%3Dthis.modelForElement(el)%3Breturn%20instance%26%26instance%5Bthis.indexAs%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20template%20%22model%22%20associated%20with%20a%20given%20element%2C%20which%0A%20%20%20%20%20*%20serves%20as%20the%20binding%20scope%20for%20the%20template%20instance%20the%20element%20is%0A%20%20%20%20%20*%20contained%20in.%20A%20template%20model%20is%20an%20instance%20of%20%60Polymer.Base%60%2C%20and%0A%20%20%20%20%20*%20should%20be%20used%20to%20manipulate%20data%20associated%20with%20this%20template%20instance.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20let%20model%20%3D%20modelForElement(el)%3B%0A%20%20%20%20%20*%20%20%20if%20(model.index%20%3C%2010)%20%7B%0A%20%20%20%20%20*%20%20%20%20%20model.set('item.checked'%2C%20true)%3B%0A%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20el%20Element%20for%20which%20to%20return%20a%20template%20model.%0A%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Model%20representing%20the%20binding%20scope%20for%0A%20%20%20%20%20*%20%20%20the%20element.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'modelForElement'%2Cvalue%3Afunction%20modelForElement(el)%7Breturn%20Polymer.Templatize.modelForElement(this.template%2Cel)%3B%7D%7D%5D)%3Breturn%20DomRepeat%3B%7D(domRepeatBase)%3BcustomElements.define(DomRepeat.is%2CDomRepeat)%3B%2F**%20%40const%20*%2FPolymer.DomRepeat%3DDomRepeat%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-repeat.html.js%0A",
            "resourceBytes": 25690,
            "encodedBytes": 0,
            "unusedBytes": 11689
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20The%20%60%3Cdom-if%3E%60%20element%20will%20stamp%20a%20light-dom%20%60%3Ctemplate%3E%60%20child%20when%0A%20%20%20*%20the%20%60if%60%20property%20becomes%20truthy%2C%20and%20the%20template%20can%20use%20Polymer%0A%20%20%20*%20data-binding%20and%20declarative%20event%20features%20when%20used%20in%20the%20context%20of%0A%20%20%20*%20a%20Polymer%20element's%20template.%0A%20%20%20*%0A%20%20%20*%20When%20%60if%60%20becomes%20falsy%2C%20the%20stamped%20content%20is%20hidden%20but%20not%0A%20%20%20*%20removed%20from%20dom.%20When%20%60if%60%20subsequently%20becomes%20truthy%20again%2C%20the%20content%0A%20%20%20*%20is%20simply%20re-shown.%20This%20approach%20is%20used%20due%20to%20its%20favorable%20performance%0A%20%20%20*%20characteristics%3A%20the%20expense%20of%20creating%20template%20content%20is%20paid%20only%0A%20%20%20*%20once%20and%20lazily.%0A%20%20%20*%0A%20%20%20*%20Set%20the%20%60restamp%60%20property%20to%20true%20to%20force%20the%20stamped%20content%20to%20be%0A%20%20%20*%20created%20%2F%20destroyed%20when%20the%20%60if%60%20condition%20changes.%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40extends%20Polymer.Element%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20that%20conditionally%20stamps%20and%20hides%20or%20removes%0A%20%20%20*%20%20%20template%20content%20based%20on%20a%20boolean%20flag.%0A%20%20%20*%2Fvar%20DomIf%3Dfunction(_Polymer%24Element)%7B_inherits(DomIf%2C_Polymer%24Element)%3B_createClass(DomIf%2Cnull%2C%5B%7Bkey%3A'is'%2C%2F%2F%20Not%20needed%20to%20find%20template%3B%20can%20be%20removed%20once%20the%20analyzer%0A%2F%2F%20can%20find%20the%20tag%20name%20from%20customElements.define%20call%0Aget%3Afunction%20get()%7Breturn'dom-if'%3B%7D%7D%2C%7Bkey%3A'template'%2Cget%3Afunction%20get()%7Breturn%20null%3B%7D%7D%2C%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Breturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20whenever%20DOM%20is%20added%20or%20removed%2Fhidden%20by%20this%20template%20(by%0A%20%20%20%20%20%20%20%20%20*%20default%2C%20rendering%20occurs%20lazily).%20%20To%20force%20immediate%20rendering%2C%20call%0A%20%20%20%20%20%20%20%20%20*%20%60render%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20dom-change%0A%20%20%20%20%20%20%20%20%20*%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20A%20boolean%20indicating%20whether%20this%20template%20should%20stamp.%0A%20%20%20%20%20%20%20%20%20*%2Fif%3A%7Btype%3ABoolean%2Cobserver%3A'__debounceRender'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20true%2C%20elements%20will%20be%20removed%20from%20DOM%20and%20discarded%20when%20%60if%60%0A%20%20%20%20%20%20%20%20%20*%20becomes%20false%20and%20re-created%20and%20added%20back%20to%20the%20DOM%20when%20%60if%60%0A%20%20%20%20%20%20%20%20%20*%20becomes%20true.%20%20By%20default%2C%20stamped%20elements%20will%20be%20hidden%20but%20left%0A%20%20%20%20%20%20%20%20%20*%20in%20the%20DOM%20when%20%60if%60%20becomes%20false%2C%20which%20is%20generally%20results%0A%20%20%20%20%20%20%20%20%20*%20in%20better%20performance.%0A%20%20%20%20%20%20%20%20%20*%2Frestamp%3A%7Btype%3ABoolean%2Cobserver%3A'__debounceRender'%7D%7D%3B%7D%7D%5D)%3Bfunction%20DomIf()%7B_classCallCheck(this%2CDomIf)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(DomIf.__proto__%7C%7CObject.getPrototypeOf(DomIf)).call(this))%3B_this.__renderDebouncer%3Dnull%3B_this.__invalidProps%3Dnull%3B_this.__instance%3Dnull%3B_this._lastIf%3Dfalse%3B_this.__ctor%3Dnull%3Breturn%20_this%3B%7D_createClass(DomIf%2C%5B%7Bkey%3A'__debounceRender'%2Cvalue%3Afunction%20__debounceRender()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Render%20is%20async%20for%202%20reasons%3A%0A%2F%2F%201.%20To%20eliminate%20dom%20creation%20trashing%20if%20user%20code%20thrashes%20%60if%60%20in%20the%0A%2F%2F%20%20%20%20same%20turn.%20This%20was%20more%20common%20in%201.x%20where%20a%20compound%20computed%0A%2F%2F%20%20%20%20property%20could%20result%20in%20the%20result%20changing%20multiple%20times%2C%20but%20is%0A%2F%2F%20%20%20%20mitigated%20to%20a%20large%20extent%20by%20batched%20property%20processing%20in%202.x.%0A%2F%2F%202.%20To%20avoid%20double%20object%20propagation%20when%20a%20bag%20including%20values%20bound%0A%2F%2F%20%20%20%20to%20the%20%60if%60%20property%20as%20well%20as%20one%20or%20more%20hostProps%20could%20enqueue%0A%2F%2F%20%20%20%20the%20%3Cdom-if%3E%20to%20flush%20before%20the%20%3Ctemplate%3E's%20host%20property%0A%2F%2F%20%20%20%20forwarding.%20In%20that%20scenario%20creating%20an%20instance%20would%20result%20in%0A%2F%2F%20%20%20%20the%20host%20props%20being%20set%20once%2C%20and%20then%20the%20enqueued%20changes%20on%20the%0A%2F%2F%20%20%20%20template%20would%20set%20properties%20a%20second%20time%2C%20potentially%20causing%20an%0A%2F%2F%20%20%20%20object%20to%20be%20set%20to%20an%20instance%20more%20than%20once.%20%20Creating%20the%0A%2F%2F%20%20%20%20instance%20async%20from%20flushing%20data%20ensures%20this%20doesn't%20happen.%20If%0A%2F%2F%20%20%20%20we%20wanted%20a%20sync%20option%20in%20the%20future%2C%20simply%20having%20%3Cdom-if%3E%20flush%0A%2F%2F%20%20%20%20(or%20clear)%20its%20template's%20pending%20host%20properties%20before%20creating%0A%2F%2F%20%20%20%20the%20instance%20would%20also%20avoid%20the%20problem.%0Athis.__renderDebouncer%3DPolymer.Debouncer.debounce(this.__renderDebouncer%2CPolymer.Async.microTask%2Cfunction()%7Breturn%20_this2.__render()%3B%7D)%3BPolymer.enqueueDebouncer(this.__renderDebouncer)%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7B_get(DomIf.prototype.__proto__%7C%7CObject.getPrototypeOf(DomIf.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3Bif(!this.parentNode%7C%7Cthis.parentNode.nodeType%3D%3DNode.DOCUMENT_FRAGMENT_NODE%26%26!this.parentNode.host)%7Bthis.__teardownInstance()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7B_get(DomIf.prototype.__proto__%7C%7CObject.getPrototypeOf(DomIf.prototype)%2C'connectedCallback'%2Cthis).call(this)%3Bthis.style.display%3D'none'%3Bif(this.if)%7Bthis.__debounceRender()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Forces%20the%20element%20to%20render%20its%20content.%20Normally%20rendering%20is%0A%20%20%20%20%20*%20asynchronous%20to%20a%20provoking%20change.%20This%20is%20done%20for%20efficiency%20so%0A%20%20%20%20%20*%20that%20multiple%20changes%20trigger%20only%20a%20single%20render.%20The%20render%20method%0A%20%20%20%20%20*%20should%20be%20called%20if%2C%20for%20example%2C%20template%20rendering%20is%20required%20to%0A%20%20%20%20%20*%20validate%20application%20state.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'render'%2Cvalue%3Afunction%20render()%7BPolymer.flush()%3B%7D%7D%2C%7Bkey%3A'__render'%2Cvalue%3Afunction%20__render()%7Bif(this.if)%7Bif(!this.__ensureInstance())%7B%2F%2F%20No%20template%20found%20yet%0Areturn%3B%7Dthis._showHideChildren()%3B%7Delse%20if(this.restamp)%7Bthis.__teardownInstance()%3B%7Dif(!this.restamp%26%26this.__instance)%7Bthis._showHideChildren()%3B%7Dif(this.if!%3Dthis._lastIf)%7Bthis.dispatchEvent(new%20CustomEvent('dom-change'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3Bthis._lastIf%3Dthis.if%3B%7D%7D%7D%2C%7Bkey%3A'__ensureInstance'%2Cvalue%3Afunction%20__ensureInstance()%7Bvar%20_this3%3Dthis%3Bvar%20parentNode%3Dthis.parentNode%3B%2F%2F%20Guard%20against%20element%20being%20detached%20while%20render%20was%20queued%0Aif(parentNode)%7Bif(!this.__ctor)%7Bvar%20template%3D%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Fthis.querySelector('template')%3Bif(!template)%7B%2F%2F%20Wait%20until%20childList%20changes%20and%20template%20should%20be%20there%20by%20then%0Avar%20observer%3Dnew%20MutationObserver(function()%7Bif(_this3.querySelector('template'))%7Bobserver.disconnect()%3B_this3.__render()%3B%7Delse%7Bthrow%20new%20Error('dom-if%20requires%20a%20%3Ctemplate%3E%20child')%3B%7D%7D)%3Bobserver.observe(this%2C%7BchildList%3Atrue%7D)%3Breturn%20false%3B%7Dthis.__ctor%3DPolymer.Templatize.templatize(template%2Cthis%2C%7B%2F%2F%20dom-if%20templatizer%20instances%20require%20%60mutable%3A%20true%60%2C%20as%0A%2F%2F%20%60__syncHostProperties%60%20relies%20on%20that%20behavior%20to%20sync%20objects%0AmutableData%3Atrue%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20to%20forward%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20property%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FforwardHostProp%3Afunction%20forwardHostProp(prop%2Cvalue)%7Bif(this.__instance)%7Bif(this.if)%7Bthis.__instance.forwardHostProp(prop%2Cvalue)%3B%7Delse%7B%2F%2F%20If%20we%20have%20an%20instance%20but%20are%20squelching%20host%20property%0A%2F%2F%20forwarding%20due%20to%20if%20being%20false%2C%20note%20the%20invalidated%0A%2F%2F%20properties%20so%20%60__syncHostProperties%60%20can%20sync%20them%20the%20next%0A%2F%2F%20time%20%60if%60%20becomes%20true%0Athis.__invalidProps%3Dthis.__invalidProps%7C%7CObject.create(null)%3Bthis.__invalidProps%5BPolymer.Path.root(prop)%5D%3Dtrue%3B%7D%7D%7D%7D)%3B%7Dif(!this.__instance)%7Bthis.__instance%3Dnew%20this.__ctor()%3BparentNode.insertBefore(this.__instance.root%2Cthis)%3B%7Delse%7Bthis.__syncHostProperties()%3Bvar%20c%24%3Dthis.__instance.children%3Bif(c%24%26%26c%24.length)%7B%2F%2F%20Detect%20case%20where%20dom-if%20was%20re-attached%20in%20new%20position%0Avar%20lastChild%3Dthis.previousSibling%3Bif(lastChild!%3D%3Dc%24%5Bc%24.length-1%5D)%7Bfor(var%20i%3D0%2Cn%3Bi%3Cc%24.length%26%26(n%3Dc%24%5Bi%5D)%3Bi%2B%2B)%7BparentNode.insertBefore(n%2Cthis)%3B%7D%7D%7D%7D%7Dreturn%20true%3B%7D%7D%2C%7Bkey%3A'__syncHostProperties'%2Cvalue%3Afunction%20__syncHostProperties()%7Bvar%20props%3Dthis.__invalidProps%3Bif(props)%7Bfor(var%20prop%20in%20props)%7Bthis.__instance._setPendingProperty(prop%2Cthis.__dataHost%5Bprop%5D)%3B%7Dthis.__invalidProps%3Dnull%3Bthis.__instance._flushProperties()%3B%7D%7D%7D%2C%7Bkey%3A'__teardownInstance'%2Cvalue%3Afunction%20__teardownInstance()%7Bif(this.__instance)%7Bvar%20c%24%3Dthis.__instance.children%3Bif(c%24%26%26c%24.length)%7B%2F%2F%20use%20first%20child%20parent%2C%20for%20case%20when%20dom-if%20may%20have%20been%20detached%0Avar%20parent%3Dc%24%5B0%5D.parentNode%3B%2F%2F%20Instance%20children%20may%20be%20disconnected%20from%20parents%20when%20dom-if%0A%2F%2F%20detaches%20if%20a%20tree%20was%20innerHTML'ed%0Aif(parent)%7Bfor(var%20i%3D0%2Cn%3Bi%3Cc%24.length%26%26(n%3Dc%24%5Bi%5D)%3Bi%2B%2B)%7Bparent.removeChild(n)%3B%7D%7D%7Dthis.__instance%3Dnull%3Bthis.__invalidProps%3Dnull%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Shows%20or%20hides%20the%20template%20instance%20top%20level%20child%20elements.%20For%0A%20%20%20%20%20*%20text%20nodes%2C%20%60textContent%60%20is%20removed%20while%20%22hidden%22%20and%20replaced%20when%0A%20%20%20%20%20*%20%22shown.%22%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_showHideChildren'%2Cvalue%3Afunction%20_showHideChildren()%7Bvar%20hidden%3Dthis.__hideTemplateChildren__%7C%7C!this.if%3Bif(this.__instance)%7Bthis.__instance._showHideChildren(hidden)%3B%7D%7D%7D%5D)%3Breturn%20DomIf%3B%7D(Polymer.Element)%3BcustomElements.define(DomIf.is%2CDomIf)%3B%2F**%20%40const%20*%2FPolymer.DomIf%3DDomIf%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-if.html.js%0A",
            "resourceBytes": 10133,
            "encodedBytes": 0,
            "unusedBytes": 5448
          },
          {
            "name": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Element%20mixin%20for%20recording%20dynamic%20associations%20between%20item%20paths%20in%20a%0A%20%20%20*%20master%20%60items%60%20array%20and%20a%20%60selected%60%20array%20such%20that%20path%20changes%20to%20the%0A%20%20%20*%20master%20array%20(at%20the%20host)%20element%20or%20elsewhere%20via%20data-binding)%20are%0A%20%20%20*%20correctly%20propagated%20to%20items%20in%20the%20selected%20array%20and%20vice-versa.%0A%20%20%20*%0A%20%20%20*%20The%20%60items%60%20property%20accepts%20an%20array%20of%20user%20data%2C%20and%20via%20the%0A%20%20%20*%20%60select(item)%60%20and%20%60deselect(item)%60%20API%2C%20updates%20the%20%60selected%60%20property%0A%20%20%20*%20which%20may%20be%20bound%20to%20other%20parts%20of%20the%20application%2C%20and%20any%20changes%20to%0A%20%20%20*%20sub-fields%20of%20%60selected%60%20item(s)%20will%20be%20kept%20in%20sync%20with%20items%20in%20the%0A%20%20%20*%20%60items%60%20array.%20%20When%20%60multi%60%20is%20false%2C%20%60selected%60%20is%20a%20property%0A%20%20%20*%20representing%20the%20last%20selected%20item.%20%20When%20%60multi%60%20is%20true%2C%20%60selected%60%0A%20%20%20*%20is%20an%20array%20of%20multiply%20selected%20items.%0A%20%20%20*%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40appliesMixin%20Polymer.ElementMixin%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20mixin%20for%20recording%20dynamic%20associations%20between%20item%20paths%20in%20a%0A%20%20%20*%20master%20%60items%60%20array%20and%20a%20%60selected%60%20array%0A%20%20%20*%2Fvar%20ArraySelectorMixin%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20elementBase%3DPolymer.ElementMixin(superClass)%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ArraySelectorMixin%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20ArraySelectorMixin%3Dfunction(_elementBase)%7B_inherits(ArraySelectorMixin%2C_elementBase)%3B_createClass(ArraySelectorMixin%2Cnull%2C%5B%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Breturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20An%20array%20containing%20items%20from%20which%20selection%20will%20be%20made.%0A%20%20%20%20%20%20%20%20%20%20%20*%2Fitems%3A%7Btype%3AArray%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60true%60%2C%20multiple%20items%20may%20be%20selected%20at%20once%20(in%20this%20case%2C%0A%20%20%20%20%20%20%20%20%20%20%20*%20%60selected%60%20is%20an%20array%20of%20currently%20selected%20items).%20%20When%20%60false%60%2C%0A%20%20%20%20%20%20%20%20%20%20%20*%20only%20one%20item%20may%20be%20selected%20at%20a%20time.%0A%20%20%20%20%20%20%20%20%20%20%20*%2Fmulti%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60multi%60%20is%20true%2C%20this%20is%20an%20array%20that%20contains%20any%20selected.%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60multi%60%20is%20false%2C%20this%20is%20the%20currently%20selected%20item%2C%20or%20%60null%60%0A%20%20%20%20%20%20%20%20%20%20%20*%20if%20no%20item%20is%20selected.%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40type%20%7B%3F(Object%7CArray%3C!Object%3E)%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%2Fselected%3A%7Btype%3AObject%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60multi%60%20is%20false%2C%20this%20is%20the%20currently%20selected%20item%2C%20or%20%60null%60%0A%20%20%20%20%20%20%20%20%20%20%20*%20if%20no%20item%20is%20selected.%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40type%20%7B%3FObject%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%2FselectedItem%3A%7Btype%3AObject%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60true%60%2C%20calling%20%60select%60%20on%20an%20item%20that%20is%20already%20selected%0A%20%20%20%20%20%20%20%20%20%20%20*%20will%20deselect%20the%20item.%0A%20%20%20%20%20%20%20%20%20%20%20*%2Ftoggle%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%3B%7D%7D%2C%7Bkey%3A'observers'%2Cget%3Afunction%20get()%7Breturn%5B'__updateSelection(multi%2C%20items.*)'%5D%3B%7D%7D%5D)%3Bfunction%20ArraySelectorMixin()%7B_classCallCheck(this%2CArraySelectorMixin)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(ArraySelectorMixin.__proto__%7C%7CObject.getPrototypeOf(ArraySelectorMixin)).call(this))%3B_this.__lastItems%3Dnull%3B_this.__lastMulti%3Dnull%3B_this.__selectedMap%3Dnull%3Breturn%20_this%3B%7D_createClass(ArraySelectorMixin%2C%5B%7Bkey%3A'__updateSelection'%2Cvalue%3Afunction%20__updateSelection(multi%2CitemsInfo)%7Bvar%20path%3DitemsInfo.path%3Bif(path%3D%3D'items')%7B%2F%2F%20Case%201%20-%20items%20array%20changed%2C%20so%20diff%20against%20previous%20array%20and%0A%2F%2F%20deselect%20any%20removed%20items%20and%20adjust%20selected%20indices%0Avar%20newItems%3DitemsInfo.base%7C%7C%5B%5D%3Bvar%20lastItems%3Dthis.__lastItems%3Bvar%20lastMulti%3Dthis.__lastMulti%3Bif(multi!%3D%3DlastMulti)%7Bthis.clearSelection()%3B%7Dif(lastItems)%7Bvar%20splices%3DPolymer.ArraySplice.calculateSplices(newItems%2ClastItems)%3Bthis.__applySplices(splices)%3B%7Dthis.__lastItems%3DnewItems%3Bthis.__lastMulti%3Dmulti%3B%7Delse%20if(itemsInfo.path%3D%3D'items.splices')%7B%2F%2F%20Case%202%20-%20got%20specific%20splice%20information%20describing%20the%20array%20mutation%3A%0A%2F%2F%20deselect%20any%20removed%20items%20and%20adjust%20selected%20indices%0Athis.__applySplices(itemsInfo.value.indexSplices)%3B%7Delse%7B%2F%2F%20Case%203%20-%20an%20array%20element%20was%20changed%2C%20so%20deselect%20the%20previous%0A%2F%2F%20item%20for%20that%20index%20if%20it%20was%20previously%20selected%0Avar%20part%3Dpath.slice('items.'.length)%3Bvar%20idx%3DparseInt(part%2C10)%3Bif(part.indexOf('.')%3C0%26%26part%3D%3Didx)%7Bthis.__deselectChangedIdx(idx)%3B%7D%7D%7D%7D%2C%7Bkey%3A'__applySplices'%2Cvalue%3Afunction%20__applySplices(splices)%7Bvar%20_this2%3Dthis%3Bvar%20selected%3Dthis.__selectedMap%3B%2F%2F%20Adjust%20selected%20indices%20and%20mark%20removals%0Avar%20_loop%3Dfunction%20_loop(i)%7Bvar%20s%3Dsplices%5Bi%5D%3Bselected.forEach(function(idx%2Citem)%7Bif(idx%3Cs.index)%7B%2F%2F%20no%20change%0A%7Delse%20if(idx%3E%3Ds.index%2Bs.removed.length)%7B%2F%2F%20adjust%20index%0Aselected.set(item%2Cidx%2Bs.addedCount-s.removed.length)%3B%7Delse%7B%2F%2F%20remove%20index%0Aselected.set(item%2C-1)%3B%7D%7D)%3Bfor(var%20j%3D0%3Bj%3Cs.addedCount%3Bj%2B%2B)%7Bvar%20idx%3Ds.index%2Bj%3Bif(selected.has(_this2.items%5Bidx%5D))%7Bselected.set(_this2.items%5Bidx%5D%2Cidx)%3B%7D%7D%7D%3Bfor(var%20i%3D0%3Bi%3Csplices.length%3Bi%2B%2B)%7B_loop(i)%3B%7D%2F%2F%20Update%20linked%20paths%0Athis.__updateLinks()%3B%2F%2F%20Remove%20selected%20items%20that%20were%20removed%20from%20the%20items%20array%0Avar%20sidx%3D0%3Bselected.forEach(function(idx%2Citem)%7Bif(idx%3C0)%7Bif(_this2.multi)%7B_this2.splice('selected'%2Csidx%2C1)%3B%7Delse%7B_this2.selected%3D_this2.selectedItem%3Dnull%3B%7Dselected.delete(item)%3B%7Delse%7Bsidx%2B%2B%3B%7D%7D)%3B%7D%7D%2C%7Bkey%3A'__updateLinks'%2Cvalue%3Afunction%20__updateLinks()%7Bvar%20_this3%3Dthis%3Bthis.__dataLinkedPaths%3D%7B%7D%3Bif(this.multi)%7Bvar%20sidx%3D0%3Bthis.__selectedMap.forEach(function(idx)%7Bif(idx%3E%3D0)%7B_this3.linkPaths('items.'%2Bidx%2C'selected.'%2Bsidx%2B%2B)%3B%7D%7D)%3B%7Delse%7Bthis.__selectedMap.forEach(function(idx)%7B_this3.linkPaths('selected'%2C'items.'%2Bidx)%3B_this3.linkPaths('selectedItem'%2C'items.'%2Bidx)%3B%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Clears%20the%20selection%20state.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'clearSelection'%2Cvalue%3Afunction%20clearSelection()%7B%2F%2F%20Unbind%20previous%20selection%0Athis.__dataLinkedPaths%3D%7B%7D%3B%2F%2F%20The%20selected%20map%20stores%203%20pieces%20of%20information%3A%0A%2F%2F%20key%3A%20items%20array%20object%0A%2F%2F%20value%3A%20items%20array%20index%0A%2F%2F%20order%3A%20selected%20array%20index%0Athis.__selectedMap%3Dnew%20Map()%3B%2F%2F%20Initialize%20selection%0Athis.selected%3Dthis.multi%3F%5B%5D%3Anull%3Bthis.selectedItem%3Dnull%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20item%20is%20currently%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20from%20%60items%60%20array%20to%20test%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20item%20is%20selected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isSelected'%2Cvalue%3Afunction%20isSelected(item)%7Breturn%20this.__selectedMap.has(item)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20item%20is%20currently%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20idx%20Index%20from%20%60items%60%20array%20to%20test%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20item%20is%20selected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isIndexSelected'%2Cvalue%3Afunction%20isIndexSelected(idx)%7Breturn%20this.isSelected(this.items%5Bidx%5D)%3B%7D%7D%2C%7Bkey%3A'__deselectChangedIdx'%2Cvalue%3Afunction%20__deselectChangedIdx(idx)%7Bvar%20_this4%3Dthis%3Bvar%20sidx%3Dthis.__selectedIndexForItemIndex(idx)%3Bif(sidx%3E%3D0)%7Bvar%20i%3D0%3Bthis.__selectedMap.forEach(function(idx%2Citem)%7Bif(sidx%3D%3Di%2B%2B)%7B_this4.deselect(item)%3B%7D%7D)%3B%7D%7D%7D%2C%7Bkey%3A'__selectedIndexForItemIndex'%2Cvalue%3Afunction%20__selectedIndexForItemIndex(idx)%7Bvar%20selected%3Dthis.__dataLinkedPaths%5B'items.'%2Bidx%5D%3Bif(selected)%7Breturn%20parseInt(selected.slice('selected.'.length)%2C10)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Deselects%20the%20given%20item%20if%20it%20is%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20from%20%60items%60%20array%20to%20deselect%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deselect'%2Cvalue%3Afunction%20deselect(item)%7Bvar%20idx%3Dthis.__selectedMap.get(item)%3Bif(idx%3E%3D0)%7Bthis.__selectedMap.delete(item)%3Bvar%20sidx%3Dvoid%200%3Bif(this.multi)%7Bsidx%3Dthis.__selectedIndexForItemIndex(idx)%3B%7Dthis.__updateLinks()%3Bif(this.multi)%7Bthis.splice('selected'%2Csidx%2C1)%3B%7Delse%7Bthis.selected%3Dthis.selectedItem%3Dnull%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Deselects%20the%20given%20index%20if%20it%20is%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20idx%20Index%20from%20%60items%60%20array%20to%20deselect%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deselectIndex'%2Cvalue%3Afunction%20deselectIndex(idx)%7Bthis.deselect(this.items%5Bidx%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Selects%20the%20given%20item.%20%20When%20%60toggle%60%20is%20true%2C%20this%20will%20automatically%0A%20%20%20%20%20%20%20*%20deselect%20the%20item%20if%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20from%20%60items%60%20array%20to%20select%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'select'%2Cvalue%3Afunction%20select(item)%7Bthis.selectIndex(this.items.indexOf(item))%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Selects%20the%20given%20index.%20%20When%20%60toggle%60%20is%20true%2C%20this%20will%20automatically%0A%20%20%20%20%20%20%20*%20deselect%20the%20item%20if%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20idx%20Index%20from%20%60items%60%20array%20to%20select%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'selectIndex'%2Cvalue%3Afunction%20selectIndex(idx)%7Bvar%20item%3Dthis.items%5Bidx%5D%3Bif(!this.isSelected(item))%7Bif(!this.multi)%7Bthis.__selectedMap.clear()%3B%7Dthis.__selectedMap.set(item%2Cidx)%3Bthis.__updateLinks()%3Bif(this.multi)%7Bthis.push('selected'%2Citem)%3B%7Delse%7Bthis.selected%3Dthis.selectedItem%3Ditem%3B%7D%7Delse%20if(this.toggle)%7Bthis.deselectIndex(idx)%3B%7D%7D%7D%5D)%3Breturn%20ArraySelectorMixin%3B%7D(elementBase)%3Breturn%20ArraySelectorMixin%3B%7D)%3B%2F%2F%20export%20mixin%0APolymer.ArraySelectorMixin%3DArraySelectorMixin%3B%2F**%0A%20%20%20*%20%40constructor%0A%20%20%20*%20%40extends%20%7BPolymer.Element%7D%0A%20%20%20*%20%40implements%20%7BPolymer_ArraySelectorMixin%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Fvar%20baseArraySelector%3DArraySelectorMixin(Polymer.Element)%3B%2F**%0A%20%20%20*%20Element%20implementing%20the%20%60Polymer.ArraySelector%60%20mixin%2C%20which%20records%0A%20%20%20*%20dynamic%20associations%20between%20item%20paths%20in%20a%20master%20%60items%60%20array%20and%20a%0A%20%20%20*%20%60selected%60%20array%20such%20that%20path%20changes%20to%20the%20master%20array%20(at%20the%20host)%0A%20%20%20*%20element%20or%20elsewhere%20via%20data-binding)%20are%20correctly%20propagated%20to%20items%0A%20%20%20*%20in%20the%20selected%20array%20and%20vice-versa.%0A%20%20%20*%0A%20%20%20*%20The%20%60items%60%20property%20accepts%20an%20array%20of%20user%20data%2C%20and%20via%20the%0A%20%20%20*%20%60select(item)%60%20and%20%60deselect(item)%60%20API%2C%20updates%20the%20%60selected%60%20property%0A%20%20%20*%20which%20may%20be%20bound%20to%20other%20parts%20of%20the%20application%2C%20and%20any%20changes%20to%0A%20%20%20*%20sub-fields%20of%20%60selected%60%20item(s)%20will%20be%20kept%20in%20sync%20with%20items%20in%20the%0A%20%20%20*%20%60items%60%20array.%20%20When%20%60multi%60%20is%20false%2C%20%60selected%60%20is%20a%20property%0A%20%20%20*%20representing%20the%20last%20selected%20item.%20%20When%20%60multi%60%20is%20true%2C%20%60selected%60%0A%20%20%20*%20is%20an%20array%20of%20multiply%20selected%20items.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3Cdom-module%20id%3D%22employee-list%22%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3Ctemplate%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdiv%3E%20Employee%20list%3A%20%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%3Cdom-repeat%20id%3D%22employeeList%22%20items%3D%22%7B%7Bemployees%7D%7D%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Ctemplate%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3EFirst%20name%3A%20%3Cspan%3E%7B%7Bitem.first%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%3ELast%20name%3A%20%3Cspan%3E%7B%7Bitem.last%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20on-click%3D%22toggleSelection%22%3ESelect%3C%2Fbutton%3E%0A%20%20%20*%20%20%20%20%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-repeat%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Carray-selector%20id%3D%22selector%22%20items%3D%22%7B%7Bemployees%7D%7D%22%20selected%3D%22%7B%7Bselected%7D%7D%22%20multi%20toggle%3E%3C%2Farray-selector%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdiv%3E%20Selected%20employees%3A%20%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%3Cdom-repeat%20items%3D%22%7B%7Bselected%7D%7D%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Ctemplate%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3EFirst%20name%3A%20%3Cspan%3E%7B%7Bitem.first%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3ELast%20name%3A%20%3Cspan%3E%7B%7Bitem.last%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-repeat%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%0A%20%20%20*%20%3C%2Fdom-module%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%60%60%60js%0A%20%20%20*class%20EmployeeList%20extends%20Polymer.Element%20%7B%0A%20%20%20*%20%20static%20get%20is()%20%7B%20return%20'employee-list'%3B%20%7D%0A%20%20%20*%20%20static%20get%20properties()%20%7B%0A%20%20%20*%20%20%20%20return%20%7B%0A%20%20%20*%20%20%20%20%20%20employees%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20value()%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20return%20%5B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Bob'%2C%20last%3A%20'Smith'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Sally'%2C%20last%3A%20'Johnson'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20...%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20*%20%20%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%7D%3B%0A%20%20%20*%20%20%7D%0A%20%20%20*%20%20toggleSelection(e)%20%7B%0A%20%20%20*%20%20%20%20let%20item%20%3D%20this.%24.employeeList.itemForElement(e.target)%3B%0A%20%20%20*%20%20%20%20this.%24.selector.select(item)%3B%0A%20%20%20*%20%20%7D%0A%20%20%20*%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40extends%20%7BbaseArraySelector%7D%0A%20%20%20*%20%40appliesMixin%20Polymer.ArraySelectorMixin%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20that%20links%20paths%20between%20an%20input%20%60items%60%20array%20and%0A%20%20%20*%20%20%20an%20output%20%60selected%60%20item%20or%20array%20based%20on%20calls%20to%20its%20selection%20API.%0A%20%20%20*%2Fvar%20ArraySelector%3Dfunction(_baseArraySelector)%7B_inherits(ArraySelector%2C_baseArraySelector)%3Bfunction%20ArraySelector()%7B_classCallCheck(this%2CArraySelector)%3Breturn%20_possibleConstructorReturn(this%2C(ArraySelector.__proto__%7C%7CObject.getPrototypeOf(ArraySelector)).apply(this%2Carguments))%3B%7D_createClass(ArraySelector%2Cnull%2C%5B%7Bkey%3A'is'%2C%2F%2F%20Not%20needed%20to%20find%20template%3B%20can%20be%20removed%20once%20the%20analyzer%0A%2F%2F%20can%20find%20the%20tag%20name%20from%20customElements.define%20call%0Aget%3Afunction%20get()%7Breturn'array-selector'%3B%7D%7D%5D)%3Breturn%20ArraySelector%3B%7D(baseArraySelector)%3BcustomElements.define(ArraySelector.is%2CArraySelector)%3B%2F**%20%40const%20*%2FPolymer.ArraySelector%3DArraySelector%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Farray-selector.html.js%0A",
            "resourceBytes": 13519,
            "encodedBytes": 0,
            "unusedBytes": 4437
          },
          {
            "name": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20mutablePropertyChange%3Dvoid%200%3B%2F**%20%40suppress%20%7BmissingProperties%7D%20*%2F(function()%7BmutablePropertyChange%3DPolymer.MutableData._mutablePropertyChange%3B%7D)()%3B%2F**%0A%20%20%20*%20Legacy%20element%20behavior%20to%20skip%20strict%20dirty-checking%20for%20objects%20and%20arrays%2C%0A%20%20%20*%20(always%20consider%20them%20to%20be%20%22dirty%22)%20for%20use%20on%20legacy%20API%20Polymer%20elements.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20cause%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20apply%20this%20behavior%20or%20enable%20the%0A%20%20%20*%20%60Polymer.OptionalMutableDataBehavior%60.%0A%20%20%20*%0A%20%20%20*%20In%20order%20to%20make%20the%20dirty%20check%20strategy%20configurable%2C%20see%0A%20%20%20*%20%60Polymer.OptionalMutableDataBehavior%60.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20as%20opposed%20to%20using%20strict%20dirty%20checking%20with%20immutable%0A%20%20%20*%20patterns%20or%20Polymer's%20path%20notification%20API.%0A%20%20%20*%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Behavior%20to%20skip%20strict%20dirty-checking%20for%20objects%20and%0A%20%20%20*%20%20%20arrays%0A%20%20%20*%2FPolymer.MutableDataBehavior%3D%7B%2F**%0A%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20provide%20option%20for%20skipping%0A%20%20%20%20%20*%20strict%20equality%20checking%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%0A%20%20%20%20%20*%20cache%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F_shouldPropertyChange%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Ctrue)%3B%7D%7D%3B%2F**%0A%20%20%20*%20Legacy%20element%20behavior%20to%20add%20the%20optional%20ability%20to%20skip%20strict%0A%20%20%20*%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%0A%20%20%20*%20%22dirty%22)%20by%20setting%20a%20%60mutable-data%60%20attribute%20on%20an%20element%20instance.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20allow%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20enable%20this%20behavior%20or%20apply%20the%0A%20%20%20*%20%60Polymer.OptionalMutableDataBehavior%60.%0A%20%20%20*%0A%20%20%20*%20While%20this%20behavior%20adds%20the%20ability%20to%20forgo%20Object%2FArray%20dirty%20checking%2C%0A%20%20%20*%20the%20%60mutableData%60%20flag%20defaults%20to%20false%20and%20must%20be%20set%20on%20the%20instance.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20by%20relying%20on%20%60mutableData%3A%20true%60%20as%20opposed%20to%20using%0A%20%20%20*%20strict%20dirty%20checking%20with%20immutable%20patterns%20or%20Polymer's%20path%20notification%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Behavior%20to%20optionally%20skip%20strict%20dirty-checking%20for%20objects%20and%0A%20%20%20*%20%20%20arrays%0A%20%20%20*%2FPolymer.OptionalMutableDataBehavior%3D%7Bproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Instance-level%20flag%20for%20configuring%20the%20dirty-checking%20strategy%0A%20%20%20%20%20%20%20*%20for%20this%20element.%20%20When%20true%2C%20Objects%20and%20Arrays%20will%20skip%20dirty%0A%20%20%20%20%20%20%20*%20checking%2C%20otherwise%20strict%20equality%20checking%20will%20be%20used.%0A%20%20%20%20%20%20%20*%2FmutableData%3ABoolean%7D%2C%2F**%0A%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20skip%20strict%20equality%20checking%0A%20%20%20%20%20*%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%20cache%0A%20%20%20%20%20*%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F_shouldPropertyChange%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Cthis.mutableData)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fmutable-data-behavior.html.js%0A",
            "resourceBytes": 6798,
            "encodedBytes": 0,
            "unusedBytes": 234
          },
          {
            "name": "data:text/javascript;charset=utf-8,%2F%2F%20bc%0APolymer.Base%3DPolymer.LegacyElementMixin(HTMLElement).prototype%3B%2F%2F%20NOTE%3A%20this%20is%20here%20for%20modulizer%20to%20export%20%60html%60%20for%20the%20module%20version%20of%20this%20file%0APolymer.html%3DPolymer.html%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Fpolymer.html.js%0A",
            "resourceBytes": 314,
            "encodedBytes": 0,
            "unusedBytes": 0
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-sticky-module'%2Cproperties%3A%7BstickyHeight%3A%7Btype%3ANumber%2Cvalue%3A0%7D%7D%2Ccounter%3A0%2Cready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.hidden%3Dfalse%3Bvar%20elementList%3Dthis.%24.contentContainer.assignedNodes().filter(function(node)%7Breturn%20node.tagName%3D%3D%3D'UTIL-MODULE-SLOT'%3Fnode.children.length%3E0%3Anode.nodeType%3D%3D%3DNode.ELEMENT_NODE%3B%7D)%3Bif(elementList.length%3E0)%7Bthis._setHeight()%3B%7DPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bif(typeof%20ResizeObserver%3D%3D%3D'function')%7B_this._addResizeObserver()%3B%7Delse%7B_this._addSlotObserver()%3B%7D%7D%2C%5B%5D)%3B%7D%2C_addResizeObserver%3Afunction%20_addResizeObserver()%7Bvar%20_this2%3Dthis%3Bthis.resizeObserver%3Dnew%20ResizeObserver(function(entries)%7B%2F%2F%20eslint-disable-line%20no-undef%0Aentries.forEach(function(entry)%7Bvar%20cr%3Dentry.contentRect%3Bif(cr.height!%3D%3D_this2.stickyHeight)%7B_this2._setHeight()%3B%7D%7D)%3B%7D)%3Bthis.resizeObserver.observe(this.%24.wrapper)%3B%7D%2C_addSlotObserver%3Afunction%20_addSlotObserver()%7Bvar%20_this3%3Dthis%3Bthis.slotObserver%3Dnew%20Polymer.FlattenedNodesObserver(this%2Cfunction(info)%7Binfo.addedNodes.forEach(function(node)%7B%2F%2Ffilter%20out%20text%20nodes%0Aif(node.nodeType%3D%3D%3DNode.ELEMENT_NODE)%7B%2F%2F%20set%20mutation%20observer%20on%20child%20elems%20of%20util-module-slot%0Aif(node.tagName%3D%3D%3D'UTIL-MODULE-SLOT')%7Bfor(var%20i%3D0%3Bi%3Cnode.children.length%3Bi%2B%2B)%7B_this3._addMutationObserver(node.children%5Bi%5D)%3B%7D%7Delse%7B%2F%2F%20set%20mutation%20observer%20on%20node%20itself%0A_this3._addMutationObserver(node)%3B%7D%7D%7D)%3B%7D)%3B%7D%2C_addMutationObserver%3Afunction%20_addMutationObserver(node)%7Bvar%20_this4%3Dthis%3Bthis.mutationObserver%3Dnew%20MutationObserver(function(mutations)%7Bmutations.forEach(function(mutation)%7Bif(mutation.attributeName%3D%3D%3D'data-module-loaded'%7C%7Cmutation.addedNodes.length%7C%7Cmutation.removedNodes.length)%7B_this4._setHeight()%3B%7D%7D)%3B%7D)%3Bthis.mutationObserver.observe(node%2C%7Battributes%3Atrue%2CchildList%3Atrue%7D)%3B%7D%2C_setHeight%3Afunction%20_setHeight()%7Bvar%20_this5%3Dthis%3Bvar%20height%3Dthis.%24.wrapper.offsetHeight%3Bif(height%3E0)%7Bthis.counter%3D0%3Bthis.stickyHeight%3Dheight%3Bthis.%24.wrapper.classList.add('fixed')%3B%7Delse%7Bif(%2B%2Bthis.counter%3C10)%7BPolymer.Async.animationFrame.run(function()%7Breturn%20_this5._setHeight()%3B%7D)%3B%7D%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-sticky-module%2Futil-sticky-module.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-sticky-module%2Futil-sticky-module.html.js%0A",
            "resourceBytes": 2295,
            "encodedBytes": 0,
            "unusedBytes": 1853,
            "children": [
              {
                "name": "elements/util/util-sticky-module/util-sticky-module.html_script_0.js",
                "resourceBytes": 2026,
                "unusedBytes": 1853
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 269
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20'use%20strict'%3B%0A%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'iron-request'%2C%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20hidden%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20XMLHttpRequest%20instance%20used%20to%20generate%20the%0A%20%20%20%20%20%20%20*%20network%20request.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BXMLHttpRequest%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20xhr%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20new%20XMLHttpRequest()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20parsed%20response%20body%2C%20if%20the%20%60xhr%60%20has%20completely%0A%20%20%20%20%20%20%20*%20resolved.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7B*%7D%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20response%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20status%20code%2C%20if%20the%20%60xhr%60%20has%20completely%20resolved.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20status%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%200%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20status%20text%2C%20if%20the%20%60xhr%60%20has%20completely%20resolved.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20statusText%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20promise%20that%20resolves%20when%20the%20%60xhr%60%20response%20comes%20back%2C%20or%20rejects%0A%20%20%20%20%20%20%20*%20if%20there%20is%20an%20error%20before%20the%20%60xhr%60%20completes.%0A%20%20%20%20%20%20%20*%20The%20resolve%20callback%20is%20called%20with%20the%20original%20request%20as%20an%20argument.%0A%20%20%20%20%20%20%20*%20By%20default%2C%20the%20reject%20callback%20is%20called%20with%20an%20%60Error%60%20as%20an%20argument.%0A%20%20%20%20%20%20%20*%20If%20%60rejectWithRequest%60%20is%20true%2C%20the%20reject%20callback%20is%20called%20with%20an%0A%20%20%20%20%20%20%20*%20object%20with%20two%20keys%3A%20%60request%60%2C%20the%20original%20request%2C%20and%20%60error%60%2C%20the%0A%20%20%20%20%20%20%20*%20error%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BPromise%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20completes%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20new%20Promise(function(resolve%2C%20reject)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.resolveCompletes%20%3D%20resolve%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.rejectCompletes%20%3D%20reject%3B%0A%20%20%20%20%20%20%20%20%20%20%7D.bind(this))%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20An%20object%20that%20contains%20progress%20information%20emitted%20by%20the%20XHR%20if%0A%20%20%20%20%20%20%20*%20available.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40default%20%7B%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20progress%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Aborted%20will%20be%20true%20if%20an%20abort%20of%20the%20request%20is%20attempted.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20aborted%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Errored%20will%20be%20true%20if%20the%20browser%20fired%20an%20error%20event%20from%20the%0A%20%20%20%20%20%20%20*%20XHR%20object%20(mainly%20network%20errors).%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20errored%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20TimedOut%20will%20be%20true%20if%20the%20XHR%20threw%20a%20timeout%20event.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20timedOut%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Succeeded%20is%20true%20if%20the%20request%20succeeded.%20The%20request%20succeeded%20if%20it%0A%20%20%20%20%20*%20loaded%20without%20error%2C%20wasn't%20aborted%2C%20and%20the%20status%20code%20is%20%E2%89%A5%20200%2C%20and%0A%20%20%20%20%20*%20%3C%20300%2C%20or%20if%20the%20status%20code%20is%200.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20status%20code%200%20is%20accepted%20as%20a%20success%20because%20some%20schemes%20-%20e.g.%0A%20%20%20%20%20*%20file%3A%2F%2F%20-%20don't%20provide%20status%20codes.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20succeeded()%20%7B%0A%20%20%20%20%20%20if%20(this.errored%20%7C%7C%20this.aborted%20%7C%7C%20this.timedOut)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20status%20%3D%20this.xhr.status%20%7C%7C%200%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Note%3A%20if%20we%20are%20using%20the%20file%3A%2F%2F%20protocol%2C%20the%20status%20code%20will%20be%200%0A%20%20%20%20%20%20%2F%2F%20for%20all%20outcomes%20(successful%20or%20otherwise).%0A%20%20%20%20%20%20return%20status%20%3D%3D%3D%200%20%7C%7C%0A%20%20%20%20%20%20%20%20(status%20%3E%3D%20200%20%26%26%20status%20%3C%20300)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Sends%20an%20HTTP%20request%20to%20the%20server%20and%20returns%20a%20promise%20(see%20the%20%60completes%60%0A%20%20%20%20%20*%20property%20for%20details).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20handling%20of%20the%20%60body%60%20parameter%20will%20vary%20based%20on%20the%20Content-Type%0A%20%20%20%20%20*%20header.%20See%20the%20docs%20for%20iron-ajax's%20%60body%60%20property%20for%20details.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20url%3A%20string%2C%0A%20%20%20%20%20*%20%20%20method%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20async%3A%20(boolean%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20body%3A%20(ArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7Cnull%7Cstring%7Cundefined%7CObject)%2C%0A%20%20%20%20%20*%20%20%20headers%3A%20(Object%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20handleAs%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20jsonPrefix%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20withCredentials%3A%20(boolean%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20timeout%3A%20(Number%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20rejectWithRequest%3A%20(boolean%7Cundefined)%7D%7D%20options%20-%0A%20%20%20%20%20*%20%20%20-%20url%20The%20url%20to%20which%20the%20request%20is%20sent.%0A%20%20%20%20%20*%20%20%20-%20method%20The%20HTTP%20method%20to%20use%2C%20default%20is%20GET.%0A%20%20%20%20%20*%20%20%20-%20async%20By%20default%2C%20all%20requests%20are%20sent%20asynchronously.%20To%20send%20synchronous%20requests%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20set%20to%20false.%0A%20%20%20%20%20*%20%20%20-%20%20body%20The%20content%20for%20the%20request%20body%20for%20POST%20method.%0A%20%20%20%20%20*%20%20%20-%20%20headers%20HTTP%20request%20headers.%0A%20%20%20%20%20*%20%20%20-%20%20handleAs%20The%20response%20type.%20Default%20is%20'text'.%0A%20%20%20%20%20*%20%20%20-%20%20withCredentials%20Whether%20or%20not%20to%20send%20credentials%20on%20the%20request.%20Default%20is%20false.%0A%20%20%20%20%20*%20%20%20-%20%20timeout%20-%20Timeout%20for%20request%2C%20in%20milliseconds.%0A%20%20%20%20%20*%20%20%20-%20%20rejectWithRequest%20Set%20to%20true%20to%20include%20the%20request%20object%20with%20promise%20rejections.%0A%20%20%20%20%20*%20%40return%20%7BPromise%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20send%3A%20function(options)%20%7B%0A%20%20%20%20%20%20var%20xhr%20%3D%20this.xhr%3B%0A%0A%20%20%20%20%20%20if%20(xhr.readyState%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20xhr.addEventListener('progress'%2C%20function(progress)%20%7B%0A%20%20%20%20%20%20%20%20this._setProgress(%7B%0A%20%20%20%20%20%20%20%20%20%20lengthComputable%3A%20progress.lengthComputable%2C%0A%20%20%20%20%20%20%20%20%20%20loaded%3A%20progress.loaded%2C%0A%20%20%20%20%20%20%20%20%20%20total%3A%20progress.total%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Webcomponents%20v1%20spec%20does%20not%20fire%20*-changed%20events%20when%20not%20connected%0A%20%20%20%20%20%20%20%20this.fire('iron-request-progress-changed'%2C%20%7B%20value%3A%20this.progress%20%7D)%3B%0A%20%20%20%20%20%20%7D.bind(this))%0A%0A%20%20%20%20%20%20xhr.addEventListener('error'%2C%20function(error)%20%7B%0A%20%20%20%20%20%20%20%20this._setErrored(true)%3B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20xhr.addEventListener('timeout'%2C%20function(error)%20%7B%0A%20%20%20%20%20%20%20%20this._setTimedOut(true)%3B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20xhr.addEventListener('abort'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._setAborted(true)%3B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20var%20error%20%3D%20new%20Error('Request%20aborted.')%3B%0A%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Called%20after%20all%20of%20the%20above.%0A%20%20%20%20%20%20xhr.addEventListener('loadend'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20this._setResponse(this.parseResponse())%3B%0A%0A%20%20%20%20%20%20%20%20if%20(!this.succeeded)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20error%20%3D%20new%20Error('The%20request%20failed%20with%20status%20code%3A%20'%20%2B%20this.xhr.status)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.resolveCompletes(this)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20this.url%20%3D%20options.url%3B%0A%20%20%20%20%20%20var%20isXHRAsync%20%3D%20options.async%20!%3D%3D%20false%3B%0A%20%20%20%20%20%20xhr.open(%0A%20%20%20%20%20%20%20%20options.method%20%7C%7C%20'GET'%2C%0A%20%20%20%20%20%20%20%20options.url%2C%0A%20%20%20%20%20%20%20%20isXHRAsync%0A%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20var%20acceptType%20%3D%20%7B%0A%20%20%20%20%20%20%20%20'json'%3A%20'application%2Fjson'%2C%0A%20%20%20%20%20%20%20%20'text'%3A%20'text%2Fplain'%2C%0A%20%20%20%20%20%20%20%20'html'%3A%20'text%2Fhtml'%2C%0A%20%20%20%20%20%20%20%20'xml'%3A%20'application%2Fxml'%2C%0A%20%20%20%20%20%20%20%20'arraybuffer'%3A%20'application%2Foctet-stream'%0A%20%20%20%20%20%20%7D%5Boptions.handleAs%5D%3B%0A%20%20%20%20%20%20var%20headers%20%3D%20options.headers%20%7C%7C%20Object.create(null)%3B%0A%20%20%20%20%20%20var%20newHeaders%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20for%20(var%20key%20in%20headers)%20%7B%0A%20%20%20%20%20%20%20%20newHeaders%5Bkey.toLowerCase()%5D%20%3D%20headers%5Bkey%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20headers%20%3D%20newHeaders%3B%0A%0A%20%20%20%20%20%20if%20(acceptType%20%26%26%20!headers%5B'accept'%5D)%20%7B%0A%20%20%20%20%20%20%20%20headers%5B'accept'%5D%20%3D%20acceptType%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20Object.keys(headers).forEach(function(requestHeader)%20%7B%0A%20%20%20%20%20%20%20%20if%20(%2F%5BA-Z%5D%2F.test(requestHeader))%20%7B%0A%20%20%20%20%20%20%20%20%20%20Polymer.Base._error('Headers%20must%20be%20lower%20case%2C%20got'%2C%20requestHeader)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20xhr.setRequestHeader(%0A%20%20%20%20%20%20%20%20%20%20requestHeader%2C%0A%20%20%20%20%20%20%20%20%20%20headers%5BrequestHeader%5D%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%0A%20%20%20%20%20%20if%20(isXHRAsync)%20%7B%0A%20%20%20%20%20%20%20%20xhr.timeout%20%3D%20options.timeout%3B%0A%0A%20%20%20%20%20%20%20%20var%20handleAs%20%3D%20options.handleAs%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20a%20JSON%20prefix%20is%20present%2C%20the%20responseType%20must%20be%20'text'%20or%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20browser%20won%E2%80%99t%20be%20able%20to%20parse%20the%20response.%0A%20%20%20%20%20%20%20%20if%20(!!options.jsonPrefix%20%7C%7C%20!handleAs)%20%7B%0A%20%20%20%20%20%20%20%20%20%20handleAs%20%3D%20'text'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20In%20IE%2C%20%60xhr.responseType%60%20is%20an%20empty%20string%20when%20the%20response%0A%20%20%20%20%20%20%20%20%2F%2F%20returns.%20Hence%2C%20caching%20it%20as%20%60xhr._responseType%60.%0A%20%20%20%20%20%20%20%20xhr.responseType%20%3D%20xhr._responseType%20%3D%20handleAs%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Cache%20the%20JSON%20prefix%2C%20if%20it%20exists.%0A%20%20%20%20%20%20%20%20if%20(!!options.jsonPrefix)%20%7B%0A%20%20%20%20%20%20%20%20%20%20xhr._jsonPrefix%20%3D%20options.jsonPrefix%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20xhr.withCredentials%20%3D%20!!options.withCredentials%3B%0A%0A%0A%20%20%20%20%20%20var%20body%20%3D%20this._encodeBodyObject(options.body%2C%20headers%5B'content-type'%5D)%3B%0A%0A%20%20%20%20%20%20xhr.send(%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20null%7Cstring%7Cundefined%7D%20*%2F%0A%20%20%20%20%20%20%20%20(body))%3B%0A%0A%20%20%20%20%20%20return%20this.completes%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Attempts%20to%20parse%20the%20response%20body%20of%20the%20XHR.%20If%20parsing%20succeeds%2C%0A%20%20%20%20%20*%20the%20value%20returned%20will%20be%20deserialized%20based%20on%20the%20%60responseType%60%0A%20%20%20%20%20*%20set%20on%20the%20XHR.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20The%20parsed%20response%2C%0A%20%20%20%20%20*%20or%20undefined%20if%20there%20was%20an%20empty%20response%20or%20parsing%20failed.%0A%20%20%20%20%20*%2F%0A%20%20%20%20parseResponse%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20xhr%20%3D%20this.xhr%3B%0A%20%20%20%20%20%20var%20responseType%20%3D%20xhr.responseType%20%7C%7C%20xhr._responseType%3B%0A%20%20%20%20%20%20var%20preferResponseText%20%3D%20!this.xhr.responseType%3B%0A%20%20%20%20%20%20var%20prefixLen%20%3D%20(xhr._jsonPrefix%20%26%26%20xhr._jsonPrefix.length)%20%7C%7C%200%3B%0A%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20switch%20(responseType)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20'json'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20the%20xhr%20object%20doesn't%20have%20a%20natural%20%60xhr.responseType%60%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20we%20can%20assume%20that%20the%20browser%20hasn't%20parsed%20the%20response%20for%20us%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20and%20so%20parsing%20is%20our%20responsibility.%20Likewise%20if%20response%20is%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20undefined%2C%20as%20there's%20no%20way%20to%20encode%20undefined%20in%20JSON.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(preferResponseText%20%7C%7C%20xhr.response%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Try%20to%20emulate%20the%20JSON%20section%20of%20the%20response%20body%20section%20of%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20spec%3A%20https%3A%2F%2Fxhr.spec.whatwg.org%2F%23response-body%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20That%20is%20to%20say%2C%20we%20try%20to%20parse%20as%20JSON%2C%20but%20if%20anything%20goes%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20wrong%20return%20null.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.parse(xhr.responseText)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(_)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.warn('Failed%20to%20parse%20JSON%20sent%20from%20'%20%2B%20xhr.responseUrl)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.response%3B%0A%20%20%20%20%20%20%20%20%20%20case%20'xml'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20%20case%20'blob'%3A%0A%20%20%20%20%20%20%20%20%20%20case%20'document'%3A%0A%20%20%20%20%20%20%20%20%20%20case%20'arraybuffer'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.response%3B%0A%20%20%20%20%20%20%20%20%20%20case%20'text'%3A%0A%20%20%20%20%20%20%20%20%20%20default%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20%60prefixLen%60%20is%20set%2C%20it%20implies%20the%20response%20should%20be%20parsed%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20as%20JSON%20once%20the%20prefix%20of%20length%20%60prefixLen%60%20is%20stripped%20from%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20it.%20Emulate%20the%20behavior%20above%20where%20null%20is%20returned%20on%20failure%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20to%20parse.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(prefixLen)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.parse(xhr.responseText.substring(prefixLen))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(_)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.warn('Failed%20to%20parse%20JSON%20sent%20from%20'%20%2B%20xhr.responseUrl)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.responseText%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(new%20Error('Could%20not%20parse%20response.%20'%20%2B%20e.message))%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Aborts%20the%20request.%0A%20%20%20%20%20*%2F%0A%20%20%20%20abort%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setAborted(true)%3B%0A%20%20%20%20%20%20this.xhr.abort()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20body%20The%20given%20body%20of%20the%20request%20to%20try%20and%20encode.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20contentType%20The%20given%20content%20type%2C%20to%20infer%20an%20encoding%0A%20%20%20%20%20*%20%20%20%20%20from.%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20Either%20the%20encoded%20body%20as%20a%20string%2C%20if%20successful%2C%0A%20%20%20%20%20*%20%20%20%20%20or%20the%20unaltered%20body%20object%20if%20no%20encoding%20could%20be%20inferred.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_encodeBodyObject%3A%20function(body%2C%20contentType)%20%7B%0A%20%20%20%20%20%20if%20(typeof%20body%20%3D%3D%20'string')%20%7B%0A%20%20%20%20%20%20%20%20return%20body%3B%20%20%2F%2F%20Already%20encoded.%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20bodyObj%20%3D%20%2F**%20%40type%20%7BObject%7D%20*%2F%20(body)%3B%0A%20%20%20%20%20%20switch(contentType)%20%7B%0A%20%20%20%20%20%20%20%20case('application%2Fjson')%3A%0A%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(bodyObj)%3B%0A%20%20%20%20%20%20%20%20case('application%2Fx-www-form-urlencoded')%3A%0A%20%20%20%20%20%20%20%20%20%20return%20this._wwwFormUrlEncode(bodyObj)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20body%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20object%20The%20object%20to%20encode%20as%20x-www-form-urlencoded.%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_wwwFormUrlEncode%3A%20function(object)%20%7B%0A%20%20%20%20%20%20if%20(!object)%20%7B%0A%20%20%20%20%20%20%20%20return%20''%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20pieces%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20Object.keys(object).forEach(function(key)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20TODO(rictic)%3A%20handle%20array%20values%20here%2C%20in%20a%20consistent%20way%20with%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20iron-ajax%20params.%0A%20%20%20%20%20%20%20%20pieces.push(%0A%20%20%20%20%20%20%20%20%20%20%20%20this._wwwFormUrlEncodePiece(key)%20%2B%20'%3D'%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._wwwFormUrlEncodePiece(object%5Bkey%5D))%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20return%20pieces.join('%26')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20str%20A%20key%20or%20value%20to%20encode%20as%20x-www-form-urlencoded.%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_wwwFormUrlEncodePiece%3A%20function(str)%20%7B%0A%20%20%20%20%20%20%2F%2F%20Spec%20says%20to%20normalize%20newlines%20to%20%5Cr%5Cn%20and%20replace%20%2520%20spaces%20with%20%2B.%0A%20%20%20%20%20%20%2F%2F%20jQuery%20does%20this%20as%20well%2C%20so%20this%20is%20likely%20to%20be%20widely%20compatible.%0A%20%20%20%20%20%20if%20(str%20%3D%3D%3D%20null%20%7C%7C%20str%20%3D%3D%3D%20undefined%20%7C%7C%20!str.toString)%20%7B%0A%20%20%20%20%20%20%20%20return%20''%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20encodeURIComponent(str.toString().replace(%2F%5Cr%3F%5Cn%2Fg%2C%20'%5Cr%5Cn'))%0A%20%20%20%20%20%20%20%20.replace(%2F%2520%2Fg%2C%20'%2B')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Updates%20the%20status%20code%20and%20status%20text.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_updateStatus%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setStatus(this.xhr.status)%3B%0A%20%20%20%20%20%20this._setStatusText((this.xhr.statusText%20%3D%3D%3D%20undefined)%20%3F%20''%20%3A%20this.xhr.statusText)%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-ajax%2Firon-request.html.js%0A",
            "resourceBytes": 14131,
            "encodedBytes": 0,
            "unusedBytes": 8334
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20'use%20strict'%3B%0A%0A%20%20Polymer(%7B%0A%0A%20%20%20%20is%3A%20'iron-ajax'%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20before%20a%20request%20is%20sent.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20iron-ajax-presend%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20a%20request%20is%20sent.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20request%0A%20%20%20%20%20*%20%40event%20iron-ajax-request%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20a%20response%20is%20received.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20response%0A%20%20%20%20%20*%20%40event%20iron-ajax-response%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20an%20error%20is%20received.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20error%0A%20%20%20%20%20*%20%40event%20iron-ajax-error%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20hidden%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20URL%20target%20of%20the%20request.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20url%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20An%20object%20that%20contains%20query%20parameters%20to%20be%20appended%20to%20the%0A%20%20%20%20%20%20%20*%20specified%20%60url%60%20when%20generating%20a%20request.%20If%20you%20wish%20to%20set%20the%20body%0A%20%20%20%20%20%20%20*%20content%20when%20making%20a%20POST%20request%2C%20you%20should%20use%20the%20%60body%60%20property%0A%20%20%20%20%20%20%20*%20instead.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20params%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20HTTP%20method%20to%20use%20such%20as%20'GET'%2C%20'POST'%2C%20'PUT'%2C%20or%20'DELETE'.%0A%20%20%20%20%20%20%20*%20Default%20is%20'GET'.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20method%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'GET'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20HTTP%20request%20headers%20to%20send.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Ciron-ajax%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20auto%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20url%3D%22http%3A%2F%2Fsomesite.com%22%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20headers%3D'%7B%22X-Requested-With%22%3A%20%22XMLHttpRequest%22%7D'%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20handle-as%3D%22json%22%3E%3C%2Firon-ajax%3E%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%3A%20setting%20a%20%60Content-Type%60%20header%20here%20will%20override%20the%20value%0A%20%20%20%20%20%20%20*%20specified%20by%20the%20%60contentType%60%20property%20of%20this%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20headers%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Content%20type%20to%20use%20when%20sending%20data.%20If%20the%20%60contentType%60%20property%0A%20%20%20%20%20%20%20*%20is%20set%20and%20a%20%60Content-Type%60%20header%20is%20specified%20in%20the%20%60headers%60%0A%20%20%20%20%20%20%20*%20property%2C%20the%20%60headers%60%20property%20value%20will%20take%20precedence.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Varies%20the%20handling%20of%20the%20%60body%60%20param.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20contentType%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20null%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Body%20content%20to%20send%20with%20the%20request%2C%20typically%20used%20with%20%22POST%22%0A%20%20%20%20%20%20%20*%20requests.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20body%20is%20a%20string%20it%20will%20be%20sent%20unmodified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20Content-Type%20is%20set%20to%20a%20value%20listed%20below%2C%20then%0A%20%20%20%20%20%20%20*%20the%20body%20will%20be%20encoded%20accordingly.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20*%20%60content-type%3D%22application%2Fjson%22%60%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20*%20body%20is%20encoded%20like%20%60%7B%22foo%22%3A%22bar%20baz%22%2C%22x%22%3A1%7D%60%0A%20%20%20%20%20%20%20*%20%20%20%20*%20%60content-type%3D%22application%2Fx-www-form-urlencoded%22%60%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20*%20body%20is%20encoded%20like%20%60foo%3Dbar%2Bbaz%26x%3D1%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Otherwise%20the%20body%20will%20be%20passed%20to%20the%20browser%20unmodified%2C%20and%20it%0A%20%20%20%20%20%20%20*%20will%20handle%20any%20encoding%20(e.g.%20for%20FormData%2C%20Blob%2C%20ArrayBuffer).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20(ArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7Cnull%7Cstring%7Cundefined%7CObject)%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20body%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20null%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Toggle%20whether%20XHR%20is%20synchronous%20or%20asynchronous.%20Don't%20change%20this%0A%20%20%20%20%20%20%20*%20to%20true%20unless%20You%20Know%20What%20You%20Are%20Doing%E2%84%A2.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20sync%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Specifies%20what%20data%20to%20store%20in%20the%20%60response%60%20property%2C%20and%0A%20%20%20%20%20%20%20*%20to%20deliver%20as%20%60event.detail.response%60%20in%20%60response%60%20events.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20One%20of%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60text%60%3A%20uses%20%60XHR.responseText%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60xml%60%3A%20uses%20%60XHR.responseXML%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60json%60%3A%20uses%20%60XHR.responseText%60%20parsed%20as%20JSON.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60arraybuffer%60%3A%20uses%20%60XHR.response%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60blob%60%3A%20uses%20%60XHR.response%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60document%60%3A%20uses%20%60XHR.response%60.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20handleAs%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'json'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20withCredentials%20flag%20on%20the%20request.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20withCredentials%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20timeout%20flag%20on%20the%20request.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20timeout%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20value%3A%200%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20automatically%20performs%20an%20Ajax%20request%20when%20either%20%60url%60%20or%0A%20%20%20%20%20%20%20*%20%60params%60%20changes.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20auto%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20error%20messages%20will%20automatically%20be%20logged%20to%20the%20console.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20verbose%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20most%20recent%20request%20made%20by%20this%20iron-ajax%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastRequest%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20%60progress%60%20property%20of%20this%20element's%20%60lastRequest%60.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastProgress%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20while%20lastRequest%20is%20in%20flight.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20loading%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20lastRequest's%20response.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20lastResponse%20and%20lastError%20are%20set%20when%20lastRequest%20finishes%2C%0A%20%20%20%20%20%20%20*%20so%20if%20loading%20is%20true%2C%20then%20lastResponse%20and%20lastError%20will%20correspond%0A%20%20%20%20%20%20%20*%20to%20the%20result%20of%20the%20previous%20request.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20type%20of%20the%20response%20is%20determined%20by%20the%20value%20of%20%60handleAs%60%20at%0A%20%20%20%20%20%20%20*%20the%20time%20that%20the%20request%20was%20generated.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BObject%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastResponse%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20lastRequest's%20error%2C%20if%20any.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BObject%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastError%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20An%20Array%20of%20all%20in-flight%20requests%20originating%20from%20this%20iron-ajax%0A%20%20%20%20%20%20%20*%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20activeRequests%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Length%20of%20time%20in%20milliseconds%20to%20debounce%20multiple%20automatically%20generated%20requests.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20debounceDuration%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20value%3A%200%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Prefix%20to%20be%20stripped%20from%20a%20JSON%20response%20before%20parsing%20it.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20In%20order%20to%20prevent%20an%20attack%20using%20CSRF%20with%20Array%20responses%0A%20%20%20%20%20%20%20*%20(http%3A%2F%2Fhaacked.com%2Farchive%2F2008%2F11%2F20%2Fanatomy-of-a-subtle-json-vulnerability.aspx%2F)%0A%20%20%20%20%20%20%20*%20many%20backends%20will%20mitigate%20this%20by%20prefixing%20all%20JSON%20response%20bodies%0A%20%20%20%20%20%20%20*%20with%20a%20string%20that%20would%20be%20nonsensical%20to%20a%20JavaScript%20parser.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20jsonPrefix%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20By%20default%2C%20iron-ajax's%20events%20do%20not%20bubble.%20Setting%20this%20attribute%20will%20cause%20its%0A%20%20%20%20%20%20%20*%20request%20and%20response%20events%20as%20well%20as%20its%20iron-ajax-request%2C%20-response%2C%20%20and%20-error%0A%20%20%20%20%20%20%20*%20events%20to%20bubble%20to%20the%20window%20object.%20The%20vanilla%20error%20event%20never%20bubbles%20when%0A%20%20%20%20%20%20%20*%20using%20shadow%20dom%20even%20if%20this.bubbles%20is%20true%20because%20a%20scoped%20flag%20is%20not%20passed%20with%0A%20%20%20%20%20%20%20*%20it%20(first%20link)%20and%20because%20the%20shadow%20dom%20spec%20did%20not%20used%20to%20allow%20certain%20events%2C%0A%20%20%20%20%20%20%20*%20including%20events%20named%20error%2C%20to%20leak%20outside%20of%20shadow%20trees%20(second%20link).%0A%20%20%20%20%20%20%20*%20https%3A%2F%2Fwww.w3.org%2FTR%2Fshadow-dom%2F%23scoped-flag%0A%20%20%20%20%20%20%20*%20https%3A%2F%2Fwww.w3.org%2FTR%2F2015%2FWD-shadow-dom-20151215%2F%23events-that-are-not-leaked-into-ancestor-trees%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20bubbles%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Changes%20the%20%5B%60completes%60%5D(iron-request%23property-completes)%20promise%20chain%20%0A%20%20%20%20%20%20%20*%20from%20%60generateRequest%60%20to%20reject%20with%20an%20object%0A%20%20%20%20%20%20%20*%20containing%20the%20original%20request%2C%20as%20well%20an%20error%20message.%0A%20%20%20%20%20%20%20*%20If%20false%20(default)%2C%20the%20promise%20rejects%20with%20an%20error%20message%20only.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20rejectWithRequest%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundHandleResponse%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._handleResponse.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20observers%3A%20%5B%0A%20%20%20%20%20%20'_requestOptionsChanged(url%2C%20method%2C%20params.*%2C%20headers%2C%20contentType%2C%20'%20%2B%0A%20%20%20%20%20%20%20%20%20%20'body%2C%20sync%2C%20handleAs%2C%20jsonPrefix%2C%20withCredentials%2C%20timeout%2C%20auto)'%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20this._boundOnProgressChanged%20%3D%20this._onProgressChanged.bind(this)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20query%20string%20that%20should%20be%20appended%20to%20the%20%60url%60%2C%20serialized%20from%0A%20%20%20%20%20*%20the%20current%20value%20of%20%60params%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20queryString%20()%20%7B%0A%20%20%20%20%20%20var%20queryParts%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20var%20param%3B%0A%20%20%20%20%20%20var%20value%3B%0A%0A%20%20%20%20%20%20for%20(param%20in%20this.params)%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20this.params%5Bparam%5D%3B%0A%20%20%20%20%20%20%20%20param%20%3D%20window.encodeURIComponent(param)%3B%0A%0A%20%20%20%20%20%20%20%20if%20(Array.isArray(value))%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20value.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20queryParts.push(param%20%2B%20'%3D'%20%2B%20window.encodeURIComponent(value%5Bi%5D))%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(value%20!%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20queryParts.push(param%20%2B%20'%3D'%20%2B%20window.encodeURIComponent(value))%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20queryParts.push(param)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20queryParts.join('%26')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20%60url%60%20with%20query%20string%20(if%20%60params%60%20are%20specified)%2C%20suitable%20for%0A%20%20%20%20%20*%20providing%20to%20an%20%60iron-request%60%20instance.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20requestUrl()%20%7B%0A%20%20%20%20%20%20var%20queryString%20%3D%20this.queryString%3B%0A%20%20%20%20%20%20var%20url%20%3D%20this.url%20%7C%7C%20''%3B%0A%0A%20%20%20%20%20%20if%20(queryString)%20%7B%0A%20%20%20%20%20%20%20%20var%20bindingChar%20%3D%20url.indexOf('%3F')%20%3E%3D%200%20%3F%20'%26'%20%3A%20'%3F'%3B%0A%20%20%20%20%20%20%20%20return%20url%20%2B%20bindingChar%20%2B%20queryString%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20url%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20An%20object%20that%20maps%20header%20names%20to%20header%20values%2C%20first%20applying%20the%0A%20%20%20%20%20*%20the%20value%20of%20%60Content-Type%60%20and%20then%20overlaying%20the%20headers%20specified%0A%20%20%20%20%20*%20in%20the%20%60headers%60%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BObject%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20requestHeaders()%20%7B%0A%20%20%20%20%20%20var%20headers%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20var%20contentType%20%3D%20this.contentType%3B%0A%20%20%20%20%20%20if%20(contentType%20%3D%3D%20null%20%26%26%20(typeof%20this.body%20%3D%3D%3D%20'string'))%20%7B%0A%20%20%20%20%20%20%20%20contentType%20%3D%20'application%2Fx-www-form-urlencoded'%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(contentType)%20%7B%0A%20%20%20%20%20%20%20%20headers%5B'content-type'%5D%20%3D%20contentType%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20header%3B%0A%0A%20%20%20%20%20%20if%20(typeof%20this.headers%20%3D%3D%3D%20'object')%20%7B%0A%20%20%20%20%20%20%20%20for%20(header%20in%20this.headers)%20%7B%0A%20%20%20%20%20%20%20%20%20%20headers%5Bheader%5D%20%3D%20this.headers%5Bheader%5D.toString()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20headers%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onProgressChanged%3A%20function(event)%20%7B%0A%20%20%20%20%20%20this._setLastProgress(event.detail.value)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Request%20options%20suitable%20for%20generating%20an%20%60iron-request%60%20instance%20based%0A%20%20%20%20%20*%20on%20the%20current%20state%20of%20the%20%60iron-ajax%60%20instance's%20properties.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B%7B%0A%20%20%20%20%20*%20%20%20url%3A%20string%2C%0A%20%20%20%20%20*%20%20%20method%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20async%3A%20(boolean%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20body%3A%20(ArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7Cnull%7Cstring%7Cundefined%7CObject)%2C%0A%20%20%20%20%20*%20%20%20headers%3A%20(Object%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20handleAs%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20jsonPrefix%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20withCredentials%3A%20(boolean%7Cundefined)%7D%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20toRequestOptions%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20url%3A%20this.requestUrl%20%7C%7C%20''%2C%0A%20%20%20%20%20%20%20%20method%3A%20this.method%2C%0A%20%20%20%20%20%20%20%20headers%3A%20this.requestHeaders%2C%0A%20%20%20%20%20%20%20%20body%3A%20this.body%2C%0A%20%20%20%20%20%20%20%20async%3A%20!this.sync%2C%0A%20%20%20%20%20%20%20%20handleAs%3A%20this.handleAs%2C%0A%20%20%20%20%20%20%20%20jsonPrefix%3A%20this.jsonPrefix%2C%0A%20%20%20%20%20%20%20%20withCredentials%3A%20this.withCredentials%2C%0A%20%20%20%20%20%20%20%20timeout%3A%20this.timeout%2C%0A%20%20%20%20%20%20%20%20rejectWithRequest%3A%20this.rejectWithRequest%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Performs%20an%20AJAX%20request%20to%20the%20specified%20URL.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!IronRequestElement%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20generateRequest%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20request%20%3D%20%2F**%20%40type%20%7B!IronRequestElement%7D%20*%2F%20(document.createElement('iron-request'))%3B%0A%20%20%20%20%20%20var%20requestOptions%20%3D%20this.toRequestOptions()%3B%0A%0A%20%20%20%20%20%20this.push('activeRequests'%2C%20request)%3B%0A%0A%20%20%20%20%20%20request.completes.then(%0A%20%20%20%20%20%20%20%20this._boundHandleResponse%0A%20%20%20%20%20%20).catch(%0A%20%20%20%20%20%20%20%20this._handleError.bind(this%2C%20request)%0A%20%20%20%20%20%20).then(%0A%20%20%20%20%20%20%20%20this._discardRequest.bind(this%2C%20request)%0A%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20var%20evt%20%3D%20this.fire('iron-ajax-presend'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20options%3A%20requestOptions%0A%20%20%20%20%20%20%7D%2C%20%7Bbubbles%3A%20this.bubbles%2C%20cancelable%3A%20true%7D)%3B%0A%0A%20%20%20%20%20%20if%20(evt.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20request.abort()%3B%0A%20%20%20%20%20%20%20%20request.rejectCompletes(request)%3B%0A%20%20%20%20%20%20%20%20return%20request%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(this.lastRequest)%20%7B%0A%20%20%20%20%20%20%20%20this.lastRequest.removeEventListener('iron-request-progress-changed'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._boundOnProgressChanged)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20request.addEventListener('iron-request-progress-changed'%2C%0A%20%20%20%20%20%20%20%20%20%20this._boundOnProgressChanged)%3B%0A%0A%20%20%20%20%20%20request.send(requestOptions)%3B%0A%20%20%20%20%20%20this._setLastProgress(null)%3B%0A%20%20%20%20%20%20this._setLastRequest(request)%3B%0A%20%20%20%20%20%20this._setLoading(true)%3B%0A%0A%20%20%20%20%20%20this.fire('request'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20options%3A%20requestOptions%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20this.fire('iron-ajax-request'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20options%3A%20requestOptions%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20return%20request%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleResponse%3A%20function(request)%20%7B%0A%20%20%20%20%20%20if%20(request%20%3D%3D%3D%20this.lastRequest)%20%7B%0A%20%20%20%20%20%20%20%20this._setLastResponse(request.response)%3B%0A%20%20%20%20%20%20%20%20this._setLastError(null)%3B%0A%20%20%20%20%20%20%20%20this._setLoading(false)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this.fire('response'%2C%20request%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20this.fire('iron-ajax-response'%2C%20request%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleError%3A%20function(request%2C%20error)%20%7B%0A%20%20%20%20%20%20if%20(this.verbose)%20%7B%0A%20%20%20%20%20%20%20%20Polymer.Base._error(error)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(request%20%3D%3D%3D%20this.lastRequest)%20%7B%0A%20%20%20%20%20%20%20%20this._setLastError(%7B%0A%20%20%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20status%3A%20request.xhr.status%2C%0A%20%20%20%20%20%20%20%20%20%20statusText%3A%20request.xhr.statusText%2C%0A%20%20%20%20%20%20%20%20%20%20response%3A%20request.xhr.response%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20this._setLastResponse(null)%3B%0A%20%20%20%20%20%20%20%20this._setLoading(false)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Tests%20fail%20if%20this%20goes%20after%20the%20normal%20this.fire('error'%2C%20...)%0A%20%20%20%20%20%20this.fire('iron-ajax-error'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20error%3A%20error%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20this.fire('error'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20error%3A%20error%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_discardRequest%3A%20function(request)%20%7B%0A%20%20%20%20%20%20var%20requestIndex%20%3D%20this.activeRequests.indexOf(request)%3B%0A%0A%20%20%20%20%20%20if%20(requestIndex%20%3E%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this.splice('activeRequests'%2C%20requestIndex%2C%201)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_requestOptionsChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20this.debounce('generate-request'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.url%20%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(this.auto)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.generateRequest()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20this.debounceDuration)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-ajax%2Firon-ajax.html.js%0A",
            "resourceBytes": 14922,
            "encodedBytes": 0,
            "unusedBytes": 5264
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3BPolymer(%7Bis%3A'nav-manager-legacy'%2CdesignId%3A'N13'%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20route%20aka%20ssts%20object%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2Froute%3A%7Btype%3AObject%7D%2Csite%3A%7Btype%3AObject%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20navigation%20item%20key%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FnavKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20The%20sub%20nav%20key%20to%20get%20child%20assets%20for%20subnav%20module%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2FsubNavKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20The%20third%20level%20sub%20nav%20key%20to%20get%20child%20assets%20for%20subnav%20module%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2FtertiaryKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20tag%20list%20for%20the%20current%20route%0A%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FrouteTagList%3A%7Btype%3AArray%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20un-messed%20with%20tag%20list%20for%20the%20current%20nav-key%0A%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FkeyTagList%3A%7Btype%3AArray%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20raw%20schema%20data%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FschemaData%3A%7Btype%3AObject%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2CapiKey%3A%7Btype%3AString%2Cvalue%3A'f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh'%7D%7D%2Cobservers%3A%5B'_handleSchemaRequest(apiKey%2C%20site.navigation.id%2C%20navKey)'%2C'_updateKeyTagList(schemaData)'%2C'_updateRouteTagList(route%2C%20schemaData)'%5D%2Cready%3Afunction%20ready()%7Bif(this.route%3D%3D%3Dundefined)%7Bthis.set('route'%2C(window.ga_data%7C%7C%7B%7D).route)%3B%7Dif(this.site%3D%3D%3Dundefined)%7Bthis.set('site'%2C(window.ga_data%7C%7C%7B%7D).site)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20Gets%20top%20level%20navigation%20tag%20items%20for%20the%20current%20site%20if%20nav%20data%20has%20loaded%0A%20%20%20%20%20%20%20%20%20%20*%2FgetCurrentSiteTags%3Afunction%20getCurrentSiteTags()%7Bif(this.schemaData%26%26this.schemaData.children)%7Breturn%20navManagerMappers.currentSiteTags(this.schemaData)%3B%7Delse%7Breturn%5B%5D%3B%7D%7D%2C%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Private%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A_schemaUrl%3Afunction%20_schemaUrl(apiKey%2Cschema%2CnavKey)%7Breturn%20ga_data.site.hosts.gannettCDNAPI%2B'%2Fargon%2Fnavigation%2F'%2Bescape(schema)%2B'%2F'%2Bescape(navKey)%2B'%2F'%3B%7D%2C_schemaParams%3Afunction%20_schemaParams(apiKey%2Csite%2CnavKey)%7Breturn%7B'apiKey'%3AapiKey%7D%3B%7D%2C_handleSchemaRequest%3Afunction%20_handleSchemaRequest(apiKey%2Cschema%2CnavKey)%7Bif(!!apiKey%26%26!!schema%26%26!!navKey)%7Bthis.%24.schemaAjax.set('url'%2Cthis._schemaUrl(apiKey%2Cschema%2CnavKey))%3Bthis.%24.schemaAjax.set('params'%2Cthis._schemaParams(apiKey%2Cschema%2CnavKey))%3B%7D%7D%2C_handleSchemaResponse%3Afunction%20_handleSchemaResponse(evt)%7Bthis._setSchemaData(evt.detail.response)%3B%7D%2C_updateKeyTagList%3Afunction%20_updateKeyTagList(schema)%7Bif(schema)%7Bthis._setKeyTagList(navManagerMappers.schemaToKeyTagList(schema))%3B%7D%7D%2C_updateRouteTagList%3Afunction%20_updateRouteTagList(route%2Cschema)%7Bif(!!route%26%26!!schema)%7Bthis._setRouteTagList(navManagerMappers.schemaToRouteTagList(schema%2Croute))%3B%7D%7D%7D)%3Bvar%20navManagerMappers%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20schemaToRouteTagList(schema%2C%20route%2C%20isContent)%0A%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20*%20schema%20-%20The%20schema%20returned%20from%20argon%0A%20%20%20%20%20%20%20%20%20%20*%20route%20-%20The%20ga_data.route%20value%0A%20%20%20%20%20%20%20%20%20%20*%20isContent%20-%20a%20bool%20flag%20returned%20if%20the%20current%20page%20is%20content%20within%20the%20route%0A%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20**%2FnavItemToTag%3Afunction%20navItemToTag(x)%7Breturn%7Bkey%3Ax.key%2Curl%3Awindow.ga_data.route.cobrand%26%26!new%20RegExp('%5E(%3F%3A%5Ba-z%5D%2B%3A)%3F%2F%2F'%2C'i').test(x.url)%3F''%2Bwindow.ga_data.site.publicationURL%2Bx.url.substring(1)%3Ax.url%2Cname%3Ax.name%2Chidden%3Ax.visibility%3D%3D%3D'hidden'%3Ftrue%3Afalse%2Cchildren%3Ax.children%7D%3B%7D%2CcurrentSiteTags%3Afunction%20currentSiteTags(schema)%7Bvar%20children%3DnavManagerMappers._children(schema)%3Bvar%20injectedHome%3D%2F%2F%20If%20the%20schema%20does%20not%20have%20a%20home%20entry%0A!navManagerMappers._hasHome(schema)%3F%2F%2F%20Define%20the%20injected%20home%20entry%0A%7B'key'%3A'home'%2C'url'%3A'%2F'%2C'name'%3A'Home'%7D%3A%2F%2F%20Otherwise%20use%20null%0Anull%3Breturn%5B%5D.concat(navManagerMappers.maybeToArray(injectedHome)%2Cchildren).map(navManagerMappers.navItemToTag)%3B%7D%2C_ensureObj%3Afunction%20_ensureObj(x)%7Bif(!Array.isArray(x)%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object'%26%26x!%3D%3Dnull)%7Breturn%20x%3B%7Delse%7Breturn%7B%7D%3B%7D%7D%2CschemaToKeyTagList%3Afunction%20schemaToKeyTagList(schema)%7Breturn%20navManagerMappers._children(schema).map(navManagerMappers.navItemToTag)%3B%7D%2CschemaToRouteTagList%3Afunction%20schemaToRouteTagList(schema%2Croute)%7Bvar%20taglist%3D%5B%5D%3Broute%3DnavManagerMappers._ensureObj(route)%3Bif(route.sectionName%3D%3D%3D'home'%7C%7C!route.sectionName)%7Btaglist%3Dthis._getTopLevel(schema)%3B%7Delse%7Bvar%20isContent%3Droute.contentType!%3D'section'%3Bif(isContent)%7Btaglist%3Dthis._getContentTagList(schema%2Croute)%3B%7Delse%7Btaglist%3Dthis._getFrontTagList(schema)%3B%7D%7Dif(taglist.length%3C2)%7Btaglist%3Dthis._getTopLevel(schema)%3B%7Dreturn%20taglist%3B%7D%2C_checkForNavDupe%3Afunction%20_checkForNavDupe(baseTag%2CtagsToJoin)%7Bif(tagsToJoin%26%26tagsToJoin.length)%7Bvar%20key%3DbaseTag.key%2Cname%3DbaseTag.name%2Curl%3DbaseTag.url%3Bvar%20firstTag%3DtagsToJoin%5B0%5D%3Bif(!!key%26%26key%3D%3D%3DfirstTag.key%26%26!!name%26%26name%3D%3D%3DfirstTag.name%26%26!!url%26%26url.replace(%2F%5C%2F%2Fg%2C'')%3D%3D%3DfirstTag.url.replace(%2F%5C%2F%2Fg%2C''))%7BtagsToJoin.shift()%3B%7D%7Dreturn%20tagsToJoin%3B%7D%2C_getContentTagList%3Afunction%20_getContentTagList(schema%2Croute)%7Bvar%20home%3DnavManagerMappers._getHome(schema)%3Bvar%20level1%3DnavManagerMappers._level1(schema%2Croute.sectionName%2Croute.subsection)%3Bvar%20level2%3DnavManagerMappers._level2(level1%2Croute.subsection)%3Bvar%20level3Sisters%3DnavManagerMappers._sisters(level2%2Croute.topic)%3Bthis._checkForNavDupe(level2%2Clevel3Sisters)%3Bvar%20level2Sisters%3DnavManagerMappers._level2Sisters(level1%2Clevel2%2Croute.subsection)%3Blevel1%3DnavManagerMappers._filterLevel1(level1%2Croute.subsection)%3Blevel2%3DnavManagerMappers._filterLevel2(level2%2Croute.contentType!%3D'section')%3Breturn%5B%5D.concat(%5Bhome%5D%2CnavManagerMappers.maybeToArray(level2)%2Clevel3Sisters%2Clevel2Sisters%2CnavManagerMappers.maybeToArray(level1)).map(navManagerMappers.navItemToTag)%3B%7D%2C_getFrontTagList%3Afunction%20_getFrontTagList(schema)%7Bvar%20home%3DnavManagerMappers._getHome(schema)%3Bvar%20root%3DnavManagerMappers._findNodeByURL(schema)%3Bvar%20taglist%3D%5Bhome%5D%3Bif(root.node)%7Bif(root.node.children%26%26root.node.children.length)%7Btaglist%3D%5B%5D.concat(%5Bhome%5D%2CnavManagerMappers._sisters(root.node%2Croot.node.key))%3B%7Delse%20if(root.parent)%7Bvar%20siblings%3DnavManagerMappers._sisters(root.parent%2Croot.parent.key)%3Btaglist%3Dsiblings.filter(function(x)%7Breturn%20x.key!%3D%3Droot.node.key%3B%7D)%3Bif(!navManagerMappers._hasHome(schema))%7Btaglist%3D%5B%5D.concat(%5Bhome%5D%2Ctaglist)%3B%7D%7D%7Dreturn%20taglist%3B%7D%2C_getTopLevel%3Afunction%20_getTopLevel(schema)%7Breturn%20navManagerMappers._children(schema).map(navManagerMappers.navItemToTag)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20Returns%20an%20empty%20list%20is%20null%2C%20otherwise%20returns%20%5Bmaybe%5D%0A%20%20%20%20%20%20%20%20%20%20**%2FmaybeToArray%3Afunction%20maybeToArray(maybe)%7Bif(maybe%3D%3D%3Dnull%7C%7Cmaybe%3D%3D%3Dundefined)return%5B%5D%3Breturn%5Bmaybe%5D%3B%7D%2C_getHome%3Afunction%20_getHome(schema)%7Bvar%20home%3DnavManagerMappers._getSection(schema%2C'home')%3Bif(!home)%7Breturn%7B'key'%3A'home'%2C'url'%3A'%2F'%2C'name'%3A'Home'%7D%3B%7Delse%7Breturn%20home%3B%7D%7D%2C_hasHome%3Afunction%20_hasHome(schema)%7Breturn!!navManagerMappers._getSection(schema%2C'home')%3B%7D%2C_children%3Afunction%20_children(schema)%7Bif(navManagerMappers._hasChildren(schema))%7Breturn%20schema.children%3B%7Delse%7Breturn%5B%5D%3B%7D%7D%2C_level1%3Afunction%20_level1(schema%2CsectionName%2Csubsection)%7Breturn%20navManagerMappers._getSection(schema%2CsectionName)%3B%7D%2C_slugify%3Afunction%20_slugify(text)%7Breturn%20text.toString().toLowerCase().replace(%2F%5Cs%2B%2Fg%2C'-')%2F%2F%20Replace%20spaces%20with%20-%0A.replace(%2F%5B%5E%5Cw%5C-%5D%2B%2Fg%2C'')%2F%2F%20Remove%20all%20non-word%20chars%0A.replace(%2F%5C-%5C-%2B%2Fg%2C'-')%2F%2F%20Replace%20multiple%20-%20with%20single%20-%0A.replace(%2F%5E-%2B%2F%2C'')%2F%2F%20Trim%20-%20from%20start%20of%20text%0A.replace(%2F-%2B%24%2F%2C'')%3B%2F%2F%20Trim%20-%20from%20end%20of%20text%0A%7D%2C_filterLevel1%3Afunction%20_filterLevel1(level1%2Csubsection)%7Bif(!subsection)%7B%2F%2F%20If%20subsection%20is%20not%20given%2C%20don't%20display%20level1%0Areturn%20null%3B%7Delse%7B%2F%2F%20otherwise%20return%20level1%0Areturn%20level1%3B%7D%7D%2C_filterLevel2%3Afunction%20_filterLevel2(level2%2CisContent)%7Bif(!isContent)%7B%2F%2F%20If%20we're%20not%20on%20a%20content%20page%2C%20suppress%20the%20level2%0Areturn%20null%3B%7Delse%7B%2F%2F%20otherwise%20return%20level1%0Areturn%20level2%3B%7D%7D%2C_level2%3Afunction%20_level2(level1%2Csubsection)%7Breturn%20navManagerMappers._getSection(level1%2Csubsection)%3B%7D%2C_level2Sisters%3Afunction%20_level2Sisters(level1%2Clevel2%2Csubsection)%7B%2F%2F%20If%20there%20is%20a%20level3%2C%20supress%20the%20level2%20sisters%0Aif(navManagerMappers._hasChildren(level2))%7Breturn%5B%5D%3B%7Delse%7Breturn%20navManagerMappers._sisters(level1%2Csubsection)%3B%7D%7D%2C_sisters%3Afunction%20_sisters(parent%2Ckey)%7Bvar%20sisters%3D%5B%5D%3Bif(navManagerMappers._hasChildren(parent))%7Breturn%20parent.children.filter(function(x)%7Breturn%20x.key!%3Dkey%3B%7D)%3B%7Dreturn%20sisters%3B%7D%2C_hasChildren%3Afunction%20_hasChildren(item)%7Breturn%20item%26%26item.children%26%26item.children.length%3B%7D%2C_getSection%3Afunction%20_getSection(a%2Ckey)%7Bif(key%26%26navManagerMappers._hasChildren(a))%7Bfor(var%20i%3D0%3Bi%3Ca.children.length%3Bi%2B%2B)%7Bvar%20x%3Da.children%5Bi%5D%3Bif(x.key%3D%3Dkey)return%20x%3B%7D%7Dreturn%20null%3B%7D%2C%2F%2F%20used%20to%20hold%20the%20node%20and%20the%20level%20at%20which%20it%20was%20found.%0A%2F%2FfoundNodes%3A%20%5B%5D%2C%0A_findNodeByURL%3Afunction%20_findNodeByURL(schema)%7Bvar%20foundNodes%3Dthis._getNodesByURL(schema%2Cwindow.location.pathname%2C0%2C%7B%7D%2C%5B%5D)%3Bvar%20topNode%3D%7B'node'%3A%7B%7D%7D%3Bif(foundNodes.length)%7B%2F%2F%20arbitrary%20large%20number%0Avar%20lowest%3D1000%3BfoundNodes.forEach(function(node)%7Bif(node.level%3Clowest)%7Blowest%3Dnode.level%3BtopNode%3Dnode%3B%7D%7D)%3B%7Dreturn%20topNode%3B%7D%2C_getNodesByURL%3Afunction%20_getNodesByURL(root%2Cpath%2Clevel%2Cparent%2Carr)%7Bif(root.url%3D%3D%3Dpath)%7Barr.push(%7B'node'%3Aroot%2C'level'%3Alevel%2C'parent'%3Aparent%7D)%3B%7Dif(root.children)%7Bfor(var%20i%3D0%3Bi%3Croot.children.length%3Bi%2B%2B)%7Bthis._getNodesByURL(root.children%5Bi%5D%2Cpath%2Clevel%2B1%2Croot%2Carr)%3B%7D%7Dreturn%20arr%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-manager%2Fnav-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-manager%2Fnav-manager.html.js%0A",
            "resourceBytes": 9348,
            "encodedBytes": 0,
            "unusedBytes": 6580,
            "children": [
              {
                "name": "elements/nav/nav-manager/nav-manager.html_script_0.js",
                "resourceBytes": 7873,
                "unusedBytes": 6580
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 1475
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D%2F%2F%20Static%20%22singleton%22%20data%20stores%2C%20exist%20in%20a%20closed%20scope%20for%20all%20instances%20of%20util-analytics%0Avar%20_currentRouteState%3D%7B%7D%3Bvar%20_routeDataBlock%3Ddocument.getElementById('ga-data-route')%3Bif(_routeDataBlock)%7Btry%7B_currentRouteState%3DJSON.parse(_routeDataBlock.textContent)%3B%7Dcatch(e)%7B_currentRouteState%3Dwindow.ga_data%26%26window.ga_data.route%3Fwindow.ga_data.route%3A%7B%7D%3B%7D%7Delse%20if(window.ga_data%26%26window.ga_data.route)%7B_currentRouteState%3Dwindow.ga_data.route%3B%7Dvar%20_eventHistory%3D%5B%5D%3B%2F%2F%20Log%20of%20all%20fired%20events%0A%2F%2F%20Log%20of%20fired%20page%20views%20and%20route%20changes%0Avar%20_viewHistory%3D%5B%5D%3BPolymer(%7Bis%3A'util-analytics'%2CdelayedEventStorageKey%3A'util-analytics%3Aaction'%2Cready%3Afunction%20ready()%7Bthis._restoreDelayedEvent(_currentRouteState)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-event%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20action%20The%20event%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20data%20The%20event%20details%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatch%20an%20analytics%20event%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20action%20The%20event%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20data%20The%20event%20details%0A%20%20%20%20%20%20%20%20%20**%2FfireEvent%3Afunction%20fireEvent(action%2Cdata)%7Bvar%20delayTrack%3Darguments.length%3E2%26%26arguments%5B2%5D!%3D%3Dundefined%3Farguments%5B2%5D%3Afalse%3Bvar%20detail%3D%7Baction%3Aaction%2Cdata%3Adata%2Croute%3A_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2C%7B%7D)%7D%3Bif(delayTrack)%7B%2F%2F%20Serialize%20data%20to%20localstorage%0Athis._persistDelayedEvent(detail)%3B%7Delse%7B_eventHistory.push(detail)%3B%2F%2F%20Fire%20analytics%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-event'%2C%7Bdetail%3Adetail%7D))%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-page-view%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatches%20a%20route%20change%20without%20changing%20base%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20tempRoute%20diffs%20from%20the%20base%20route%20object%0A%20%20%20%20%20%20%20%20%20**%2FfirePageView%3Afunction%20firePageView(tempRoute)%7Bvar%20mergedRoute%3D_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2CtempRoute)%3Bthis._restoreDelayedEvent(mergedRoute)%3Bwindow.ga_data.route%3DmergedRoute%3B_viewHistory.push(%7Broute%3AmergedRoute%7D)%3B%2F%2F%20Fire%20page-view%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-page-view'%2C%7Bdetail%3A%7Broute%3AmergedRoute%7D%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-page-view%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatches%20a%20route%20change.%0A%20%20%20%20%20%20%20%20%20*%20New%20route%20becomes%20the%20base%20for%20future%20RouteChanges%20and%20PageViews.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20newRoute%20the%20new%20route%20object%0A%20%20%20%20%20%20%20%20%20**%2FfireRouteChange%3Afunction%20fireRouteChange(newRoute)%7Bvar%20baseRoute%3D_currentRouteState%3BnewRoute%3D_UtilAnalyticsMappers.cloneRoute(baseRoute%2CnewRoute)%3Bvar%20detail%3D%7Broute%3AnewRoute%7D%3Bthis._restoreDelayedEvent(newRoute)%3B_currentRouteState%3DnewRoute%3Bwindow.ga_data.route%3DnewRoute%3B_viewHistory.push(%7Broute%3AnewRoute%7D)%3B%2F%2F%20Fire%20page-view%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-page-view'%2C%7Bdetail%3Adetail%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20current%20route%20data%0A%20%20%20%20%20%20%20%20%20*%2FgetBaseRoute%3Afunction%20getBaseRoute()%7Breturn%20_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2C%7B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20history%20of%20events%20fired%20on%20this%20page%0A%20%20%20%20%20%20%20%20%20*%2FgetEventHistory%3Afunction%20getEventHistory()%7Breturn%20Array.prototype.concat(_eventHistory)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20history%20of%20page%20views%20and%20route%20changes%20fired%20on%20this%20page%0A%20%20%20%20%20%20%20%20%20*%2FgetPageViewHistory%3Afunction%20getPageViewHistory()%7Breturn%20Array.prototype.concat(_viewHistory)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Store%20an%20event%20for%20later%20bundling%20with%20next%20page%20view%0A%20%20%20%20%20%20%20%20%20*%2F_persistDelayedEvent%3Afunction%20_persistDelayedEvent(eventDetail)%7Bif(!window.localStorage)return%3Btry%7Bwindow.localStorage.setItem(this.delayedEventStorageKey%2CJSON.stringify(%7Baction%3AeventDetail.action%2Curl%3Awindow.location.href%7D))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Restore%20persisted%20event%20if%20needed%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Will%20clear%20out%20the%20data%20on%20error%20or%20success%0A%20%20%20%20%20%20%20%20%20*%2F_restoreDelayedEvent%3Afunction%20_restoreDelayedEvent(route)%7Bvar%20localStorage%3Dvoid%200%2CdelayedData%3Dvoid%200%3Btry%7BlocalStorage%3Dwindow.localStorage%3B%7Dcatch(e)%7B%2F%2F%20Local%20storage%20is%20either%20disabled%20or%20full.%0A%7DdelayedData%3DlocalStorage%3Fwindow.localStorage.getItem(this.delayedEventStorageKey)%3Afalse%3Bif(delayedData)%7Btry%7Bvar%20detail%3DJSON.parse(delayedData)%3Broute.action%3Ddetail.action%3Broute.actionUrl%3Ddetail.url%3B%7Dfinally%7Bwindow.localStorage.removeItem(this.delayedEventStorageKey)%3B%7D%7D%7D%7D)%3B%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Internal%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0Avar%20_UtilAnalyticsMappers%3Dfunction()%7Bfunction%20_UtilAnalyticsMappers()%7B_classCallCheck(this%2C_UtilAnalyticsMappers)%3B%7D_createClass(_UtilAnalyticsMappers%2Cnull%2C%5B%7Bkey%3A'cloneRoute'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20copies%20the%20route%20object%20into%20a%20new%20object%2C%20merging%20in%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20route%20The%20route%20object%20to%20copy%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20object%20to%20merge%20into%20the%20route%20object%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%20A%20copy%20of%20the%20route%20with%20the%20overrides%20merged%20in%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20cloneRoute(route%2Coverrides)%7Breturn%20this._cloneObject(route%2Coverrides%2C%5B%2F%2F%20http%3A%2F%2Fschema.org%2FCreativeWork%20fields%0A'creativeWork'%2C'url'%2C'name'%2C'datePublished'%2C'headline'%2C'sourceOrganization'%2C'authors'%2C%7Bname%3A'author'%2Ccb%3A_UtilAnalyticsMappers._cloneAuthorArray%7D%2C%7Bname%3A'keywords'%2Ccb%3A_UtilAnalyticsMappers._cloneArray%7D%2C%2F%2F%20Custom%20fields%0A'action'%2C'actionUrl'%2C'contentId'%2C'basePageType'%2C'cst'%2C'displayType'%2C'keywords'%2C'noAdvertising'%2C'sectionName'%2C'seoKeywords'%2C'series'%2C'sponsoredName'%2C'sponsorStory'%2C'sponsoredSeries'%2C'subsection'%2C'ssts'%2C'taxonomyKeywords'%2C'topic'%2C'useCanonical'%2C%7Bname%3A'primaryTag'%2Ccb%3A_UtilAnalyticsMappers._clonePrimaryTag%7D%2C'short_url'%2C'mobile_url'%2C'contentType'%2C%2F%2F%20Video%20specific%20fields%0A'includesVideo'%2C%2F%2F%20Gallery%20specific%20fields%0A'galleryName'%2C'galleryIndex'%2C'galleryTotal'%2C%2F%2F%20Ads%20specific%20fields%0A'simpleTarget'%2C'simpleExclusion'%2C%2F%2F%20Pay-wall%20%2F%20metering%20fields%0A'cam'%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20new%20primary%20tag%20object%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%7Bid%3A%20string%2C%20name%3A%20string%7D%7D%20ptag0%20The%20original%20primary%20tag%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%7Bid%3A%20string%2C%20name%3A%20string%7D%7D%20ptag1%20The%20new%20primary%20tag%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_clonePrimaryTag'%2Cvalue%3Afunction%20_clonePrimaryTag(pt1%2Cpt2)%7Bvar%20pt%3D_UtilAnalyticsMappers._arrayFind(%5Bpt2%2Cpt1%5D%2Cfunction(x)%7Breturn!!x%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object'%3B%7D)%3Bif(pt)%7Breturn%20_UtilAnalyticsMappers._cloneObject(pt%2C%7B%7D%2C%5B'id'%2C'name'%5D)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneAuthorArray'%2Cvalue%3Afunction%20_cloneAuthorArray(a1%2Ca2)%7Bvar%20target%3D_UtilAnalyticsMappers._arrayFind(%5Ba2%2Ca1%5D%2CArray.isArray)%3Bif(target)%7Breturn%20target.map(_UtilAnalyticsMappers._cloneAuthor)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneAuthor'%2Cvalue%3Afunction%20_cloneAuthor(x)%7Bif(!!x%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object')%7Breturn%20_UtilAnalyticsMappers._cloneObject(x%2C%7B%7D%2C%5B'name'%5D)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneArray'%2Cvalue%3Afunction%20_cloneArray(array1%2Carray2)%7Bvar%20target%3D_UtilAnalyticsMappers._arrayFind(%5Barray1%2Carray2%5D%2CArray.isArray)%3Bif(target)%7Breturn%20target.slice(0)%3B%2F%2F%20clone%20the%20array%0A%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Clones%20an%20object%20given%20a%20list%20of%20fields%20and%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20Array%3C%7B%20string%20%7C%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%3E%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_cloneObject'%2Cvalue%3Afunction%20_cloneObject(obj%2Coverrides%2Cfields)%7Breturn%20fields.reduce(function(acc%2Cfield)%7Bvar%20_UtilAnalyticsMappers2%3D_UtilAnalyticsMappers._mapField(obj%2Coverrides%2Cfield)%2Cval%3D_UtilAnalyticsMappers2.val%2Cfield2%3D_UtilAnalyticsMappers2.field%3Breturn%20_UtilAnalyticsMappers._maybeUpdate(acc%2Cfield2%2Cval)%3B%7D%2C%7B%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Maps%20a%20complex%20field%20to%20its%20field%2C%20val%20pair%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%20field%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B%20%7B%20field%3A%20string%2C%20val%3A%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapComplexField'%2Cvalue%3Afunction%20_mapComplexField(obj%2Coverrides%2Cfield)%7Breturn%7Bfield%3Afield.name%2Cval%3Afield.cb(obj%5Bfield.name%5D%2Coverrides%5Bfield.name%5D)%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Maps%20a%20simple%20field%20to%20its%20field%2C%20val%20pair%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20field%20The%20field%20to%20copy%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B%20%7B%20field%3A%20string%2C%20val%3A%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapSimpleField'%2Cvalue%3Afunction%20_mapSimpleField(obj%2Coverrides%2Cfield)%7Breturn%7Bfield%3Afield%2Cval%3Aoverrides%5Bfield%5D!%3D%3Dundefined%3Foverrides%5Bfield%5D%3Aobj%5Bfield%5D%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20field%20is%20a%20complex%20field%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_isComplexField'%2Cvalue%3Afunction%20_isComplexField(field)%7Breturn%20field.name!%3D%3Dundefined%26%26field.cb!%3D%3Dundefined%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Clones%20an%20object%20given%20a%20list%20of%20fields%20and%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20string%20%7C%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapField'%2Cvalue%3Afunction%20_mapField(obj%2Coverrides%2Cfield)%7Breturn%20_UtilAnalyticsMappers._isComplexField(field)%3F_UtilAnalyticsMappers._mapComplexField(obj%2Coverrides%2Cfield)%3A_UtilAnalyticsMappers._mapSimpleField(obj%2Coverrides%2Cfield)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20an%20objects%20field%20if%20the%20value%20is%20defined%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20field%20The%20field%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20*%20%7C%20undefined%20%7D%20val%20The%20possibly%20undefined%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%20The%20possibly%20updated%20object%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_maybeUpdate'%2Cvalue%3Afunction%20_maybeUpdate(obj%2Cfield%2Cval)%7Bif(val!%3D%3Dundefined)%7Bobj%5Bfield%5D%3Dval%3B%7Dreturn%20obj%3B%7D%7D%2C%7Bkey%3A'_arrayFind'%2Cvalue%3Afunction%20_arrayFind(a%2Ccb)%7Bif(Array.prototype.find)%7Breturn%20a.find(cb)%3B%7Delse%7Bfor(var%20i%3D0%3Bi%3Ca.length%3Bi%2B%2B)%7Bvar%20x%3Da%5Bi%5D%3Bif(cb(x))%7Breturn%20x%3B%7D%7D%7D%7D%7D%5D)%3Breturn%20_UtilAnalyticsMappers%3B%7D()%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-analytics%2Futil-analytics.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-analytics%2Futil-analytics.html.js%0A",
            "resourceBytes": 11284,
            "encodedBytes": 0,
            "unusedBytes": 4971,
            "children": [
              {
                "name": "elements/util/util-analytics/util-analytics.html_script_0.js",
                "resourceBytes": 5567,
                "unusedBytes": 4558
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 5717,
                "unusedBytes": 413
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'alerts-manager'%2CdesignId%3A'AM2'%2Calerts%3A%5B%5D%2C%2F%2F%20Life%20cycle%20methods%0Aready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(!(window.ga_data%26%26window.ga_data.route%26%26window.ga_data.route.sponsorStory))%7B%2F%2F%20force%20test%20alert%20with%20qsp%20'%3Fshow_alert%3Dtrue'%20in%20lower%20envs%0Aif(ga_data.utils.getUrlParamValue('show_alert')%26%26(ga_data.server.environment%3D%3D%3D'sandbox'%7C%7Cga_data.server.environment%3D%3D%3D'preprod'))%7Bvar%20testAlert%3D%7BalertId%3A123%2CalertType%3A'breaking'%2CbannerShown%3Atrue%2CbannerText%3A'This%20is%20an%20alert%20forced%20by%20using%20a%20QSP%20value%2C%20for%20the%20purpose%20of%20functional%20and%20product%20testing.'%2CbannerUrl%3Aga_data.site.publicationURL%7D%3Bthis._setBanner(testAlert)%3B%7Delse%7B%2F%2F%20Fetch%20alerts%20if%20available%0APolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bvar%20url%3Dga_data.utils.getNested(ga_data%2C'site'%2C'breakingNews'%2C'api'%2C'url')%2Ckey%3Dga_data.utils.getNested(ga_data%2C'site'%2C'breakingNews'%2C'api'%2C'key')%3Bif(!(url%26%26key))return%3Burl%2B%3D(url.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2B'apiKey%3D'%2Bkey%2B'%26site-code%3D'%2Bga_data.site.uaid%3B_this._getAlerts(url)%3B%7D%2C%5B%5D)%3B%7D%7D%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this2%3Dthis%3Bwindow.addEventListener('messageEvent'%2Cfunction(event)%7Breturn%20_this2._handleCustomAlert(event)%3B%7D)%3B%7D%2C%2F%2F%20Public%0AgetActiveAlerts%3Afunction%20getActiveAlerts()%7Breturn%20this.alerts%3Fthis.alerts.filter(function(alert)%7Breturn%20alert.active%3D%3D%3Dtrue%3B%7D)%3A%5B%5D%3B%7D%2CmarkAlertInactive%3Afunction%20markAlertInactive(id)%7Bvar%20_this3%3Dthis%3Bthis.alerts.forEach(function(alert)%7Bif(alert.alertId%3D%3D%3Did)%7Balert.active%3Dfalse%3B_this3._storeAlerts()%3B%7D%7D)%3Bif(this._checkAllAlertsExpired())%7Bthis.dispatchEvent(new%20CustomEvent('bannerLeaveBehind'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3A%7Bactivate%3Afalse%7D%7D))%3B%7D%7D%2C%2F%2F%20%22Private%22%0A_getAlerts%3Afunction%20_getAlerts(url)%7Bvar%20_this4%3Dthis%3Bfetch(url).then(function(response)%7Bif(response.ok)%7Bresponse.json().then(function(res)%7Breturn%20_this4._handleResponse(res)%3B%7D)%3B%7D%7D%2Cfunction(error)%7B%2F%2F%20previously%20newrelic%0A%7D)%3B%7D%2C_checkAllAlertsExpired%3Afunction%20_checkAllAlertsExpired()%7Bthis.alerts.forEach(function(alert)%7Bif(alert.active!%3D%3Dfalse)%7Breturn%20false%3B%7D%7D)%3Breturn%20true%3B%7D%2C_handleResponse%3Afunction%20_handleResponse(response)%7Bvar%20banners%3Dga_data.utils.getNested(response%2C'data'%2C'searchBanners'%2C'banners')%3Bif(banners%26%26banners.length%3E0)%7Bvar%20i%3D0%2Clen%3Dvoid%200%3Bfor(i%2Clen%3Dbanners.length%3Bi%3Clen%3Bi%2B%2B)%7Bvar%20cached%3Dthis._getItemInStorage(''%2Bbanners%5Bi%5D.id)%2Cdismissed%3Dcached%3Fcached.dismissed%3A''%2Ctype%3Dbanners%5Bi%5D.isBreakingNews%3F'breaking'%3A'developing'%3Bif(banners%5Bi%5D.headline)%7Bthis.alerts.push(%7BbannerText%3Abanners%5Bi%5D.headline%2CbannerUrl%3Abanners%5Bi%5D.associatedUrl%2CalertId%3A''%2Bbanners%5Bi%5D.id%2Cactive%3Atrue%2CbannerShown%3A!!cached%2Cdismissed%3Adismissed%2CalertType%3Atype%7D)%3B%7D%7Dthis._checkAlerts()%3B%7D%7D%2C_handleCustomAlert%3Afunction%20_handleCustomAlert(event)%7Bvar%20alert%3Devent.detail.alert%7C%7C%5B%5D%3Bif(alert.bannerText)%7Bvar%20cached%3Dthis._getItemInStorage(''%2Balert.alertId)%2Cactive%3Dcached%3Fcached.active%3Atrue%2Cdismissed%3Dcached%3Fcached.dismissed%3A''%2Cexp%3Dalert.alertExpiration%7C%7C30%3Bthis.alerts.push(%7BbannerText%3Aalert.bannerText%2CbannerUrl%3Aalert.bannerUrl%2CalertId%3A''%2Balert.alertId%2Cexpiration%3Aexp%2Cactive%3Aactive%2CbannerShown%3A!!cached%2Cdismissed%3Adismissed%2CalertType%3A'custom-'%2Balert.alertId%7D)%3B%7Dthis._checkAlerts()%3B%7D%2C_checkAlerts%3Afunction%20_checkAlerts()%7Bif(this.%24%24('alerts-banner'))return%3Bvar%20nextBanner%3Dthis._getNextShowable()%3Bthis.%24.container.hidden%3DnextBanner%3D%3D%3Dundefined%3Bif(nextBanner)this._setBanner(nextBanner)%3B%7D%2C_setBanner%3Afunction%20_setBanner(alert)%7Bvar%20bannerEl%3Ddocument.createElement('alerts-banner')%3BbannerEl.id%3D'banner-'%2Balert.alertId%3BbannerEl.setAttribute('banner-text'%2Calert.bannerText)%3BbannerEl.setAttribute('alert-id'%2Calert.alertId)%3BbannerEl.setAttribute('banner-url'%2Calert.bannerUrl)%3BbannerEl.setAttribute('alert-type'%2Calert.alertType)%3Bthis.%24.container.appendChild(bannerEl)%3Bthis._setEventListeners(bannerEl)%3Bthis.%24.container.classList.remove('no-alerts')%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2Falerts%2Falerts-banner%2Falerts-banner.html'%2Cfunction()%7BbannerEl.showBanner()%3B%7D%2Cnull%2Ctrue)%3B%7D%2C_removeEventListeners%3Afunction%20_removeEventListeners(bannerElement)%7BbannerElement.removeEventListener('bannerDismissed'%2Cthis.listeners.bannerDismissed)%3BbannerElement.removeEventListener('bannerTimeout'%2Cthis.listeners.bannerTimeout)%3BbannerElement.removeEventListener('bannerClicked'%2Cthis.listeners.bannerClicked)%3B%7D%2C_setEventListeners%3Afunction%20_setEventListeners(bannerElement)%7Bvar%20_this5%3Dthis%3Bthis.listeners%3D%7B'bannerDismissed'%3Afunction%20bannerDismissed(event)%7Breturn%20_this5._onBannerClosed(event)%3B%7D%2C'bannerTimeout'%3Afunction%20bannerTimeout(event)%7Breturn%20_this5._onBannerTimeout(event)%3B%7D%2C'bannerClicked'%3Afunction%20bannerClicked(event)%7Breturn%20_this5._onBannerClicked(event)%3B%7D%7D%3BbannerElement.addEventListener('bannerDismissed'%2Cthis.listeners.bannerDismissed)%3BbannerElement.addEventListener('bannerTimeout'%2Cthis.listeners.bannerTimeout)%3BbannerElement.addEventListener('bannerClicked'%2Cthis.listeners.bannerClicked)%3B%7D%2C_onBannerClicked%3Afunction%20_onBannerClicked(e)%7Bvar%20alertId%3De.target.getAttribute('alert-id')%2Ctype%3De.target.getAttribute('alert-type')%3Bthis.%24.analytics.fireEvent('alert%3Abanner%3A'%2Btype%2B'%3Aclick'%2C%7Bid%3AalertId%7D)%3Bthis._setBannerShown(alertId)%3Bthis._storeAlerts()%3B%7D%2C_onBannerClosed%3Afunction%20_onBannerClosed(e)%7Bvar%20alertId%3De.target.getAttribute('alert-id')%2Ctype%3De.target.getAttribute('alert-type')%3Bthis.%24.analytics.fireEvent('alert%3Abanner%3A'%2Btype%2B'%3Aclose'%2C%7Bid%3AalertId%7D)%3Bthis._destroyBanner(alertId%2Ce.target)%3B%7D%2C_onBannerTimeout%3Afunction%20_onBannerTimeout(e)%7Bvar%20alertId%3De.target.getAttribute('alert-id')%2Ctype%3De.target.getAttribute('alert-type')%3Bthis.%24.analytics.fireEvent('alert%3Abanner%3A'%2Btype%2B'%3Atimeout'%2C%7Bid%3AalertId%7D)%3Bthis._destroyBanner(alertId%2Ce.target)%3B%7D%2C_getList%3Afunction%20_getList()%7Bvar%20list%3Dwindow.localStorage%3Fwindow.localStorage.getItem('dismissedAlertIDs')%3Afalse%3Breturn%20list%26%26list.length%3FJSON.parse(list)%3A%5B%5D%3B%7D%2C_destroyBanner%3Afunction%20_destroyBanner(id%2CbannerEl)%7Bthis.dispatchEvent(new%20CustomEvent('bannerLeaveBehind'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3A%7Bactivate%3Atrue%7D%7D))%3Bthis._removeEventListeners(bannerEl)%3Bthis.%24.container.removeChild(bannerEl)%3Bthis._setBannerShown(id)%3Bthis._storeAlerts()%3Bthis._checkAlerts()%3B%7D%2C_setBannerShown%3Afunction%20_setBannerShown(id)%7Bthis.alerts.forEach(function(alert)%7Bif(alert.alertId%3D%3D%3Did)%7Balert.bannerShown%3Dtrue%3B%7D%7D)%3B%7D%2C_getNextShowable%3Afunction%20_getNextShowable()%7Bvar%20found%3Dvoid%200%3Bthis.alerts.forEach(function(alert)%7Bif(!alert.bannerShown%26%26alert.active)found%3Dalert%3B%7D)%3Breturn%20found%3B%7D%2C_getItemAge%3Afunction%20_getItemAge(item)%7Bvar%20diff%3Dnew%20Date().getTime()-item.dismissed%3Breturn%20Math.ceil(diff%2F(1000*3600*24))%3B%7D%2C_getItemInStorage%3Afunction%20_getItemInStorage(id)%7Bvar%20i%3D0%2Clen%3Dvoid%200%2Clist%3Dthis._getList()%3Bfor(i%2Clen%3Dlist.length%3Bi%3Clen%3Bi%2B%2B)%7Bif(list%5Bi%5D.id%3D%3D%3Did)return%20list%5Bi%5D%3B%2F%2F%20item%20in%20localStorage%0A%7Dreturn%20null%3B%2F%2F%20item%20not%20in%20localStorage%0A%7D%2C_storeAlerts%3Afunction%20_storeAlerts()%7Bvar%20_this6%3Dthis%3Bif(!window.localStorage)return%3Bvar%20list%3D%5B%5D%2Ctimestamp%3Dnew%20Date().getTime()%3Bthis.alerts.forEach(function(alert)%7Bvar%20dismissed%3Dalert.dismissed%3F_this6._getItemAge(alert)%3A0%2Cexp%3Dalert.expiration%7C%7C1%2CisExpired%3Ddismissed%3E%3Dexp%3Bif(alert.bannerShown%26%26!isExpired)%7Blist.push(%7Bdismissed%3Atimestamp%2Cexpiration%3Aexp%2Cid%3Aalert.alertId%2Cactive%3Aalert.active%7D)%3B%7D%7D)%3Btry%7Bwindow.localStorage.setItem('dismissedAlertIDs'%2CJSON.stringify(list))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Falerts%2Falerts-manager%2Falerts-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Falerts%2Falerts-manager%2Falerts-manager.html.js%0A",
            "resourceBytes": 7418,
            "encodedBytes": 0,
            "unusedBytes": 6704,
            "children": [
              {
                "name": "elements/alerts/alerts-manager/alerts-manager.html_script_0.js",
                "resourceBytes": 7161,
                "unusedBytes": 6704
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 257
              }
            ]
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/intl-messageformat/dist/intl-messageformat.min.js",
            "resourceBytes": 16323,
            "encodedBytes": 5022,
            "unusedBytes": 14439
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F*global%20IntlMessageFormat%20*%2Fwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.GalliumI18n%20*%2Fwindow.ga_data.behaviors.GalliumI18n%3D%7Bproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20language%20used%20for%20translation.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Flanguage%3A%7Btype%3AString%2Cvalue%3Awindow.ga_data.site.language%7C%7C'en'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20In%20some%20circumstances%2C%20specific%20overrides%20are%20needed%20per-site.%20This%20is%20where%20you%20define%20that.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Should%20typically%20be%20a%20site%20code.%20(e.g.%20PCIN)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Foverrides%3A%7Btype%3AString%2Cvalue%3Awindow.ga_data.site.l10n%7C%7Cnull%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20dictionary%20of%20localized%20messages%20defined%20by%20the%20module%2C%20for%20each%20of%20the%20languages%20that%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20are%20going%20to%20be%20used.%20See%20http%3A%2F%2Fformatjs.io%2Fguides%2Fmessage-syntax%2F%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20more%20information%20on%20the%20message%20syntax.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20For%20example%2C%20a%20valid%20dictionary%20would%20be%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this.l10n%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20'en'%3A%20%7B%20'greeting'%3A%20'Hello!'%20%7D%2C%20'es'%20%3A%20%7B%20'greeting'%3A%20'Bonjour!'%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fl10n%3A%7Btype%3AObject%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Optional%20dictionary%20of%20user%20defined%20formats%2C%20as%20explained%20here%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fformatjs.io%2Fguides%2Fmessage-syntax%2F%23custom-formats%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20For%20example%2C%20a%20valid%20dictionary%20of%20formats%20would%20be%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this.formats%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20%20%20number%3A%20%7B%20USD%3A%20%7B%20style%3A%20'currency'%2C%20currency%3A%20'USD'%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fformats%3A%7Btype%3AObject%2Cvalue%3Afunction%20value()%7Breturn%7B%7D%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Translates%20a%20string%20to%20the%20current%20%60language%60.%20Any%20parameters%20to%20the%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20string%20should%20be%20passed%20in%20order%2C%20as%20follows%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%60localize(stringKey%2C%20param1Name%2C%20param1Value%2C%20param2Name%2C%20param2Value)%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Flocalize%3A%7Btype%3AFunction%2Ccomputed%3A'__computeLocalize(language%2C%20l10n%2C%20formats)'%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Upon%20attachment%2C%20if%20this%20site%20has%20custom%20copy%2C%20lets%20load%20it%20from%20an%20external%20resource.%0A%20%20%20%20%20%20%20%20*%2Fattached%3Afunction%20attached()%7Bif(this.overrides)%7Bthis.loadL10nResources()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20a%20computed%20%60localize%60%20method%2C%20based%20on%20the%20current%20%60language%60.%0A%20%20%20%20%20%20%20%20%20*%2F__computeLocalize%3Afunction%20__computeLocalize(language%2Cl10n%2Cformats)%7Bvar%20proto%3Dthis.constructor.prototype%3Bthis.__checkLocalizationCache(proto)%3B%2F%2F%20Every%20time%20any%20of%20the%20parameters%20change%2C%20invalidate%20the%20strings%20cache.%0Aproto.__localizationCache.messages%3D%7B%7D%3Breturn%20function()%7Bvar%20key%3Darguments%5B0%5D%3Bif(!key%7C%7C!l10n%7C%7C!language%7C%7C!l10n%5Blanguage%5D)return%3B%2F%2F%20Cache%20the%20key%2Fvalue%20pairs%20for%20the%20same%20language%2C%20so%20that%20we%20don't%0A%2F%2F%20do%20extra%20work%20if%20we're%20just%20reusing%20strings%20across%20an%20application.%0Avar%20translatedValue%3Dl10n%5Blanguage%5D%5Bkey%5D%3Bif(!translatedValue)%7B%2F%2F%20A%20complete%20miss%20happened.%20Return%20empty%20value%20%26%20notify%20the%20console.%0A%2F%2Fconsole.warn('WARNING%3A%20A%20localization%20value%20was%20missing%20for%20component%3A%20'%2C%20this.localName%2C%20'key%3A%20'%2C%20key%2C%20'language%3A%20'%2C%20language)%3B%0Areturn''%3B%7Dvar%20messageKey%3Dkey%2BtranslatedValue%3Bvar%20translatedMessage%3Dproto.__localizationCache.messages%5BmessageKey%5D%3Bif(!translatedMessage)%7BtranslatedMessage%3Dnew%20IntlMessageFormat(translatedValue%2Clanguage%2Cformats)%3Bproto.__localizationCache.messages%5BmessageKey%5D%3DtranslatedMessage%3B%7Dvar%20args%3D%7B%7D%3Bfor(var%20i%3D1%3Bi%3Carguments.length%3Bi%2B%3D2)%7Bargs%5Barguments%5Bi%5D%5D%3Darguments%5Bi%2B1%5D%3B%7Dreturn%20translatedMessage.format(args)%3B%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Fetches%20remote%20l10n%20resource%20from%20the%20CDN.%20If%20multiple%20components%20request%20the%20same%20resource%2C%0A%20%20%20%20%20%20%20%20*%20they'll%20received%20a%20cached%20version.%0A%20%20%20%20%20%20%20%20*%2FloadL10nResources%3Afunction%20loadL10nResources()%7Bvar%20path%3D'https%3A%2F%2Fwww.gannett-cdn.com%2Fgannett-web%2Fconfig%2Fl10n%2F'%2Bthis.overrides%2B'.json'%3Bvar%20proto%3Dthis.constructor.prototype%3Bthis.__checkLocalizationCache(proto)%3B%2F%2F%20If%20the%20global%20ajax%20object%20has%20not%20been%20initialized%2C%20initialize%20and%20cache%20it.%0Avar%20ajax%3Dproto.__localizationCache.ajax%3Bif(!ajax)%7Bajax%3Dproto.__localizationCache.ajax%3Ddocument.createElement('iron-ajax')%3B%7Dvar%20request%3Dproto.__localizationCache.requests%5Bpath%5D%3Bif(!request)%7Bajax.url%3Dpath%3Bvar%20req%3Dajax.generateRequest()%3Breq.completes.then(this.__onRequestResponse.bind(this)%2Cthis.__onRequestError.bind(this))%3B%2F%2F%20Cache%20the%20instance%20so%20that%20it%20can%20be%20reused%20if%20the%20same%20path%20is%20loaded.%0Aproto.__localizationCache.requests%5Bpath%5D%3Dreq%3B%7Delse%7Brequest.completes.then(this.__onRequestResponse.bind(this)%2Cthis.__onRequestError.bind(this))%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20If%20we%20fetch%20external%20l10n%2C%20we%20need%20to%20intelligently%20merge%20it%20in%20with%20this%20components%20l10n.%0A%20%20%20%20%20%20%20%20*%20In%20the%20external%20resources%2C%20they%20are%20required%20to%20prefix%20all%20keys%20with%20the%20components%20name%0A%20%20%20%20%20%20%20%20*%20(e.g.%20el-social-sharing)%2C%20so%20%60share-this-page%60%20INSIDE%20the%20component%20matches%0A%20%20%20%20%20%20%20%20*%20with%20%60el-social-sharing.share-this-page%60%20in%20the%20external%20l10n%20file.%0A%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20*%20We%20only%20perform%20the%20computation%20on%20the%20current%20language.%20Other%20languages%20do%20not%20get%20merged%20in%20for%20performance.%0A%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20*%20This%20causes%20a%20re-computation%20and%20dirties%20the%20element.%0A%20%20%20%20%20%20%20%20*%2F__onRequestResponse%3Afunction%20__onRequestResponse(event)%7Bvar%20response%3Devent.response%3B%2F%2F%20Deeply%20merge%20the%20response%0Avar%20l10nCache%3Dthis.l10n%7C%7C%7B%7D%3Bfor(var%20elName%20in%20l10nCache%5Bthis.language%5D)%7Bvar%20externalLocalizedResource%3Dresponse%5Bthis.language%5D%5Bthis.localName%2B'.'%2BelName%5D%3Bif(externalLocalizedResource)%7Bl10nCache%5Bthis.language%5D%5BelName%5D%3DexternalLocalizedResource%3B%7D%7D%2F%2F%20Force%20a%20re-compute%20by%20setting%20to%20null%20then%20its%20actual%20new%20value.%0Athis.l10n%3Dnull%3Bthis.l10n%3Dl10nCache%3B%7D%2C__onRequestError%3Afunction%20__onRequestError(event)%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Uh%20oh!%20There's%20really%20no%20recovering%20from%20this%20error.%20Lets%20just%20try%20our%20best%20with%20what%20we%20have%20%C2%AF%5C_(%E3%83%84)_%2F%C2%AF%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Pray%20that%20the%20component%20has%20all%20the%20needed%20copy.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F%2F%2F%20console.warn('WARNING%3A%20The%20external%20localization%20resource%20for%20this%20site%20failed.')%3B%0A%7D%2C__checkLocalizationCache%3Afunction%20__checkLocalizationCache(proto)%7B%2F%2F%20do%20nothing%20if%20proto%20is%20undefined.%0Aif(proto%3D%3D%3Dundefined)return%3B%2F%2F%20In%20the%20event%20proto%20not%20have%20__localizationCache%20object%2C%20create%20it.%0Aif(proto%5B'__localizationCache'%5D%3D%3D%3Dundefined)%7Bproto%5B'__localizationCache'%5D%3D%7Brequests%3A%7B%7D%2Cmessages%3A%7B%7D%2Cajax%3Anull%7D%3B%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fgallium-i18n.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fgallium-i18n.html.js%0A",
            "resourceBytes": 6175,
            "encodedBytes": 0,
            "unusedBytes": 2888,
            "children": [
              {
                "name": "gallium/behaviors/gallium-i18n.html_script_0.js",
                "resourceBytes": 3485,
                "unusedBytes": 2888
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 2690
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-icon'%2CdesignId%3A'UI9'%2Cproperties%3A%7BiconName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CimgSource%3A%7Btype%3AString%2Cvalue%3A''%7D%2CiconFull%3A%7Btype%3AString%2Ccomputed%3A'_makeIcon(iconName%2C%20imgSource%2C%20svgResize)'%7D%2CsvgResize%3A%7Btype%3ANumber%7D%7D%2C_makeIcon%3Afunction%20_makeIcon(iconName%2CimgSource%2CsvgResize)%7Bif(iconName)%7Bvar%20iconData%3Dthis.%24.iconMap.querySelector('%23'%2BiconName)%3B%2F%2F%20if%20we%20have%20an%20icon%20name%20and%20it%20matches%20one%20of%20the%20ids%20above%0Aif(iconData)%7Bvar%20container%3Dthis.%24.iconCont%2C%2F%2F%20iconVBs%20are%20on%20end%20of%20every%20iconName%0AiconVB%3DiconName.slice(-2)%2Csvg%3Dthis.%24.iconSVG%3Bwhile(svg.firstChild)%7Bsvg.removeChild(svg.firstChild)%3B%7D%2F%2F%20If%20the%20icon%20is%20already%20filled%20(ie%20its%20changing)%2C%20deletes%20current%20data%0Asvg.setAttribute('viewBox'%2C'0%200%20'%2BiconVB%2B'%20'%2BiconVB)%3Bcontainer.removeAttribute('class')%3B%2F%2F%20backwards%20compatibility%20-%20only%20add%20class%20if%20we%20don't%20have%20a%20width%20and%20height%20ruleset%20on%20%60this%60%20instance%0Aif(!svgResize)%7Bvar%20style%3Dwindow.getComputedStyle(this)%3Bif((style.width%3D%3D%3D'auto'%7C%7Cstyle.width%3D%3D%3D'')%26%26(style.height%3D%3D%3D'auto'%7C%7Cstyle.height%3D%3D%3D''))%7Bcontainer.classList.add('ic-'%2BiconVB)%3B%7D%7Delse%7Bcontainer.style.width%3Dthis.svgResize%2B'px'%3Bcontainer.style.height%3Dthis.svgResize%2B'px'%3B%7D%2F%2F%20cloning%20the%20first%20child%20so%20it%20can%20be%20deleted%20without%20affecting%20iconMap%0Asvg.appendChild(iconData.cloneNode(true))%3Bcontainer.hidden%3Dfalse%3B%7D%7Delse%7Bthis.%24.externalImage.hidden%3D!imgSource%3B%7Dreturn''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-icon%2Fui-icon.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-icon%2Fui-icon.html.js%0A",
            "resourceBytes": 1553,
            "encodedBytes": 0,
            "children": [
              {
                "name": "elements/ui/ui-icon/ui-icon.html_script_0.js",
                "resourceBytes": 1332
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 221
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20%2F**%0A%20%20Polymer.IronFormElementBehavior%20enables%20a%20custom%20element%20to%20be%20included%0A%20%20in%20an%20%60iron-form%60.%0A%0A%20%20Events%20%60iron-form-element-register%60%20and%20%60iron-form-element-unregister%60%20are%20not%20fired%20on%20Polymer%202.0.%0A%0A%20%20%40demo%20demo%2Findex.html%0A%20%20%40polymerBehavior%0A%20%20*%2F%0A%20%20Polymer.IronFormElementBehavior%20%3D%20%7B%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Fired%20when%20the%20element%20is%20added%20to%20an%20%60iron-form%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20iron-form-element-register%0A%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Fired%20when%20the%20element%20is%20removed%20from%20an%20%60iron-form%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20iron-form-element-unregister%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20name%20of%20this%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20name%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20value%20for%20this%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20mark%20the%20input%20as%20required.%20If%20used%20in%20a%20form%2C%20a%0A%20%20%20%20%20%20%20*%20custom%20element%20that%20uses%20this%20behavior%20should%20also%20use%0A%20%20%20%20%20%20%20*%20Polymer.IronValidatableBehavior%20and%20define%20a%20custom%20validation%20method.%0A%20%20%20%20%20%20%20*%20Otherwise%2C%20a%20%60required%60%20element%20will%20always%20be%20considered%20valid.%0A%20%20%20%20%20%20%20*%20It's%20also%20strongly%20recommended%20to%20provide%20a%20visual%20style%20for%20the%20element%0A%20%20%20%20%20%20%20*%20when%20its%20value%20is%20invalid.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20required%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20form%20that%20the%20element%20is%20registered%20to.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20_parentForm%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20Polymer.Element%20%3F%20null%20%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Note%3A%20the%20iron-form%20that%20this%20element%20belongs%20to%20will%20set%20this%0A%20%20%20%20%20%20%2F%2F%20element's%20_parentForm%20property%20when%20handling%20this%20event.%0A%20%20%20%20%20%20this.fire('iron-form-element-register')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20detached%3A%20Polymer.Element%20%3F%20null%20%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this._parentForm)%20%7B%0A%20%20%20%20%20%20%20%20this._parentForm.fire('iron-form-element-unregister'%2C%20%7Btarget%3A%20this%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%7D%3B%0A%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-form-element-behavior%2Firon-form-element-behavior.html.js%0A",
            "resourceBytes": 2043,
            "encodedBytes": 0,
            "unusedBytes": 338
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%0A%20%20%20%20(function()%20%7B%0A%20%20%20%20%20%20'use%20strict'%3B%0A%0A%20%20%20%20%20%20Polymer.IronA11yAnnouncer%20%3D%20Polymer(%7B%0A%20%20%20%20%20%20%20%20is%3A%20'iron-a11y-announcer'%2C%0A%0A%20%20%20%20%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20The%20value%20of%20mode%20is%20used%20to%20set%20the%20%60aria-live%60%20attribute%0A%20%20%20%20%20%20%20%20%20%20%20*%20for%20the%20element%20that%20will%20be%20announced.%20Valid%20values%20are%3A%20%60off%60%2C%0A%20%20%20%20%20%20%20%20%20%20%20*%20%60polite%60%20and%20%60assertive%60.%0A%20%20%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20%20%20mode%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20'polite'%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20_text%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(!Polymer.IronA11yAnnouncer.instance)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Polymer.IronA11yAnnouncer.instance%20%3D%20this%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20document.body.addEventListener('iron-announce'%2C%20this._onIronAnnounce.bind(this))%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Cause%20a%20text%20string%20to%20be%20announced%20by%20screen%20readers.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20text%20The%20text%20that%20should%20be%20announced.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20announce%3A%20function(text)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._text%20%3D%20''%3B%0A%20%20%20%20%20%20%20%20%20%20this.async(function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._text%20%3D%20text%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20100)%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20_onIronAnnounce%3A%20function(event)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(event.detail%20%26%26%20event.detail.text)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.announce(event.detail.text)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20Polymer.IronA11yAnnouncer.instance%20%3D%20null%3B%0A%0A%20%20%20%20%20%20Polymer.IronA11yAnnouncer.requestAvailability%20%3D%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!Polymer.IronA11yAnnouncer.instance)%20%7B%0A%20%20%20%20%20%20%20%20%20%20Polymer.IronA11yAnnouncer.instance%20%3D%20document.createElement('iron-a11y-announcer')%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20document.body.appendChild(Polymer.IronA11yAnnouncer.instance)%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D)()%3B%0A%0A%20%20%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-a11y-announcer%2Firon-a11y-announcer.html.js%0A",
            "resourceBytes": 1812,
            "encodedBytes": 0,
            "unusedBytes": 755
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%0A%20%20(function()%20%7B%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20type%3A%20(string%7Cnull%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20key%3A%20(string%7Cnull%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20value%3A%20*%2C%0A%20%20%20%20%20*%20%7D%3D%7D%20options%0A%20%20%20%20%20*%2F%0A%20%20%20%20Polymer.IronMeta%20%3D%20function(options)%20%7B%0A%20%20%20%20%20%20Polymer.IronMeta%5B'%20'%5D(options)%3B%0A%0A%20%20%20%20%20%20this.type%20%3D%20(options%20%26%26%20options.type)%20%7C%7C%20'default'%3B%0A%20%20%20%20%20%20this.key%20%3D%20options%20%26%26%20options.key%3B%0A%20%20%20%20%20%20if%20(options%20%26%26%20'value'%20in%20options)%20%7B%0A%20%20%20%20%20%20%20%20this.value%20%3D%20options.value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20%2F%2F%20This%20function%20is%20used%20to%20convince%20Closure%20not%20to%20remove%20constructor%20calls%0A%20%20%20%20%2F%2F%20for%20instances%20that%20are%20not%20held%20anywhere.%20For%20example%2C%20when%0A%20%20%20%20%2F%2F%20%60new%20Polymer.IronMeta(%7B...%7D)%60%20is%20used%20only%20for%20the%20side%20effect%20of%20adding%0A%20%20%20%20%2F%2F%20a%20value.%0A%20%20%20%20Polymer.IronMeta%5B'%20'%5D%20%3D%20function()%7B%7D%3B%0A%0A%20%20%20%20Polymer.IronMeta.types%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20Polymer.IronMeta.prototype%20%3D%20%7B%0A%20%20%20%20%20%20get%20value()%20%7B%0A%20%20%20%20%20%20%20%20var%20type%20%3D%20this.type%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20this.key%3B%0A%0A%20%20%20%20%20%20%20%20if%20(type%20%26%26%20key)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20Polymer.IronMeta.types%5Btype%5D%20%26%26%20Polymer.IronMeta.types%5Btype%5D%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20set%20value(value)%20%7B%0A%20%20%20%20%20%20%20%20var%20type%20%3D%20this.type%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20this.key%3B%0A%0A%20%20%20%20%20%20%20%20if%20(type%20%26%26%20key)%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%20%3D%20Polymer.IronMeta.types%5Btype%5D%20%3D%20Polymer.IronMeta.types%5Btype%5D%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(value%20%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20type%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20type%5Bkey%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20get%20list()%20%7B%0A%20%20%20%20%20%20%20%20var%20type%20%3D%20this.type%3B%0A%0A%20%20%20%20%20%20%20%20if%20(type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20items%20%3D%20Polymer.IronMeta.types%5Bthis.type%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!items)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20return%20Object.keys(items).map(function(key)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20metaDatas%5Bthis.type%5D%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20byKey%3A%20function(key)%20%7B%0A%20%20%20%20%20%20%20%20this.key%20%3D%20key%3B%0A%20%20%20%20%20%20%20%20return%20this.value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20metaDatas%20%3D%20Polymer.IronMeta.types%3B%0A%0A%20%20%20%20Polymer(%7B%0A%0A%20%20%20%20%20%20is%3A%20'iron-meta'%2C%0A%0A%20%20%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20type%20of%20meta-data.%20%20All%20meta-data%20of%20the%20same%20type%20is%20stored%0A%20%20%20%20%20%20%20%20%20*%20together.%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7Bstring%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%20%20value%3A%20'default'%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20key%20used%20to%20store%20%60value%60%20under%20the%20%60type%60%20namespace.%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7B%3Fstring%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20key%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20meta-data%20to%20store%20or%20retrieve.%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7B*%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20If%20true%2C%20%60value%60%20is%20set%20to%20the%20iron-meta%20instance%20itself.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20%20self%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20%20%20observer%3A%20'_selfChanged'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20__meta%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20%20%20computed%3A%20'__computeMeta(type%2C%20key%2C%20value)'%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20%20%20hidden%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20__computeMeta%3A%20function(type%2C%20key%2C%20value)%20%7B%0A%20%20%20%20%20%20%20%20var%20meta%20%3D%20new%20Polymer.IronMeta(%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20type%2C%0A%20%20%20%20%20%20%20%20%20%20key%3A%20key%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20if%20(value%20!%3D%3D%20undefined%20%26%26%20value%20!%3D%3D%20meta.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20meta.value%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.value%20!%3D%3D%20meta.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.value%20%3D%20meta.value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20return%20meta%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20get%20list()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.__meta%20%26%26%20this.__meta.list%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_selfChanged%3A%20function(self)%20%7B%0A%20%20%20%20%20%20%20%20if%20(self)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.value%20%3D%20this%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Retrieves%20meta%20data%20value%20by%20key.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40method%20byKey%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20key%20The%20key%20of%20the%20meta-data%20to%20be%20returned.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20byKey%3A%20function(key)%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20Polymer.IronMeta(%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20this.type%2C%0A%20%20%20%20%20%20%20%20%20%20key%3A%20key%0A%20%20%20%20%20%20%20%20%7D).value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%7D)()%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-meta%2Firon-meta.html.js%0A",
            "resourceBytes": 3838,
            "encodedBytes": 0,
            "unusedBytes": 1798
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20%2F**%0A%20%20%20*%20Singleton%20IronMeta%20instance.%0A%20%20%20*%2F%0A%20%20Polymer.IronValidatableBehaviorMeta%20%3D%20null%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%60Use%20Polymer.IronValidatableBehavior%60%20to%20implement%20an%20element%20that%20validates%20user%20input.%0A%20%20%20*%20Use%20the%20related%20%60Polymer.IronValidatorBehavior%60%20to%20add%20custom%20validation%20logic%20to%20an%20iron-input.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20an%20%60%3Ciron-form%3E%60%20element%20validates%20its%20fields%20when%20the%20user%20presses%20the%20submit%20button.%0A%20%20%20*%20To%20validate%20a%20form%20imperatively%2C%20call%20the%20form's%20%60validate()%60%20method%2C%20which%20in%20turn%20will%0A%20%20%20*%20call%20%60validate()%60%20on%20all%20its%20children.%20By%20using%20%60Polymer.IronValidatableBehavior%60%2C%20your%0A%20%20%20*%20custom%20element%20will%20get%20a%20public%20%60validate()%60%2C%20which%0A%20%20%20*%20will%20return%20the%20validity%20of%20the%20element%2C%20and%20a%20corresponding%20%60invalid%60%20attribute%2C%0A%20%20%20*%20which%20can%20be%20used%20for%20styling.%0A%20%20%20*%0A%20%20%20*%20To%20implement%20the%20custom%20validation%20logic%20of%20your%20element%2C%20you%20must%20override%0A%20%20%20*%20the%20protected%20%60_getValidity()%60%20method%20of%20this%20behaviour%2C%20rather%20than%20%60validate()%60.%0A%20%20%20*%20See%20%5Bthis%5D(https%3A%2F%2Fgithub.com%2FPolymerElements%2Firon-form%2Fblob%2Fmaster%2Fdemo%2Fsimple-element.html)%0A%20%20%20*%20for%20an%20example.%0A%20%20%20*%0A%20%20%20*%20%23%23%23%20Accessibility%0A%20%20%20*%0A%20%20%20*%20Changing%20the%20%60invalid%60%20property%2C%20either%20manually%20or%20by%20calling%20%60validate()%60%20will%20update%20the%0A%20%20%20*%20%60aria-invalid%60%20attribute.%0A%20%20%20*%0A%20%20%20*%20%40demo%20demo%2Findex.html%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%2F%0A%20%20Polymer.IronValidatableBehavior%20%3D%20%7B%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Name%20of%20the%20validator%20to%20use.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20validator%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20last%20call%20to%20%60validate%60%20is%20invalid.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20reflectToAttribute%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_invalidChanged'%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20registered%3A%20function()%20%7B%0A%20%20%20%20%20%20Polymer.IronValidatableBehaviorMeta%20%3D%20new%20Polymer.IronMeta(%7Btype%3A%20'validator'%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_invalidChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.invalid)%20%7B%0A%20%20%20%20%20%20%20%20this.setAttribute('aria-invalid'%2C%20'true')%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.removeAttribute('aria-invalid')%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F*%20Recompute%20this%20every%20time%20it's%20needed%2C%20because%20we%20don't%20know%20if%20the%0A%20%20%20%20%20*%20underlying%20IronValidatableBehaviorMeta%20has%20changed.%20*%2F%0A%20%20%20%20get%20_validator()%20%7B%0A%20%20%20%20%20%20return%20Polymer.IronValidatableBehaviorMeta%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Polymer.IronValidatableBehaviorMeta.byKey(this.validator)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20validator%20%60validator%60%20exists.%0A%20%20%20%20%20*%2F%0A%20%20%20%20hasValidator%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20this._validator%20!%3D%20null%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20%60value%60%20is%20valid%2C%20and%20updates%20%60invalid%60.%20If%20you%20want%0A%20%20%20%20%20*%20your%20element%20to%20have%20custom%20validation%20logic%2C%20do%20not%20override%20this%20method%3B%0A%20%20%20%20%20*%20override%20%60_getValidity(value)%60%20instead.%0A%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20value%20Deprecated%3A%20The%20value%20to%20be%20validated.%20By%20default%2C%0A%20%20%20%20%20*%20it%20is%20passed%20to%20the%20validator's%20%60validate()%60%20function%2C%20if%20a%20validator%20is%20set.%0A%20%20%20%20%20*%20If%20this%20argument%20is%20not%20specified%2C%20then%20the%20element's%20%60value%60%20property%0A%20%20%20%20%20*%20is%20used%2C%20if%20it%20exists.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60value%60%20is%20valid.%0A%20%20%20%20%20*%2F%0A%20%20%20%20validate%3A%20function(value)%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20this%20is%20an%20element%20that%20also%20has%20a%20value%20property%2C%20and%20there%20was%0A%20%20%20%20%20%20%2F%2F%20no%20explicit%20value%20argument%20passed%2C%20use%20the%20element's%20property%20instead.%0A%20%20%20%20%20%20if%20(value%20%3D%3D%3D%20undefined%20%26%26%20this.value%20!%3D%3D%20undefined)%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!this._getValidity(this.value)%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!this._getValidity(value)%3B%0A%20%20%20%20%20%20return%20!this.invalid%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20%60value%60%20is%20valid.%20%20By%20default%2C%20it%20is%20passed%0A%20%20%20%20%20*%20to%20the%20validator's%20%60validate()%60%20function%2C%20if%20a%20validator%20is%20set.%20You%0A%20%20%20%20%20*%20should%20override%20this%20method%20if%20you%20want%20to%20implement%20custom%20validity%0A%20%20%20%20%20*%20logic%20for%20your%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20value%20The%20value%20to%20be%20validated.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60value%60%20is%20valid.%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20_getValidity%3A%20function(value)%20%7B%0A%20%20%20%20%20%20if%20(this.hasValidator())%20%7B%0A%20%20%20%20%20%20%20%20return%20this._validator.validate(value)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-validatable-behavior%2Firon-validatable-behavior.html.js%0A",
            "resourceBytes": 4116,
            "encodedBytes": 0,
            "unusedBytes": 984
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20%20%20Polymer(%7B%0A%20%20%20%20%20%20is%3A%20'iron-input'%2C%0A%0A%20%20%20%20%20%20behaviors%3A%20%5B%0A%20%20%20%20%20%20%20%20Polymer.IronValidatableBehavior%0A%20%20%20%20%20%20%5D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Fired%20whenever%20%60validate()%60%20is%20called.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20iron-input-validate%0A%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Use%20this%20property%20instead%20of%20%60value%60%20for%20two-way%20data%20binding%2C%20or%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20a%20default%20value%20for%20the%20input.%20**Do%20not**%20use%20the%20distributed%0A%20%20%20%20%20%20%20%20%20*%20input's%20%60value%60%20property%20to%20set%20a%20default%20value.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20bindValue%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Computed%20property%20that%20echoes%20%60bindValue%60%20(mostly%20used%20for%20Polymer%201.0%0A%20%20%20%20%20%20%20%20%20*%20backcompatibility%2C%20if%20you%20were%20one-way%20binding%20to%20the%20Polymer%201.0%0A%20%20%20%20%20%20%20%20%20*%20%60input%20is%3D%22iron-input%22%60%20value%20attribute).%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20computed%3A%20'_computeValue(bindValue)'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Regex-like%20list%20of%20characters%20allowed%20as%20input%3B%20all%20characters%20not%20in%20the%20list%0A%20%20%20%20%20%20%20%20%20*%20will%20be%20rejected.%20The%20recommended%20format%20should%20be%20a%20list%20of%20allowed%20characters%2C%0A%20%20%20%20%20%20%20%20%20*%20for%20example%2C%20%60%5Ba-zA-Z0-9.%2B-!%3B%3A%5D%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20pattern%20represents%20the%20allowed%20characters%20for%20the%20field%3B%20as%20the%20user%20inputs%20text%2C%0A%20%20%20%20%20%20%20%20%20*%20each%20individual%20character%20will%20be%20checked%20against%20the%20pattern%20(rather%20than%20checking%0A%20%20%20%20%20%20%20%20%20*%20the%20entire%20value%20as%20a%20whole).%20If%20a%20character%20is%20not%20a%20match%2C%20it%20will%20be%20rejected.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Pasted%20input%20will%20have%20each%20character%20checked%20individually%3B%20if%20any%20character%0A%20%20%20%20%20%20%20%20%20*%20doesn't%20match%20%60allowedPattern%60%2C%20the%20entire%20pasted%20string%20will%20be%20rejected.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Note%3A%20if%20you%20were%20using%20%60iron-input%60%20in%201.0%2C%20you%20were%20also%20required%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20%60prevent-invalid-input%60.%20This%20is%20no%20longer%20needed%20as%20of%20Polymer%202.0%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20will%20be%20set%20automatically%20for%20you%20if%20an%20%60allowedPattern%60%20is%20provided.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20allowedPattern%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20auto-validate%20the%20input%20value%20as%20you%20type.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20autoValidate%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20*%20The%20native%20input%20element.%0A%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20_inputElement%3A%20Object%2C%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20observers%3A%20%5B%0A%20%20%20%20%20%20%20%20'_bindValueChanged(bindValue%2C%20_inputElement)'%0A%20%20%20%20%20%20%5D%2C%0A%0A%20%20%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20%20%20'input'%3A%20'_onInput'%2C%0A%20%20%20%20%20%20%20%20'keypress'%3A%20'_onKeypress'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20Polymer.IronA11yAnnouncer.requestAvailability()%3B%0A%20%20%20%20%20%20%20%20this._previousValidInput%20%3D%20''%3B%0A%20%20%20%20%20%20%20%20this._patternAlreadyChecked%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20the%20input%20is%20added%20at%20a%20later%20time%2C%20update%20the%20internal%20reference.%0A%20%20%20%20%20%20%20%20this._observer%20%3D%20Polymer.dom(this).observeNodes(function(info)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._initSlottedInput()%3B%0A%20%20%20%20%20%20%20%20%7D.bind(this))%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20detached%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this._observer)%20%7B%0A%20%20%20%20%20%20%20%20%20%20Polymer.dom(this).unobserveNodes(this._observer)%3B%0A%20%20%20%20%20%20%20%20%20%20this._observer%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20distributed%20%3Cinput%3E%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20get%20inputElement%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20this._inputElement%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_initSlottedInput%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._inputElement%20%3D%20this.getEffectiveChildren()%5B0%5D%3B%0A%0A%20%20%20%20%20%20%20%20if%20(this.inputElement%20%26%26%20this.inputElement.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.bindValue%20%3D%20this.inputElement.value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.fire('iron-input-ready')%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20get%20_patternRegExp()%20%7B%0A%20%20%20%20%20%20%20%20var%20pattern%3B%0A%20%20%20%20%20%20%20%20if%20(this.allowedPattern)%20%7B%0A%20%20%20%20%20%20%20%20%20%20pattern%20%3D%20new%20RegExp(this.allowedPattern)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20switch%20(this.type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%20'number'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20pattern%20%3D%20%2F%5B0-9.%2Ce-%5D%2F%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20pattern%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20_bindValueChanged%3A%20function(bindValue%2C%20inputElement)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20The%20observer%20could%20have%20run%20before%20attached()%20when%20we%20have%20actually%20initialized%0A%20%20%20%20%20%20%20%20%2F%2F%20this%20property.%0A%20%20%20%20%20%20%20%20if%20(!inputElement)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(bindValue%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20inputElement.value%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(bindValue%20!%3D%3D%20inputElement.value)%7B%0A%20%20%20%20%20%20%20%20%20%20this.inputElement.value%20%3D%20bindValue%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(this.autoValidate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.validate()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20manually%20notify%20because%20we%20don't%20want%20to%20notify%20until%20after%20setting%20value%0A%20%20%20%20%20%20%20%20this.fire('bind-value-changed'%2C%20%7Bvalue%3A%20bindValue%7D)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_onInput%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Need%20to%20validate%20each%20of%20the%20characters%20pasted%20if%20they%20haven't%0A%20%20%20%20%20%20%20%20%2F%2F%20been%20validated%20inside%20%60_onKeypress%60%20already.%0A%20%20%20%20%20%20%20%20if%20(this.allowedPattern%20%26%26%20!this._patternAlreadyChecked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20valid%20%3D%20this._checkPatternValidity()%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!valid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._announceInvalidCharacter('Invalid%20string%20of%20characters%20not%20entered.')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.inputElement.value%20%3D%20this._previousValidInput%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.bindValue%20%3D%20this._previousValidInput%20%3D%20this.inputElement.value%3B%0A%20%20%20%20%20%20%20%20this._patternAlreadyChecked%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_isPrintable%3A%20function(event)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20What%20a%20control%2Fprintable%20character%20is%20varies%20wildly%20based%20on%20the%20browser.%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20most%20control%20characters%20(arrows%2C%20backspace)%20do%20not%20send%20a%20%60keypress%60%20event%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20in%20Chrome%2C%20but%20the%20*do*%20on%20Firefox%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20in%20Firefox%2C%20when%20they%20do%20send%20a%20%60keypress%60%20event%2C%20control%20chars%20have%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20a%20charCode%20%3D%200%2C%20keyCode%20%3D%20xx%20(for%20ex.%2040%20for%20down%20arrow)%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20printable%20characters%20always%20send%20a%20keypress%20event.%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20in%20Firefox%2C%20printable%20chars%20always%20have%20a%20keyCode%20%3D%200.%20In%20Chrome%2C%20the%20keyCode%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20always%20matches%20the%20charCode.%0A%20%20%20%20%20%20%20%20%2F%2F%20None%20of%20this%20makes%20any%20sense.%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20For%20these%20keys%2C%20ASCII%20code%20%3D%3D%20browser%20keycode.%0A%20%20%20%20%20%20%20%20var%20anyNonPrintable%20%3D%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%208)%20%20%20%7C%7C%20%20%2F%2F%20backspace%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%209)%20%20%20%7C%7C%20%20%2F%2F%20tab%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2013)%20%20%7C%7C%20%20%2F%2F%20enter%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2027)%3B%20%20%20%20%20%2F%2F%20escape%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20For%20these%20keys%2C%20make%20sure%20it's%20a%20browser%20keycode%20and%20not%20an%20ASCII%20code.%0A%20%20%20%20%20%20%20%20var%20mozNonPrintable%20%3D%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2019)%20%20%7C%7C%20%20%2F%2F%20pause%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2020)%20%20%7C%7C%20%20%2F%2F%20caps%20lock%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2045)%20%20%7C%7C%20%20%2F%2F%20insert%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2046)%20%20%7C%7C%20%20%2F%2F%20delete%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%20144)%20%7C%7C%20%20%2F%2F%20num%20lock%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%20145)%20%7C%7C%20%20%2F%2F%20scroll%20lock%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3E%2032%20%26%26%20event.keyCode%20%3C%2041)%20%20%20%7C%7C%20%2F%2F%20page%20up%2Fdown%2C%20end%2C%20home%2C%20arrows%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3E%20111%20%26%26%20event.keyCode%20%3C%20124)%3B%20%2F%2F%20fn%20keys%0A%0A%20%20%20%20%20%20%20%20return%20!anyNonPrintable%20%26%26%20!(event.charCode%20%3D%3D%200%20%26%26%20mozNonPrintable)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_onKeypress%3A%20function(event)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.allowedPattern%20%26%26%20this.type%20!%3D%3D%20'number')%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20regexp%20%3D%20this._patternRegExp%3B%0A%20%20%20%20%20%20%20%20if%20(!regexp)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Handle%20special%20keys%20and%20backspace%0A%20%20%20%20%20%20%20%20if%20(event.metaKey%20%7C%7C%20event.ctrlKey%20%7C%7C%20event.altKey)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20the%20pattern%20either%20here%20or%20in%20%60_onInput%60%2C%20but%20not%20in%20both.%0A%20%20%20%20%20%20%20%20this._patternAlreadyChecked%20%3D%20true%3B%0A%0A%20%20%20%20%20%20%20%20var%20thisChar%20%3D%20String.fromCharCode(event.charCode)%3B%0A%20%20%20%20%20%20%20%20if%20(this._isPrintable(event)%20%26%26%20!regexp.test(thisChar))%20%7B%0A%20%20%20%20%20%20%20%20%20%20event.preventDefault()%3B%0A%20%20%20%20%20%20%20%20%20%20this._announceInvalidCharacter('Invalid%20character%20'%20%2B%20thisChar%20%2B%20'%20not%20entered.')%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_checkPatternValidity%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20var%20regexp%20%3D%20this._patternRegExp%3B%0A%20%20%20%20%20%20%20%20if%20(!regexp)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20this.inputElement.value.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(!regexp.test(this.inputElement.value%5Bi%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20%60value%60%20is%20valid.%20The%20validator%20provided%20in%20%60validator%60%20will%20be%20used%20first%2C%0A%20%20%20%20%20%20%20*%20then%20any%20constraints.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20value%20is%20valid.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20validate%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.inputElement)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.invalid%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Use%20the%20nested%20input's%20native%20validity.%0A%20%20%20%20%20%20%20%20var%20valid%20%3D%20%20this.inputElement.checkValidity()%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Only%20do%20extra%20checking%20if%20the%20browser%20thought%20this%20was%20valid.%0A%20%20%20%20%20%20%20%20if%20(valid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Empty%2C%20required%20input%20is%20invalid%0A%20%20%20%20%20%20%20%20%20%20if%20(this.required%20%26%26%20this.bindValue%20%3D%3D%3D%20'')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.hasValidator())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20Polymer.IronValidatableBehavior.validate.call(this%2C%20this.bindValue)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!valid%3B%0A%20%20%20%20%20%20%20%20this.fire('iron-input-validate')%3B%0A%20%20%20%20%20%20%20%20return%20valid%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_announceInvalidCharacter%3A%20function(message)%20%7B%0A%20%20%20%20%20%20%20%20this.fire('iron-announce'%2C%20%7B%20text%3A%20message%20%7D)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_computeValue%3A%20function(bindValue)%20%7B%0A%20%20%20%20%20%20%20%20return%20bindValue%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-input%2Firon-input.html.js%0A",
            "resourceBytes": 8981,
            "encodedBytes": 0,
            "unusedBytes": 5822
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20(function()%20%7B%0A%20%20'use%20strict'%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Chrome%20uses%20an%20older%20version%20of%20DOM%20Level%203%20Keyboard%20Events%0A%20%20%20*%0A%20%20%20*%20Most%20keys%20are%20labeled%20as%20text%2C%20but%20some%20are%20Unicode%20codepoints.%0A%20%20%20*%20Values%20taken%20from%3A%0A%20%20%20*%20http%3A%2F%2Fwww.w3.org%2FTR%2F2007%2FWD-DOM-Level-3-Events-20071221%2Fkeyset.html%23KeySet-Set%0A%20%20%20*%2F%0A%20%20var%20KEY_IDENTIFIER%20%3D%20%7B%0A%20%20%20%20'U%2B0008'%3A%20'backspace'%2C%0A%20%20%20%20'U%2B0009'%3A%20'tab'%2C%0A%20%20%20%20'U%2B001B'%3A%20'esc'%2C%0A%20%20%20%20'U%2B0020'%3A%20'space'%2C%0A%20%20%20%20'U%2B007F'%3A%20'del'%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Special%20table%20for%20KeyboardEvent.keyCode.%0A%20%20%20*%20KeyboardEvent.keyIdentifier%20is%20better%2C%20and%20KeyBoardEvent.key%20is%20even%20better%0A%20%20%20*%20than%20that.%0A%20%20%20*%0A%20%20%20*%20Values%20from%3A%0A%20%20%20*%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FKeyboardEvent.keyCode%23Value_of_keyCode%0A%20%20%20*%2F%0A%20%20var%20KEY_CODE%20%3D%20%7B%0A%20%20%20%208%3A%20'backspace'%2C%0A%20%20%20%209%3A%20'tab'%2C%0A%20%20%20%2013%3A%20'enter'%2C%0A%20%20%20%2027%3A%20'esc'%2C%0A%20%20%20%2033%3A%20'pageup'%2C%0A%20%20%20%2034%3A%20'pagedown'%2C%0A%20%20%20%2035%3A%20'end'%2C%0A%20%20%20%2036%3A%20'home'%2C%0A%20%20%20%2032%3A%20'space'%2C%0A%20%20%20%2037%3A%20'left'%2C%0A%20%20%20%2038%3A%20'up'%2C%0A%20%20%20%2039%3A%20'right'%2C%0A%20%20%20%2040%3A%20'down'%2C%0A%20%20%20%2046%3A%20'del'%2C%0A%20%20%20%20106%3A%20'*'%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20MODIFIER_KEYS%20maps%20the%20short%20name%20for%20modifier%20keys%20used%20in%20a%20key%0A%20%20%20*%20combo%20string%20to%20the%20property%20name%20that%20references%20those%20same%20keys%0A%20%20%20*%20in%20a%20KeyboardEvent%20instance.%0A%20%20%20*%2F%0A%20%20var%20MODIFIER_KEYS%20%3D%20%7B%0A%20%20%20%20'shift'%3A%20'shiftKey'%2C%0A%20%20%20%20'ctrl'%3A%20'ctrlKey'%2C%0A%20%20%20%20'alt'%3A%20'altKey'%2C%0A%20%20%20%20'meta'%3A%20'metaKey'%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20KeyboardEvent.key%20is%20mostly%20represented%20by%20printable%20character%20made%20by%0A%20%20%20*%20the%20keyboard%2C%20with%20unprintable%20keys%20labeled%20nicely.%0A%20%20%20*%0A%20%20%20*%20However%2C%20on%20OS%20X%2C%20Alt%2Bchar%20can%20make%20a%20Unicode%20character%20that%20follows%20an%0A%20%20%20*%20Apple-specific%20mapping.%20In%20this%20case%2C%20we%20fall%20back%20to%20.keyCode.%0A%20%20%20*%2F%0A%20%20var%20KEY_CHAR%20%3D%20%2F%5Ba-z0-9*%5D%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20a%20keyIdentifier%20string.%0A%20%20%20*%2F%0A%20%20var%20IDENT_CHAR%20%3D%20%2FU%5C%2B%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20arrow%20keys%20in%20Gecko%2027.0%2B%0A%20%20%20*%2F%0A%20%20var%20ARROW_KEY%20%3D%20%2F%5Earrow%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20space%20keys%20everywhere%20(notably%20including%20IE10's%20exceptional%20name%0A%20%20%20*%20%60spacebar%60).%0A%20%20%20*%2F%0A%20%20var%20SPACE_KEY%20%3D%20%2F%5Espace(bar)%3F%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20ESC%20key.%0A%20%20%20*%0A%20%20%20*%20Value%20from%3A%20http%3A%2F%2Fw3c.github.io%2Fuievents-key%2F%23key-Escape%0A%20%20%20*%2F%0A%20%20var%20ESC_KEY%20%3D%20%2F%5Eescape%24%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Transforms%20the%20key.%0A%20%20%20*%20%40param%20%7Bstring%7D%20key%20The%20KeyBoardEvent.key%0A%20%20%20*%20%40param%20%7BBoolean%7D%20%5BnoSpecialChars%5D%20Limits%20the%20transformation%20to%0A%20%20%20*%20alpha-numeric%20characters.%0A%20%20%20*%2F%0A%20%20function%20transformKey(key%2C%20noSpecialChars)%20%7B%0A%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20if%20(key)%20%7B%0A%20%20%20%20%20%20var%20lKey%20%3D%20key.toLowerCase()%3B%0A%20%20%20%20%20%20if%20(lKey%20%3D%3D%3D%20'%20'%20%7C%7C%20SPACE_KEY.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'space'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(ESC_KEY.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'esc'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(lKey.length%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!noSpecialChars%20%7C%7C%20KEY_CHAR.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20lKey%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20(ARROW_KEY.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20lKey.replace('arrow'%2C%20'')%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(lKey%20%3D%3D%20'multiply')%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20numpad%20'*'%20can%20map%20to%20Multiply%20on%20IE%2FWindows%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'*'%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20lKey%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20validKey%3B%0A%20%20%7D%0A%0A%20%20function%20transformKeyIdentifier(keyIdent)%20%7B%0A%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20if%20(keyIdent)%20%7B%0A%20%20%20%20%20%20if%20(keyIdent%20in%20KEY_IDENTIFIER)%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20KEY_IDENTIFIER%5BkeyIdent%5D%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(IDENT_CHAR.test(keyIdent))%20%7B%0A%20%20%20%20%20%20%20%20keyIdent%20%3D%20parseInt(keyIdent.replace('U%2B'%2C%20'0x')%2C%2016)%3B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String.fromCharCode(keyIdent).toLowerCase()%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20keyIdent.toLowerCase()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20validKey%3B%0A%20%20%7D%0A%0A%20%20function%20transformKeyCode(keyCode)%20%7B%0A%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20if%20(Number(keyCode))%20%7B%0A%20%20%20%20%20%20if%20(keyCode%20%3E%3D%2065%20%26%26%20keyCode%20%3C%3D%2090)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20ascii%20a-z%0A%20%20%20%20%20%20%20%20%2F%2F%20lowercase%20is%2032%20offset%20from%20uppercase%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String.fromCharCode(32%20%2B%20keyCode)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%20112%20%26%26%20keyCode%20%3C%3D%20123)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20function%20keys%20f1-f12%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'f'%20%2B%20(keyCode%20-%20112%20%2B%201)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%2048%20%26%26%20keyCode%20%3C%3D%2057)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20top%200-9%20keys%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String(keyCode%20-%2048)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%2096%20%26%26%20keyCode%20%3C%3D%20105)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20num%20pad%200-9%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String(keyCode%20-%2096)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20KEY_CODE%5BkeyCode%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20validKey%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Calculates%20the%20normalized%20key%20for%20a%20KeyboardEvent.%0A%20%20%20*%20%40param%20%7BKeyboardEvent%7D%20keyEvent%0A%20%20%20*%20%40param%20%7BBoolean%7D%20%5BnoSpecialChars%5D%20Set%20to%20true%20to%20limit%20keyEvent.key%0A%20%20%20*%20transformation%20to%20alpha-numeric%20chars.%20This%20is%20useful%20with%20key%0A%20%20%20*%20combinations%20like%20shift%20%2B%202%2C%20which%20on%20FF%20for%20MacOS%20produces%0A%20%20%20*%20keyEvent.key%20%3D%20%40%0A%20%20%20*%20To%20get%202%20returned%2C%20set%20noSpecialChars%20%3D%20true%0A%20%20%20*%20To%20get%20%40%20returned%2C%20set%20noSpecialChars%20%3D%20false%0A%20%20%20*%2F%0A%20%20function%20normalizedKeyForEvent(keyEvent%2C%20noSpecialChars)%20%7B%0A%20%20%20%20%2F%2F%20Fall%20back%20from%20.key%2C%20to%20.detail.key%20for%20artifical%20keyboard%20events%2C%0A%20%20%20%20%2F%2F%20and%20then%20to%20deprecated%20.keyIdentifier%20and%20.keyCode.%0A%20%20%20%20if%20(keyEvent.key)%20%7B%0A%20%20%20%20%20%20return%20transformKey(keyEvent.key%2C%20noSpecialChars)%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(keyEvent.detail%20%26%26%20keyEvent.detail.key)%20%7B%0A%20%20%20%20%20%20return%20transformKey(keyEvent.detail.key%2C%20noSpecialChars)%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20transformKeyIdentifier(keyEvent.keyIdentifier)%20%7C%7C%0A%20%20%20%20%20%20%20%20transformKeyCode(keyEvent.keyCode)%20%7C%7C%20''%3B%0A%20%20%7D%0A%0A%20%20function%20keyComboMatchesEvent(keyCombo%2C%20event)%20%7B%0A%20%20%20%20%2F%2F%20For%20combos%20with%20modifiers%20we%20support%20only%20alpha-numeric%20keys%0A%20%20%20%20var%20keyEvent%20%3D%20normalizedKeyForEvent(event%2C%20keyCombo.hasModifiers)%3B%0A%20%20%20%20return%20keyEvent%20%3D%3D%3D%20keyCombo.key%20%26%26%0A%20%20%20%20%20%20%20%20(!keyCombo.hasModifiers%20%7C%7C%0A%20%20%20%20%20%20%20%20%20(!!event.shiftKey%20%3D%3D%3D%20!!keyCombo.shiftKey%20%26%26%0A%20%20%20%20%20%20%20%20%20%20!!event.ctrlKey%20%3D%3D%3D%20!!keyCombo.ctrlKey%20%26%26%0A%20%20%20%20%20%20%20%20%20%20!!event.altKey%20%3D%3D%3D%20!!keyCombo.altKey%20%26%26%0A%20%20%20%20%20%20%20%20%20%20!!event.metaKey%20%3D%3D%3D%20!!keyCombo.metaKey))%3B%0A%20%20%7D%0A%0A%20%20function%20parseKeyComboString(keyComboString)%20%7B%0A%20%20%20%20if%20(keyComboString.length%20%3D%3D%3D%201)%20%7B%0A%20%20%20%20%20%20return%20%7Bcombo%3A%20keyComboString%2C%20key%3A%20keyComboString%2C%20event%3A%20'keydown'%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20keyComboString.split('%2B')%0A%20%20%20%20%20%20%20%20.reduce(function(parsedKeyCombo%2C%20keyComboPart)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20eventParts%20%3D%20keyComboPart.split('%3A')%3B%0A%20%20%20%20%20%20%20%20%20%20var%20keyName%20%3D%20eventParts%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20event%20%3D%20eventParts%5B1%5D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20(keyName%20in%20MODIFIER_KEYS)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo%5BMODIFIER_KEYS%5BkeyName%5D%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo.hasModifiers%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo.key%20%3D%20keyName%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo.event%20%3D%20event%20%7C%7C%20'keydown'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20return%20parsedKeyCombo%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20%7Bcombo%3A%20keyComboString.split('%3A').shift()%7D)%3B%0A%20%20%7D%0A%0A%20%20function%20parseEventString(eventString)%20%7B%0A%20%20%20%20return%20eventString.trim().split('%20').map(function(keyComboString)%20%7B%0A%20%20%20%20%20%20return%20parseKeyComboString(keyComboString)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20%60Polymer.IronA11yKeysBehavior%60%20provides%20a%20normalized%20interface%20for%20processing%0A%20%20%20*%20keyboard%20commands%20that%20pertain%20to%20%5BWAI-ARIA%20best%0A%20%20%20*%20practices%5D(http%3A%2F%2Fwww.w3.org%2FTR%2Fwai-aria-practices%2F%23kbd_general_binding).%20The%0A%20%20%20*%20element%20takes%20care%20of%20browser%20differences%20with%20respect%20to%20Keyboard%20events%20and%0A%20%20%20*%20uses%20an%20expressive%20syntax%20to%20filter%20key%20presses.%0A%20%20%20*%0A%20%20%20*%20Use%20the%20%60keyBindings%60%20prototype%20property%20to%20express%20what%20combination%20of%20keys%0A%20%20%20*%20will%20trigger%20the%20callback.%20A%20key%20binding%20has%20the%20format%0A%20%20%20*%20%60%22KEY%2BMODIFIER%3AEVENT%22%3A%20%22callback%22%60%20(%60%22KEY%22%3A%20%22callback%22%60%20or%0A%20%20%20*%20%60%22KEY%3AEVENT%22%3A%20%22callback%22%60%20are%20valid%20as%20well).%20Some%20examples%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%20keyBindings%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20'space'%3A%20'_onKeydown'%2C%20%2F%2F%20same%20as%20'space%3Akeydown'%0A%20%20%20*%20%20%20%20%20%20%20%20'shift%2Btab'%3A%20'_onKeydown'%2C%0A%20%20%20*%20%20%20%20%20%20%20%20'enter%3Akeypress'%3A%20'_onKeypress'%2C%0A%20%20%20*%20%20%20%20%20%20%20%20'esc%3Akeyup'%3A%20'_onKeyup'%0A%20%20%20*%20%20%20%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20The%20callback%20will%20receive%20with%20an%20event%20containing%20the%20following%20information%0A%20%20%20*%20in%20%60event.detail%60%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%20_onKeydown%3A%20function(event)%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.combo)%3B%20%2F%2F%20KEY%2BMODIFIER%2C%20e.g.%20%22shift%2Btab%22%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.key)%3B%20%2F%2F%20KEY%20only%2C%20e.g.%20%22tab%22%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.event)%3B%20%2F%2F%20EVENT%2C%20e.g.%20%22keydown%22%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.keyboardEvent)%3B%20%2F%2F%20the%20original%20KeyboardEvent%0A%20%20%20*%20%20%20%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20Use%20the%20%60keyEventTarget%60%20attribute%20to%20set%20up%20event%20handlers%20on%20a%20specific%0A%20%20%20*%20node.%0A%20%20%20*%0A%20%20%20*%20See%20the%20%5Bdemo%20source%0A%20%20%20*%20code%5D(https%3A%2F%2Fgithub.com%2FPolymerElements%2Firon-a11y-keys-behavior%2Fblob%2Fmaster%2Fdemo%2Fx-key-aware.html)%0A%20%20%20*%20for%20an%20example.%0A%20%20%20*%0A%20%20%20*%20%40demo%20demo%2Findex.html%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%2F%0A%20%20Polymer.IronA11yKeysBehavior%20%3D%20%7B%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20EventTarget%20that%20will%20be%20firing%20relevant%20KeyboardEvents.%20Set%20it%20to%0A%20%20%20%20%20%20%20*%20%60null%60%20to%20disable%20the%20listeners.%0A%20%20%20%20%20%20%20*%20%40type%20%7B%3FEventTarget%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20keyEventTarget%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20this%20property%20will%20cause%20the%20implementing%20element%20to%0A%20%20%20%20%20%20%20*%20automatically%20stop%20propagation%20on%20any%20handled%20KeyboardEvents.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20stopKeyboardEventPropagation%3A%20%7Btype%3A%20Boolean%2C%20value%3A%20false%7D%2C%0A%0A%20%20%20%20%20%20_boundKeyHandlers%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20We%20use%20this%20due%20to%20a%20limitation%20in%20IE10%20where%20instances%20will%20have%0A%20%20%20%20%20%20%2F%2F%20own%20properties%20of%20everything%20on%20the%20%22prototype%22.%0A%20%20%20%20%20%20_imperativeKeyBindings%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20observers%3A%20%5B'_resetKeyEventListeners(keyEventTarget%2C%20_boundKeyHandlers)'%5D%2C%0A%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20To%20be%20used%20to%20express%20what%20combination%20of%20keys%20%20will%20trigger%20the%20relative%0A%20%20%20%20%20*%20callback.%20e.g.%20%60keyBindings%3A%20%7B%20'esc'%3A%20'_onEscPressed'%7D%60%0A%20%20%20%20%20*%20%40type%20%7B!Object%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20keyBindings%3A%20%7B%7D%2C%0A%0A%20%20%20%20registered%3A%20function()%20%7B%0A%20%20%20%20%20%20this._prepKeyBindings()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20this._listenKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20detached%3A%20function()%20%7B%0A%20%20%20%20%20%20this._unlistenKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Can%20be%20used%20to%20imperatively%20add%20a%20key%20binding%20to%20the%20implementing%0A%20%20%20%20%20*%20element.%20This%20is%20the%20imperative%20equivalent%20of%20declaring%20a%20keybinding%0A%20%20%20%20%20*%20in%20the%20%60keyBindings%60%20prototype%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventString%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20handlerName%0A%20%20%20%20%20*%2F%0A%20%20%20%20addOwnKeyBinding%3A%20function(eventString%2C%20handlerName)%20%7B%0A%20%20%20%20%20%20this._imperativeKeyBindings%5BeventString%5D%20%3D%20handlerName%3B%0A%20%20%20%20%20%20this._prepKeyBindings()%3B%0A%20%20%20%20%20%20this._resetKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20When%20called%2C%20will%20remove%20all%20imperatively-added%20key%20bindings.%0A%20%20%20%20%20*%2F%0A%20%20%20%20removeOwnKeyBindings%3A%20function()%20%7B%0A%20%20%20%20%20%20this._imperativeKeyBindings%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20this._prepKeyBindings()%3B%0A%20%20%20%20%20%20this._resetKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20a%20keyboard%20event%20matches%20%60eventString%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BKeyboardEvent%7D%20event%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventString%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20keyboardEventMatchesKeys%3A%20function(event%2C%20eventString)%20%7B%0A%20%20%20%20%20%20var%20keyCombos%20%3D%20parseEventString(eventString)%3B%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20keyCombos.length%3B%20%2B%2Bi)%20%7B%0A%20%20%20%20%20%20%20%20if%20(keyComboMatchesEvent(keyCombos%5Bi%5D%2C%20event))%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_collectKeyBindings%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20keyBindings%20%3D%20this.behaviors.map(function(behavior)%20%7B%0A%20%20%20%20%20%20%20%20return%20behavior.keyBindings%3B%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20if%20(keyBindings.indexOf(this.keyBindings)%20%3D%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20keyBindings.push(this.keyBindings)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20keyBindings%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_prepKeyBindings%3A%20function()%20%7B%0A%20%20%20%20%20%20this._keyBindings%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20%20%20this._collectKeyBindings().forEach(function(keyBindings)%20%7B%0A%20%20%20%20%20%20%20%20for%20(var%20eventString%20in%20keyBindings)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._addKeyBinding(eventString%2C%20keyBindings%5BeventString%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%0A%20%20%20%20%20%20for%20(var%20eventString%20in%20this._imperativeKeyBindings)%20%7B%0A%20%20%20%20%20%20%20%20this._addKeyBinding(%0A%20%20%20%20%20%20%20%20%20%20%20%20eventString%2C%20this._imperativeKeyBindings%5BeventString%5D)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Give%20precedence%20to%20combos%20with%20modifiers%20to%20be%20checked%20first.%0A%20%20%20%20%20%20for%20(var%20eventName%20in%20this._keyBindings)%20%7B%0A%20%20%20%20%20%20%20%20this._keyBindings%5BeventName%5D.sort(function(kb1%2C%20kb2)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20b1%20%3D%20kb1%5B0%5D.hasModifiers%3B%0A%20%20%20%20%20%20%20%20%20%20var%20b2%20%3D%20kb2%5B0%5D.hasModifiers%3B%0A%20%20%20%20%20%20%20%20%20%20return%20(b1%20%3D%3D%3D%20b2)%20%3F%200%20%3A%20b1%20%3F%20-1%20%3A%201%3B%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_addKeyBinding%3A%20function(eventString%2C%20handlerName)%20%7B%0A%20%20%20%20%20%20parseEventString(eventString).forEach(function(keyCombo)%20%7B%0A%20%20%20%20%20%20%20%20this._keyBindings%5BkeyCombo.event%5D%20%3D%0A%20%20%20%20%20%20%20%20%20%20%20%20this._keyBindings%5BkeyCombo.event%5D%20%7C%7C%20%5B%5D%3B%0A%0A%20%20%20%20%20%20%20%20this._keyBindings%5BkeyCombo.event%5D.push(%5BkeyCombo%2C%20handlerName%5D)%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_resetKeyEventListeners%3A%20function()%20%7B%0A%20%20%20%20%20%20this._unlistenKeyEventListeners()%3B%0A%0A%20%20%20%20%20%20if%20(this.isAttached)%20%7B%0A%20%20%20%20%20%20%20%20this._listenKeyEventListeners()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_listenKeyEventListeners%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(!this.keyEventTarget)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20Object.keys(this._keyBindings).forEach(function(eventName)%20%7B%0A%20%20%20%20%20%20%20%20var%20keyBindings%20%3D%20this._keyBindings%5BeventName%5D%3B%0A%20%20%20%20%20%20%20%20var%20boundKeyHandler%20%3D%20this._onKeyBindingEvent.bind(this%2C%20keyBindings)%3B%0A%0A%20%20%20%20%20%20%20%20this._boundKeyHandlers.push(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5Bthis.keyEventTarget%2C%20eventName%2C%20boundKeyHandler%5D)%3B%0A%0A%20%20%20%20%20%20%20%20this.keyEventTarget.addEventListener(eventName%2C%20boundKeyHandler)%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_unlistenKeyEventListeners%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20keyHandlerTuple%3B%0A%20%20%20%20%20%20var%20keyEventTarget%3B%0A%20%20%20%20%20%20var%20eventName%3B%0A%20%20%20%20%20%20var%20boundKeyHandler%3B%0A%0A%20%20%20%20%20%20while%20(this._boundKeyHandlers.length)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20My%20kingdom%20for%20block-scope%20binding%20and%20destructuring%20assignment..%0A%20%20%20%20%20%20%20%20keyHandlerTuple%20%3D%20this._boundKeyHandlers.pop()%3B%0A%20%20%20%20%20%20%20%20keyEventTarget%20%3D%20keyHandlerTuple%5B0%5D%3B%0A%20%20%20%20%20%20%20%20eventName%20%3D%20keyHandlerTuple%5B1%5D%3B%0A%20%20%20%20%20%20%20%20boundKeyHandler%20%3D%20keyHandlerTuple%5B2%5D%3B%0A%0A%20%20%20%20%20%20%20%20keyEventTarget.removeEventListener(eventName%2C%20boundKeyHandler)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onKeyBindingEvent%3A%20function(keyBindings%2C%20event)%20%7B%0A%20%20%20%20%20%20if%20(this.stopKeyboardEventPropagation)%20%7B%0A%20%20%20%20%20%20%20%20event.stopPropagation()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20if%20event%20has%20been%20already%20prevented%2C%20don't%20do%20anything%0A%20%20%20%20%20%20if%20(event.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20keyBindings.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20var%20keyCombo%20%3D%20keyBindings%5Bi%5D%5B0%5D%3B%0A%20%20%20%20%20%20%20%20var%20handlerName%20%3D%20keyBindings%5Bi%5D%5B1%5D%3B%0A%20%20%20%20%20%20%20%20if%20(keyComboMatchesEvent(keyCombo%2C%20event))%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._triggerKeyHandler(keyCombo%2C%20handlerName%2C%20event)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20exit%20the%20loop%20if%20eventDefault%20was%20prevented%0A%20%20%20%20%20%20%20%20%20%20if%20(event.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_triggerKeyHandler%3A%20function(keyCombo%2C%20handlerName%2C%20keyboardEvent)%20%7B%0A%20%20%20%20%20%20var%20detail%20%3D%20Object.create(keyCombo)%3B%0A%20%20%20%20%20%20detail.keyboardEvent%20%3D%20keyboardEvent%3B%0A%20%20%20%20%20%20var%20event%20%3D%0A%20%20%20%20%20%20%20%20%20%20new%20CustomEvent(keyCombo.event%2C%20%7Bdetail%3A%20detail%2C%20cancelable%3A%20true%7D)%3B%0A%20%20%20%20%20%20this%5BhandlerName%5D.call(this%2C%20event)%3B%0A%20%20%20%20%20%20if%20(event.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20keyboardEvent.preventDefault()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%20%20%7D)()%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-a11y-keys-behavior%2Firon-a11y-keys-behavior.html.js%0A",
            "resourceBytes": 14596,
            "encodedBytes": 0,
            "unusedBytes": 8059
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F**%0A%20%20%20*%20%40demo%20demo%2Findex.html%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%2F%0A%20%20Polymer.IronControlState%20%3D%20%7B%0A%0A%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20the%20element%20currently%20has%20focus.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20focused%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20reflectToAttribute%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20the%20user%20cannot%20interact%20with%20this%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20disabled%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_disabledChanged'%2C%0A%20%20%20%20%20%20%20%20reflectToAttribute%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_oldTabIndex%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundFocusBlurHandler%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._focusBlurHandler.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20__handleEventRetargeting%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20!this.shadowRoot%20%26%26%20!Polymer.Element%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20observers%3A%20%5B%0A%20%20%20%20%20%20'_changedControlState(focused%2C%20disabled)'%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20ready%3A%20function()%20%7B%0A%20%20%20%20%20%20this.addEventListener('focus'%2C%20this._boundFocusBlurHandler%2C%20true)%3B%0A%20%20%20%20%20%20this.addEventListener('blur'%2C%20this._boundFocusBlurHandler%2C%20true)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_focusBlurHandler%3A%20function(event)%20%7B%0A%20%20%20%20%20%20%2F%2F%20In%20Polymer%202.0%2C%20the%20library%20takes%20care%20of%20retargeting%20events.%0A%20%20%20%20%20%20if%20(Polymer.Element)%20%7B%0A%20%20%20%20%20%20%20%20this._setFocused(event.type%20%3D%3D%3D%20'focus')%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20NOTE(cdata)%3A%20%20if%20we%20are%20in%20ShadowDOM%20land%2C%20%60event.target%60%20will%0A%20%20%20%20%20%20%2F%2F%20eventually%20become%20%60this%60%20due%20to%20retargeting%3B%20if%20we%20are%20not%20in%0A%20%20%20%20%20%20%2F%2F%20ShadowDOM%20land%2C%20%60event.target%60%20will%20eventually%20become%20%60this%60%20due%0A%20%20%20%20%20%20%2F%2F%20to%20the%20second%20conditional%20which%20fires%20a%20synthetic%20event%20(that%20is%20also%0A%20%20%20%20%20%20%2F%2F%20handled).%20In%20either%20case%2C%20we%20can%20disregard%20%60event.path%60.%0A%20%20%20%20%20%20if%20(event.target%20%3D%3D%3D%20this)%20%7B%0A%20%20%20%20%20%20%20%20this._setFocused(event.type%20%3D%3D%3D%20'focus')%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(this.__handleEventRetargeting)%20%7B%0A%20%20%20%20%20%20%20%20var%20target%20%3D%20%2F**%20%40type%20%7BNode%7D%20*%2F(Polymer.dom(event).localTarget)%3B%0A%20%20%20%20%20%20%20%20if%20(!this.isLightDescendant(target))%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.fire(event.type%2C%20%7BsourceEvent%3A%20event%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20node%3A%20this%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20bubbles%3A%20event.bubbles%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20cancelable%3A%20event.cancelable%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_disabledChanged%3A%20function(disabled%2C%20old)%20%7B%0A%20%20%20%20%20%20this.setAttribute('aria-disabled'%2C%20disabled%20%3F%20'true'%20%3A%20'false')%3B%0A%20%20%20%20%20%20this.style.pointerEvents%20%3D%20disabled%20%3F%20'none'%20%3A%20''%3B%0A%20%20%20%20%20%20if%20(disabled)%20%7B%0A%20%20%20%20%20%20%20%20this._oldTabIndex%20%3D%20this.tabIndex%3B%0A%20%20%20%20%20%20%20%20this._setFocused(false)%3B%0A%20%20%20%20%20%20%20%20this.tabIndex%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20this.blur()%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(this._oldTabIndex%20!%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20this.tabIndex%20%3D%20this._oldTabIndex%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_changedControlState%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20_controlStateChanged%20is%20abstract%2C%20follow-on%20behaviors%20may%20implement%20it%0A%20%20%20%20%20%20if%20(this._controlStateChanged)%20%7B%0A%20%20%20%20%20%20%20%20this._controlStateChanged()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%7D%3B%0A%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-behaviors%2Firon-control-state.html.js%0A",
            "resourceBytes": 3038,
            "encodedBytes": 0,
            "unusedBytes": 1910
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F%2F%20Generate%20unique%2C%20monotonically%20increasing%20IDs%20for%20labels%20(needed%20by%0A%20%20%2F%2F%20aria-labelledby)%20and%20add-ons.%0A%20%20Polymer.PaperInputHelper%20%3D%20%7B%7D%3B%0A%20%20Polymer.PaperInputHelper.NextLabelID%20%3D%201%3B%0A%20%20Polymer.PaperInputHelper.NextAddonID%20%3D%201%3B%0A%20%20Polymer.PaperInputHelper.NextInputID%20%3D%201%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Use%20%60Polymer.PaperInputBehavior%60%20to%20implement%20inputs%20with%20%60%3Cpaper-input-container%3E%60.%20This%0A%20%20%20*%20behavior%20is%20implemented%20by%20%60%3Cpaper-input%3E%60.%20It%20exposes%20a%20number%20of%20properties%20from%0A%20%20%20*%20%60%3Cpaper-input-container%3E%60%20and%20%60%3Cinput%20is%3D%22iron-input%22%3E%60%20and%20they%20should%20be%20bound%20in%20your%0A%20%20%20*%20template.%0A%20%20%20*%0A%20%20%20*%20The%20input%20element%20can%20be%20accessed%20by%20the%20%60inputElement%60%20property%20if%20you%20need%20to%20access%0A%20%20%20*%20properties%20or%20methods%20that%20are%20not%20exposed.%0A%20%20%20*%20%40polymerBehavior%20Polymer.PaperInputBehavior%0A%20%20%20*%2F%0A%20%20Polymer.PaperInputBehaviorImpl%20%3D%20%7B%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Fired%20when%20the%20input%20changes%20due%20to%20user%20interaction.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20change%0A%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20label%20for%20this%20input.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20%60%3Clabel%3E%60's%20content%20and%20%60hidden%60%20property%2C%20e.g.%0A%20%20%20%20%20%20%20*%20%60%3Clabel%20hidden%24%3D%22%5B%5B!label%5D%5D%22%3E%5B%5Blabel%5D%5D%3C%2Flabel%3E%60%20in%20your%20%60template%60%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20label%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20value%20for%20this%20input.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Ciron-input%3E%60's%20%60bindValue%60%0A%20%20%20%20%20%20%20*%20property%2C%20or%20the%20value%20property%20of%20your%20input%20that%20is%20%60notify%3Atrue%60.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20disable%20this%20input.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20both%20the%20%60%3Cpaper-input-container%3E%60's%20and%20the%20input's%20%60disabled%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20disabled%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20value%20is%20invalid.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%20both%20the%0A%20%20%20%20%20%20%20*%20%60%3Cpaper-input-container%3E%60's%20and%20the%20input's%20%60invalid%60%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20%60autoValidate%60%20is%20true%2C%20the%20%60invalid%60%20attribute%20is%20managed%20automatically%2C%0A%20%20%20%20%20%20%20*%20which%20can%20clobber%20attempts%20to%20manage%20it%20manually.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20this%20to%20specify%20the%20pattern%20allowed%20by%20%60preventInvalidInput%60.%20If%0A%20%20%20%20%20%20%20*%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60allowedPattern%60%0A%20%20%20%20%20%20%20*%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20allowedPattern%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20type%20of%20the%20input.%20The%20supported%20types%20are%20the%0A%20%20%20%20%20%20%20*%20%5Bnative%20input's%20types%5D(https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FHTML%2FElement%2Finput%23Form_%3Cinput%3E_types).%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%20element%2C%0A%20%20%20%20%20%20%20*%20bind%20this%20to%20the%20(Polymer%201)%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20or%20(Polymer%202)%0A%20%20%20%20%20%20%20*%20%60%3Ciron-input%3E%60's%20%60type%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20type%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20datalist%20of%20the%20input%20(if%20any).%20This%20should%20match%20the%20id%20of%20an%20existing%20%60%3Cdatalist%3E%60.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60list%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20list%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20pattern%20to%20validate%20the%20%60input%60%20with.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60pattern%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20pattern%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20mark%20the%20input%20as%20required.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60required%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20required%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20error%20message%20to%20display%20when%20the%20input%20is%20invalid.%20If%20you're%20using%0A%20%20%20%20%20%20%20*%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%20element%2C%0A%20%20%20%20%20%20%20*%20bind%20this%20to%20the%20%60%3Cpaper-input-error%3E%60's%20content%2C%20if%20using.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20errorMessage%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20show%20a%20character%20counter.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20charCounter%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20disable%20the%20floating%20label.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cpaper-input-container%3E%60's%20%60noLabelFloat%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20noLabelFloat%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20always%20float%20the%20label.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cpaper-input-container%3E%60's%20%60alwaysFloatLabel%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20alwaysFloatLabel%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20auto-validate%20the%20input%20value.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cpaper-input-container%3E%60's%20%60autoValidate%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autoValidate%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Name%20of%20the%20validator%20to%20use.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60validator%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20validator%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20HTMLInputElement%20attributes%20for%20binding%20if%20needed%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autocomplete%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autocomplete%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'off'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autofocus%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autofocus%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_autofocusChanged'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60inputmode%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20inputmode%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20minimum%20length%20of%20the%20input%20value.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60minlength%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20minlength%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20maximum%20length%20of%20the%20input%20value.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60maxlength%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20maxlength%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20minimum%20(numeric%20or%20date-time)%20input%20value.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60min%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20min%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20maximum%20(numeric%20or%20date-time)%20input%20value.%0A%20%20%20%20%20%20%20*%20Can%20be%20a%20String%20(e.g.%20%60%222000-01-01%22%60)%20or%20a%20Number%20(e.g.%20%602%60).%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60max%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20max%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Limits%20the%20numeric%20or%20date-time%20increments.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60step%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20step%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60name%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20name%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20placeholder%20string%20in%20addition%20to%20the%20label.%20If%20this%20is%20set%2C%20the%20label%20will%20always%20float.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20placeholder%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20need%20to%20set%20a%20default%20so%20_computeAlwaysFloatLabel%20is%20run%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60readonly%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20readonly%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60size%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20size%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20Nonstandard%20attributes%20for%20binding%20if%20needed%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autocapitalize%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autocapitalize%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'none'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autocorrect%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autocorrect%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'off'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autosave%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dsearch.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autosave%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60results%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dsearch.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20results%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60accept%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dfile.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20accept%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60multiple%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dfile.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20multiple%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_ariaDescribedBy%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_ariaLabelledBy%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_inputId%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20'addon-attached'%3A%20'_onAddonAttached'%2C%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20keyBindings%3A%20%7B%0A%20%20%20%20%20%20'shift%2Btab%3Akeydown'%3A%20'_onShiftTabDown'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20tabindex%3A%200%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20a%20reference%20to%20the%20input%20element.%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20inputElement()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Chrome%20generates%20audit%20errors%20if%20an%20%3Cinput%20type%3D%22password%22%3E%20has%20a%0A%20%20%20%20%20%20%2F%2F%20duplicate%20ID%2C%20which%20is%20almost%20always%20true%20in%20Shady%20DOM.%20Generate%0A%20%20%20%20%20%20%2F%2F%20a%20unique%20ID%20instead.%0A%20%20%20%20%20%20if%20(!this.%24)%20%7B%0A%20%20%20%20%20%20%20%20this.%24%20%3D%20%7B%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(!this.%24.input)%20%7B%0A%20%20%20%20%20%20%20%20this._generateInputId()%3B%0A%20%20%20%20%20%20%20%20this.%24.input%20%3D%20this.%24%24('%23'%20%2B%20this._inputId)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20this.%24.input%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20a%20reference%20to%20the%20focusable%20element.%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20_focusableElement()%20%7B%0A%20%20%20%20%20%20return%20this.inputElement%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20These%20types%20have%20some%20default%20placeholder%20text%3B%20overlapping%0A%20%20%20%20%20%20%2F%2F%20the%20label%20on%20top%20of%20it%20looks%20terrible.%20Auto-float%20the%20label%20in%20this%20case.%0A%20%20%20%20%20%20this._typesThatHaveText%20%3D%20%5B%22date%22%2C%20%22datetime%22%2C%20%22datetime-local%22%2C%20%22month%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22time%22%2C%20%22week%22%2C%20%22file%22%5D%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20this._updateAriaLabelledBy()%3B%0A%0A%20%20%20%20%20%20%2F%2F%20In%20the%202.0%20version%20of%20the%20element%2C%20this%20is%20handled%20in%20%60onIronInputReady%60%2C%0A%20%20%20%20%20%20%2F%2F%20i.e.%20after%20the%20native%20input%20has%20finished%20distributing.%20In%20the%201.0%20version%2C%0A%20%20%20%20%20%20%2F%2F%20the%20input%20is%20in%20the%20shadow%20tree%2C%20so%20it's%20already%20available.%0A%20%20%20%20%20%20if%20(!Polymer.Element%20%26%26%20this.inputElement%20%26%26%0A%20%20%20%20%20%20%20%20%20%20this._typesThatHaveText.indexOf(this.inputElement.type)%20!%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this.alwaysFloatLabel%20%3D%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_appendStringWithSpace%3A%20function(str%2C%20more)%20%7B%0A%20%20%20%20%20%20if%20(str)%20%7B%0A%20%20%20%20%20%20%20%20str%20%3D%20str%20%2B%20'%20'%20%2B%20more%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20str%20%3D%20more%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20str%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onAddonAttached%3A%20function(event)%20%7B%0A%20%20%20%20%20%20var%20target%20%3D%20Polymer.dom(event).rootTarget%3B%0A%20%20%20%20%20%20if%20(target.id)%20%7B%0A%20%20%20%20%20%20%20%20this._ariaDescribedBy%20%3D%20this._appendStringWithSpace(this._ariaDescribedBy%2C%20target.id)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20var%20id%20%3D%20'paper-input-add-on-'%20%2B%20Polymer.PaperInputHelper.NextAddonID%2B%2B%3B%0A%20%20%20%20%20%20%20%20target.id%20%3D%20id%3B%0A%20%20%20%20%20%20%20%20this._ariaDescribedBy%20%3D%20this._appendStringWithSpace(this._ariaDescribedBy%2C%20id)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Validates%20the%20input%20element%20and%20sets%20an%20error%20style%20if%20needed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20validate%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20this.inputElement.validate()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Forward%20focus%20to%20inputElement.%20Overriden%20from%20IronControlState.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_focusBlurHandler%3A%20function(event)%20%7B%0A%20%20%20%20%20%20Polymer.IronControlState._focusBlurHandler.call(this%2C%20event)%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Forward%20the%20focus%20to%20the%20nested%20input.%0A%20%20%20%20%20%20if%20(this.focused%20%26%26%20!this._shiftTabPressed%20%26%26%20this._focusableElement)%20%7B%0A%20%20%20%20%20%20%20%20this._focusableElement.focus()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Handler%20that%20is%20called%20when%20a%20shift%2Btab%20keypress%20is%20detected%20by%20the%20menu.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BCustomEvent%7D%20event%20A%20key%20combination%20event.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_onShiftTabDown%3A%20function(event)%20%7B%0A%20%20%20%20%20%20var%20oldTabIndex%20%3D%20this.getAttribute('tabindex')%3B%0A%20%20%20%20%20%20this._shiftTabPressed%20%3D%20true%3B%0A%20%20%20%20%20%20this.setAttribute('tabindex'%2C%20'-1')%3B%0A%20%20%20%20%20%20this.async(function()%20%7B%0A%20%20%20%20%20%20%20%20this.setAttribute('tabindex'%2C%20oldTabIndex)%3B%0A%20%20%20%20%20%20%20%20this._shiftTabPressed%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%2C%201)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20If%20%60autoValidate%60%20is%20true%2C%20then%20validates%20the%20element.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_handleAutoValidate%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.autoValidate)%0A%20%20%20%20%20%20%20%20this.validate()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Restores%20the%20cursor%20to%20its%20original%20position%20after%20updating%20the%20value.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20newValue%20The%20value%20that%20should%20be%20saved.%0A%20%20%20%20%20*%2F%0A%20%20%20%20updateValueAndPreserveCaret%3A%20function(newValue)%20%7B%0A%20%20%20%20%20%20%2F%2F%20Not%20all%20elements%20might%20have%20selection%2C%20and%20even%20if%20they%20have%20the%0A%20%20%20%20%20%20%2F%2F%20right%20properties%2C%20accessing%20them%20might%20throw%20an%20exception%20(like%20for%0A%20%20%20%20%20%20%2F%2F%20%3Cinput%20type%3Dnumber%3E)%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20var%20start%20%3D%20this.inputElement.selectionStart%3B%0A%20%20%20%20%20%20%20%20this.value%20%3D%20newValue%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20The%20cursor%20automatically%20jumps%20to%20the%20end%20after%20re-setting%20the%20value%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20so%20restore%20it%20to%20its%20original%20position.%0A%20%20%20%20%20%20%20%20this.inputElement.selectionStart%20%3D%20start%3B%0A%20%20%20%20%20%20%20%20this.inputElement.selectionEnd%20%3D%20start%3B%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Just%20set%20the%20value%20and%20give%20up%20on%20the%20caret.%0A%20%20%20%20%20%20%20%20this.value%20%3D%20newValue%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeAlwaysFloatLabel%3A%20function(alwaysFloatLabel%2C%20placeholder)%20%7B%0A%20%20%20%20%20%20return%20placeholder%20%7C%7C%20alwaysFloatLabel%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_updateAriaLabelledBy%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20label%20%3D%20Polymer.dom(this.root).querySelector('label')%3B%0A%20%20%20%20%20%20if%20(!label)%20%7B%0A%20%20%20%20%20%20%20%20this._ariaLabelledBy%20%3D%20''%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20labelledBy%3B%0A%20%20%20%20%20%20if%20(label.id)%20%7B%0A%20%20%20%20%20%20%20%20labelledBy%20%3D%20label.id%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20labelledBy%20%3D%20'paper-input-label-'%20%2B%20Polymer.PaperInputHelper.NextLabelID%2B%2B%3B%0A%20%20%20%20%20%20%20%20label.id%20%3D%20labelledBy%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this._ariaLabelledBy%20%3D%20labelledBy%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_generateInputId%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(!this._inputId%20%7C%7C%20this._inputId%20%3D%3D%3D%20'')%20%7B%0A%20%20%20%20%20%20%20%20this._inputId%20%3D%20%20'input-'%20%2B%20Polymer.PaperInputHelper.NextInputID%2B%2B%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onChange%3Afunction(event)%20%7B%0A%20%20%20%20%20%20%2F%2F%20In%20the%20Shadow%20DOM%2C%20the%20%60change%60%20event%20is%20not%20leaked%20into%20the%0A%20%20%20%20%20%20%2F%2F%20ancestor%20tree%2C%20so%20we%20must%20do%20this%20manually.%0A%20%20%20%20%20%20%2F%2F%20See%20https%3A%2F%2Fw3c.github.io%2Fwebcomponents%2Fspec%2Fshadow%2F%23events-that-are-not-leaked-into-ancestor-trees.%0A%20%20%20%20%20%20if%20(this.shadowRoot)%20%7B%0A%20%20%20%20%20%20%20%20this.fire(event.type%2C%20%7BsourceEvent%3A%20event%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20node%3A%20this%2C%0A%20%20%20%20%20%20%20%20%20%20bubbles%3A%20event.bubbles%2C%0A%20%20%20%20%20%20%20%20%20%20cancelable%3A%20event.cancelable%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_autofocusChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Firefox%20doesn't%20respect%20the%20autofocus%20attribute%20if%20it's%20applied%20after%0A%20%20%20%20%20%20%2F%2F%20the%20page%20is%20loaded%20(Chrome%2FWebKit%20do%20respect%20it)%2C%20preventing%20an%0A%20%20%20%20%20%20%2F%2F%20autofocus%20attribute%20specified%20in%20markup%20from%20taking%20effect%20when%20the%0A%20%20%20%20%20%20%2F%2F%20element%20is%20upgraded.%20As%20a%20workaround%2C%20if%20the%20autofocus%20property%20is%20set%2C%0A%20%20%20%20%20%20%2F%2F%20and%20the%20focus%20hasn't%20already%20been%20moved%20elsewhere%2C%20we%20take%20focus.%0A%20%20%20%20%20%20if%20(this.autofocus%20%26%26%20this._focusableElement)%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20In%20IE%2011%2C%20the%20default%20document.activeElement%20can%20be%20the%20page's%0A%20%20%20%20%20%20%20%20%2F%2F%20outermost%20html%20element%2C%20but%20there%20are%20also%20cases%20(under%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20polyfill%3F)%20in%20which%20the%20activeElement%20is%20not%20a%20real%20HTMLElement%2C%20but%0A%20%20%20%20%20%20%20%20%2F%2F%20just%20a%20plain%20object.%20We%20identify%20the%20latter%20case%20as%20having%20no%20valid%0A%20%20%20%20%20%20%20%20%2F%2F%20activeElement.%0A%20%20%20%20%20%20%20%20var%20activeElement%20%3D%20document.activeElement%3B%0A%20%20%20%20%20%20%20%20var%20isActiveElementValid%20%3D%20activeElement%20instanceof%20HTMLElement%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Has%20some%20other%20element%20has%20already%20taken%20the%20focus%3F%0A%20%20%20%20%20%20%20%20var%20isSomeElementActive%20%3D%20isActiveElementValid%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20activeElement%20!%3D%3D%20document.body%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20activeElement%20!%3D%3D%20document.documentElement%3B%20%2F*%20IE%2011%20*%2F%0A%20%20%20%20%20%20%20%20if%20(!isSomeElementActive)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20No%20specific%20element%20has%20taken%20the%20focus%20yet%2C%20so%20we%20can%20take%20it.%0A%20%20%20%20%20%20%20%20%20%20this._focusableElement.focus()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F**%20%40polymerBehavior%20*%2F%0A%20%20Polymer.PaperInputBehavior%20%3D%20%5B%0A%20%20%20%20Polymer.IronControlState%2C%0A%20%20%20%20Polymer.IronA11yKeysBehavior%2C%0A%20%20%20%20Polymer.PaperInputBehaviorImpl%0A%20%20%5D%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-behavior.html.js%0A",
            "resourceBytes": 18183,
            "encodedBytes": 0,
            "unusedBytes": 5538
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F**%0A%20%20%20*%20Use%20%60Polymer.PaperInputAddonBehavior%60%20to%20implement%20an%20add-on%20for%20%60%3Cpaper-input-container%3E%60.%20A%0A%20%20%20*%20add-on%20appears%20below%20the%20input%2C%20and%20may%20display%20information%20based%20on%20the%20input%20value%20and%0A%20%20%20*%20validity%20such%20as%20a%20character%20counter%20or%20an%20error%20message.%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%2F%0A%20%20Polymer.PaperInputAddonBehavior%20%3D%20%7B%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Workaround%20for%20https%3A%2F%2Fgithub.com%2Fwebcomponents%2Fshadydom%2Fissues%2F96%0A%20%20%20%20%20%20Polymer.dom.flush()%3B%0A%20%20%20%20%20%20this.fire('addon-attached')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20function%20called%20by%20%60%3Cpaper-input-container%3E%60%20when%20the%20input%20value%20or%20validity%20changes.%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20inputElement%3A%20(Element%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20value%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20invalid%3A%20boolean%0A%20%20%20%20%20*%20%7D%7D%20state%20-%0A%20%20%20%20%20*%20%20%20%20%20inputElement%3A%20The%20input%20element.%0A%20%20%20%20%20*%20%20%20%20%20value%3A%20The%20input%20value.%0A%20%20%20%20%20*%20%20%20%20%20invalid%3A%20True%20if%20the%20input%20value%20is%20invalid.%0A%20%20%20%20%20*%2F%0A%20%20%20%20update%3A%20function(state)%20%7B%0A%20%20%20%20%7D%0A%0A%20%20%7D%3B%0A%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-addon-behavior.html.js%0A",
            "resourceBytes": 1089,
            "encodedBytes": 0,
            "unusedBytes": 179
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-char-counter'%2C%0A%0A%20%20%20%20behaviors%3A%20%5B%0A%20%20%20%20%20%20Polymer.PaperInputAddonBehavior%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20_charCounterStr%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'0'%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20This%20overrides%20the%20update%20function%20in%20PaperInputAddonBehavior.%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20inputElement%3A%20(Element%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20value%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20invalid%3A%20boolean%0A%20%20%20%20%20*%20%7D%7D%20state%20-%0A%20%20%20%20%20*%20%20%20%20%20inputElement%3A%20The%20input%20element.%0A%20%20%20%20%20*%20%20%20%20%20value%3A%20The%20input%20value.%0A%20%20%20%20%20*%20%20%20%20%20invalid%3A%20True%20if%20the%20input%20value%20is%20invalid.%0A%20%20%20%20%20*%2F%0A%20%20%20%20update%3A%20function(state)%20%7B%0A%20%20%20%20%20%20if%20(!state.inputElement)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20state.value%20%3D%20state.value%20%7C%7C%20''%3B%0A%0A%20%20%20%20%20%20var%20counter%20%3D%20state.value.toString().length.toString()%3B%0A%0A%20%20%20%20%20%20if%20(state.inputElement.hasAttribute('maxlength'))%20%7B%0A%20%20%20%20%20%20%20%20counter%20%2B%3D%20'%2F'%20%2B%20state.inputElement.getAttribute('maxlength')%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._charCounterStr%20%3D%20counter%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-char-counter.html.js%0A",
            "resourceBytes": 1105,
            "encodedBytes": 0,
            "unusedBytes": 360
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-container'%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20disable%20the%20floating%20label.%20The%20label%20disappears%20when%20the%20input%20value%20is%0A%20%20%20%20%20%20%20*%20not%20null.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20noLabelFloat%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20always%20float%20the%20floating%20label.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20alwaysFloatLabel%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20attribute%20to%20listen%20for%20value%20changes%20on.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20attrForValue%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'bind-value'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20auto-validate%20the%20input%20value%20when%20it%20changes.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autoValidate%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20input%20is%20invalid.%20This%20property%20is%20set%20automatically%20when%20the%20input%20value%0A%20%20%20%20%20%20%20*%20changes%20if%20auto-validating%2C%20or%20when%20the%20%60iron-input-validate%60%20event%20is%20heard%20from%20a%20child.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20observer%3A%20'_invalidChanged'%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20input%20has%20focus.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20focused%3A%20%7B%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_addons%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%0A%20%20%20%20%20%20%20%20%2F%2F%20do%20not%20set%20a%20default%20value%20here%20intentionally%20-%20it%20will%20be%20initialized%20lazily%20when%20a%0A%20%20%20%20%20%20%20%20%2F%2F%20distributed%20child%20is%20attached%2C%20which%20may%20occur%20before%20configuration%20for%20this%20element%0A%20%20%20%20%20%20%20%20%2F%2F%20in%20polyfill.%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_inputHasContent%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_inputSelector%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'input%2Ciron-input%2Ctextarea%2C.paper-input-input'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundOnFocus%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onFocus.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundOnBlur%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onBlur.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundOnInput%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onInput.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundValueChanged%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onValueChanged.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20'addon-attached'%3A%20'_onAddonAttached'%2C%0A%20%20%20%20%20%20'iron-input-validate'%3A%20'_onIronInputValidate'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_valueChangedEvent()%20%7B%0A%20%20%20%20%20%20return%20this.attrForValue%20%2B%20'-changed'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_propertyForValue()%20%7B%0A%20%20%20%20%20%20return%20Polymer.CaseMap.dashToCamelCase(this.attrForValue)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_inputElement()%20%7B%0A%20%20%20%20%20%20return%20Polymer.dom(this).querySelector(this._inputSelector)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_inputElementValue()%20%7B%0A%20%20%20%20%20%20return%20this._inputElement%5Bthis._propertyForValue%5D%20%7C%7C%20this._inputElement.value%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20ready%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Paper-input%20treats%20a%20value%20of%20undefined%20differently%20at%20startup%20than%0A%20%20%20%20%20%20%2F%2F%20the%20rest%20of%20the%20time%20(specifically%3A%20it%20does%20not%20validate%20it%20at%20startup%2C%20but%0A%20%20%20%20%20%20%2F%2F%20it%20does%20after%20that.%20We%20need%20to%20track%20whether%20the%20first%20time%20we%20encounter%0A%20%20%20%20%20%20%2F%2F%20the%20value%20is%20basically%20this%20first%20time%2C%20so%20that%20we%20can%20validate%20it%0A%20%20%20%20%20%20%2F%2F%20correctly%20the%20rest%20of%20the%20time.%20See%20https%3A%2F%2Fgithub.com%2FPolymerElements%2Fpaper-input%2Fissues%2F605%0A%20%20%20%20%20%20this.__isFirstValueUpdate%20%3D%20true%3B%0A%20%20%20%20%20%20if%20(!this._addons)%20%7B%0A%20%20%20%20%20%20%20%20this._addons%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this.addEventListener('focus'%2C%20this._boundOnFocus%2C%20true)%3B%0A%20%20%20%20%20%20this.addEventListener('blur'%2C%20this._boundOnBlur%2C%20true)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.attrForValue)%20%7B%0A%20%20%20%20%20%20%20%20this._inputElement.addEventListener(this._valueChangedEvent%2C%20this._boundValueChanged)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.addEventListener('input'%2C%20this._onInput)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Only%20validate%20when%20attached%20if%20the%20input%20already%20has%20a%20value.%0A%20%20%20%20%20%20if%20(this._inputElementValue%20%26%26%20this._inputElementValue%20!%3D%20'')%20%7B%0A%20%20%20%20%20%20%20%20this._handleValueAndAutoValidate(this._inputElement)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this._handleValue(this._inputElement)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onAddonAttached%3A%20function(event)%20%7B%0A%20%20%20%20%20%20if%20(!this._addons)%20%7B%0A%20%20%20%20%20%20%20%20this._addons%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20target%20%3D%20event.target%3B%0A%20%20%20%20%20%20if%20(this._addons.indexOf(target)%20%3D%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this._addons.push(target)%3B%0A%20%20%20%20%20%20%20%20if%20(this.isAttached)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._handleValue(this._inputElement)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onFocus%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setFocused(true)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onBlur%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setFocused(false)%3B%0A%20%20%20%20%20%20this._handleValueAndAutoValidate(this._inputElement)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onInput%3A%20function(event)%20%7B%0A%20%20%20%20%20%20this._handleValueAndAutoValidate(event.target)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onValueChanged%3A%20function(event)%20%7B%0A%20%20%20%20%20%20var%20input%20%3D%20event.target%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Paper-input%20treats%20a%20value%20of%20undefined%20differently%20at%20startup%20than%0A%20%20%20%20%20%20%2F%2F%20the%20rest%20of%20the%20time%20(specifically%3A%20it%20does%20not%20validate%20it%20at%20startup%2C%20but%0A%20%20%20%20%20%20%2F%2F%20it%20does%20after%20that.%20If%20this%20is%20in%20fact%20the%20bootup%20case%2C%20ignore%20validation%2C%0A%20%20%20%20%20%20%2F%2F%20just%20this%20once.%0A%20%20%20%20%20%20if%20(this.__isFirstValueUpdate)%20%7B%0A%20%20%20%20%20%20%20%20this.__isFirstValueUpdate%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20if%20(input.value%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._handleValueAndAutoValidate(event.target)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleValue%3A%20function(inputElement)%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20this._inputElementValue%3B%0A%0A%20%20%20%20%20%20%2F%2F%20type%3D%22number%22%20hack%20needed%20because%20this.value%20is%20empty%20until%20it's%20valid%0A%20%20%20%20%20%20if%20(value%20%7C%7C%20value%20%3D%3D%3D%200%20%7C%7C%20(inputElement.type%20%3D%3D%3D%20'number'%20%26%26%20!inputElement.checkValidity()))%20%7B%0A%20%20%20%20%20%20%20%20this._inputHasContent%20%3D%20true%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this._inputHasContent%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this.updateAddons(%7B%0A%20%20%20%20%20%20%20%20inputElement%3A%20inputElement%2C%0A%20%20%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20%20%20invalid%3A%20this.invalid%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleValueAndAutoValidate%3A%20function(inputElement)%20%7B%0A%20%20%20%20%20%20if%20(this.autoValidate%20%26%26%20inputElement)%20%7B%0A%20%20%20%20%20%20%20%20var%20valid%3B%0A%0A%20%20%20%20%20%20%20%20if%20(inputElement.validate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20valid%20%3D%20inputElement.validate(this._inputElementValue)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20valid%20%3D%20inputElement.checkValidity()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!valid%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Call%20this%20last%20to%20notify%20the%20add-ons.%0A%20%20%20%20%20%20this._handleValue(inputElement)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onIronInputValidate%3A%20function(event)%20%7B%0A%20%20%20%20%20%20this.invalid%20%3D%20this._inputElement.invalid%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_invalidChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this._addons)%20%7B%0A%20%20%20%20%20%20%20%20this.updateAddons(%7Binvalid%3A%20this.invalid%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Call%20this%20to%20update%20the%20state%20of%20add-ons.%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20state%20Add-on%20state.%0A%20%20%20%20%20*%2F%0A%20%20%20%20updateAddons%3A%20function(state)%20%7B%0A%20%20%20%20%20%20for%20(var%20addon%2C%20index%20%3D%200%3B%20addon%20%3D%20this._addons%5Bindex%5D%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20addon.update(state)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeInputContentClass%3A%20function(noLabelFloat%2C%20alwaysFloatLabel%2C%20focused%2C%20invalid%2C%20_inputHasContent)%20%7B%0A%20%20%20%20%20%20var%20cls%20%3D%20'input-content'%3B%0A%20%20%20%20%20%20if%20(!noLabelFloat)%20%7B%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20this.querySelector('label')%3B%0A%0A%20%20%20%20%20%20%20%20if%20(alwaysFloatLabel%20%7C%7C%20_inputHasContent)%20%7B%0A%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20label-is-floating'%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20the%20label%20is%20floating%2C%20ignore%20any%20offsets%20that%20may%20have%20been%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20applied%20from%20a%20prefix%20element.%0A%20%20%20%20%20%20%20%20%20%20this.%24.labelAndInputContainer.style.position%20%3D%20'static'%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20%22%20label-is-highlighted%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20When%20the%20label%20is%20not%20floating%2C%20it%20should%20overlap%20the%20input%20element.%0A%20%20%20%20%20%20%20%20%20%20if%20(label)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%24.labelAndInputContainer.style.position%20%3D%20'relative'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20(_inputHasContent)%20%7B%0A%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20label-is-hidden'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20focused'%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20cls%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeUnderlineClass%3A%20function(focused%2C%20invalid)%20%7B%0A%20%20%20%20%20%20var%20cls%20%3D%20'underline'%3B%0A%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-highlighted'%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20cls%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeAddOnContentClass%3A%20function(focused%2C%20invalid)%20%7B%0A%20%20%20%20%20%20var%20cls%20%3D%20'add-on-content'%3B%0A%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-highlighted'%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20cls%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-container.html.js%0A",
            "resourceBytes": 8425,
            "encodedBytes": 0,
            "unusedBytes": 5637
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-error'%2C%0A%0A%20%20%20%20behaviors%3A%20%5B%0A%20%20%20%20%20%20Polymer.PaperInputAddonBehavior%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20error%20is%20showing.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20reflectToAttribute%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20This%20overrides%20the%20update%20function%20in%20PaperInputAddonBehavior.%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20inputElement%3A%20(Element%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20value%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20invalid%3A%20boolean%0A%20%20%20%20%20*%20%7D%7D%20state%20-%0A%20%20%20%20%20*%20%20%20%20%20inputElement%3A%20The%20input%20element.%0A%20%20%20%20%20*%20%20%20%20%20value%3A%20The%20input%20value.%0A%20%20%20%20%20*%20%20%20%20%20invalid%3A%20True%20if%20the%20input%20value%20is%20invalid.%0A%20%20%20%20%20*%2F%0A%20%20%20%20update%3A%20function(state)%20%7B%0A%20%20%20%20%20%20this._setInvalid(state.invalid)%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-error.html.js%0A",
            "resourceBytes": 883,
            "encodedBytes": 0,
            "unusedBytes": 62
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input'%2C%0A%0A%20%20%20%20behaviors%3A%20%5B%0A%20%20%20%20%20%20Polymer.PaperInputBehavior%2C%0A%20%20%20%20%20%20Polymer.IronFormElementBehavior%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20beforeRegister%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20We%20need%20to%20tell%20which%20kind%20of%20of%20template%20to%20stamp%20based%20on%0A%20%20%20%20%20%20%2F%2F%20what%20kind%20of%20%60iron-input%60%20we%20got%2C%20but%20because%20of%20polyfills%20and%0A%20%20%20%20%20%20%2F%2F%20custom%20elements%20differences%20between%20v0%20and%20v1%2C%20the%20safest%20bet%20is%0A%20%20%20%20%20%20%2F%2F%20to%20check%20a%20particular%20method%20we%20know%20the%20iron-input%232.x%20can%20have.%0A%20%20%20%20%20%20%2F%2F%20If%20it%20doesn't%20have%20it%2C%20then%20it's%20an%20iron-input%231.x.%0A%20%20%20%20%20%20var%20ironInput%20%3D%20document.createElement('iron-input')%3B%0A%20%20%20%20%20%20var%20version%20%3D%20typeof%20ironInput._initSlottedInput%20%3D%3D%20'function'%20%3F%20'v1'%20%3A%20'v0'%3B%0A%20%20%20%20%20%20var%20template%20%3D%20Polymer.DomModule.import('paper-input'%2C%20'template')%3B%0A%20%20%20%20%20%20var%20inputTemplate%20%3D%20Polymer.DomModule.import('paper-input'%2C%20'template%23'%20%2B%20version)%3B%0A%20%20%20%20%20%20var%20inputPlaceholder%20%3D%20template.content.querySelector('%23template-placeholder')%3B%0A%20%20%20%20%20%20if%20(inputPlaceholder)%20%7B%0A%20%20%20%20%20%20%20%20inputPlaceholder.parentNode.replaceChild(inputTemplate.content%2C%20inputPlaceholder)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20else%20it's%20already%20been%20processed%2C%20probably%20in%20superclass%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20a%20reference%20to%20the%20focusable%20element.%20Overridden%20from%20PaperInputBehavior%0A%20%20%20%20%20*%20to%20correctly%20focus%20the%20native%20input.%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20_focusableElement()%20%7B%0A%20%20%20%20%20%20return%20Polymer.Element%20%3F%20this.inputElement._inputElement%20%3A%20this.inputElement%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F%2F%20Note%3A%20This%20event%20is%20only%20available%20in%20the%201.0%20version%20of%20this%20element.%0A%20%20%20%20%2F%2F%20In%202.0%2C%20the%20functionality%20of%20%60_onIronInputReady%60%20is%20done%20in%0A%20%20%20%20%2F%2F%20PaperInputBehavior%3A%3Aattached.%0A%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20'iron-input-ready'%3A%20'_onIronInputReady'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onIronInputReady%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Even%20though%20this%20is%20only%20used%20in%20the%20next%20line%2C%20save%20this%20for%0A%20%20%20%20%20%20%2F%2F%20backwards%20compatibility%2C%20since%20the%20native%20input%20had%20this%20ID%20until%202.0.5.%0A%20%20%20%20%20%20if%20(!this.%24.nativeInput)%20%7B%0A%20%20%20%20%20%20%20%20this.%24.nativeInput%20%3D%20this.%24%24('input')%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(this.inputElement%20%26%26%0A%20%20%20%20%20%20%20%20%20%20this._typesThatHaveText.indexOf(this.%24.nativeInput.type)%20!%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this.alwaysFloatLabel%20%3D%20true%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Only%20validate%20when%20attached%20if%20the%20input%20already%20has%20a%20value.%0A%20%20%20%20%20%20if%20(!!this.inputElement.bindValue)%20%7B%0A%20%20%20%20%20%20%20%20this.%24.container._handleValueAndAutoValidate(this.inputElement)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input.html.js%0A",
            "resourceBytes": 2416,
            "encodedBytes": 0,
            "unusedBytes": 1682
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-search-bar'%2CdesignId%3A'N12'%2Cproperties%3A%7B%2F*%20the%20value%20of%20the%20search%20at%20anytime%20should%20be%20passed%20in%20with%20dual%20binding%20*%2F%2F*%20since%20it%20is%20notify%20it%20can%20pass%20data%20up.%20*%2FsearchValue%3A%7Btype%3AString%2Cnotify%3Atrue%7D%2C%2F*%20placeholder%20localization%20*%2Fl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'placeholder'%3A'What%20do%20you%20want%20to%20find%3F'%7D%2C'es'%3A%7B'placeholder'%3A'%C2%BFQu%C3%A9%20quieres%20encontrar%3F'%7D%7D%3B%7D%7D%2Cerror%3A%7Btype%3ABoolean%7D%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%5D%2Cready%3Afunction%20ready()%7Bthis.dispatchEvent(new%20CustomEvent('searchRendered'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3Bif(this._isIE())%7Bthis.classList.add('ie')%3Bthis._removeBorder()%3B%7D%7D%2C_isIE%3Afunction%20_isIE()%7Breturn!!window.MSInputMethodContext%26%26!!document.documentMode%3B%7D%2C%2F%2F%20the%20%60--paper-input-container-input%60%20mixin%20does%20not%20work%20for%20IE11%0A_removeBorder%3Afunction%20_removeBorder()%7Bvar%20input%3Dthis.%24.paperInput.shadowRoot.querySelector('input')%3Bif(input)%7Binput.style.border%3D'none'%3B%7D%7D%2C_formSubmit%3Afunction%20_formSubmit(e)%7Be.preventDefault()%3Bthis.dispatchEvent(new%20CustomEvent('formSubmit'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3A%7BsearchValue%3Athis.searchValue%7D%7D))%3B%7D%2C_keyDown%3Afunction%20_keyDown(e)%7B%2F%2F%20is%20enter%0Aif(e.keyCode%3D%3D%3D13)%7Bthis._formSubmit(e)%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-search-bar%2Fnav-search-bar.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-search-bar%2Fnav-search-bar.html.js%0A",
            "resourceBytes": 1432,
            "encodedBytes": 0,
            "unusedBytes": 726,
            "children": [
              {
                "name": "elements/nav/nav-search-bar/nav-search-bar.html_script_0.js",
                "resourceBytes": 1181,
                "unusedBytes": 726
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 251
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%0A%20%2F**%0A%20*%20%60iron-range-behavior%60%20provides%20the%20behavior%20for%20something%20with%20a%20minimum%20to%20maximum%20range.%0A%20*%0A%20*%20%40demo%20demo%2Findex.html%0A%20*%20%40polymerBehavior%0A%20*%2F%0A%20Polymer.IronRangeBehavior%20%3D%20%7B%0A%0A%20%20properties%3A%20%7B%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20number%20that%20represents%20the%20current%20value.%0A%20%20%20%20%20*%2F%0A%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20value%3A%200%2C%0A%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20reflectToAttribute%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20number%20that%20indicates%20the%20minimum%20value%20of%20the%20range.%0A%20%20%20%20%20*%2F%0A%20%20%20%20min%3A%20%7B%0A%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20value%3A%200%2C%0A%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20number%20that%20indicates%20the%20maximum%20value%20of%20the%20range.%0A%20%20%20%20%20*%2F%0A%20%20%20%20max%3A%20%7B%0A%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20value%3A%20100%2C%0A%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Specifies%20the%20value%20granularity%20of%20the%20range's%20value.%0A%20%20%20%20%20*%2F%0A%20%20%20%20step%3A%20%7B%0A%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20value%3A%201%2C%0A%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20the%20ratio%20of%20the%20value.%0A%20%20%20%20%20*%2F%0A%20%20%20%20ratio%3A%20%7B%0A%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20value%3A%200%2C%0A%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%7D%2C%0A%20%20%7D%2C%0A%0A%20%20observers%3A%20%5B%0A%20%20%20%20'_update(value%2C%20min%2C%20max%2C%20step)'%0A%20%20%5D%2C%0A%0A%20%20_calcRatio%3A%20function(value)%20%7B%0A%20%20%20%20return%20(this._clampValue(value)%20-%20this.min)%20%2F%20(this.max%20-%20this.min)%3B%0A%20%20%7D%2C%0A%0A%20%20_clampValue%3A%20function(value)%20%7B%0A%20%20%20%20return%20Math.min(this.max%2C%20Math.max(this.min%2C%20this._calcStep(value)))%3B%0A%20%20%7D%2C%0A%0A%20%20_calcStep%3A%20function(value)%20%7B%0A%20%20%20%20%2F%2F%20polymer%2Fissues%2F2493%0A%20%20%20%20value%20%3D%20parseFloat(value)%3B%0A%0A%20%20%20%20if%20(!this.step)%20%7B%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20numSteps%20%3D%20Math.round((value%20-%20this.min)%20%2F%20this.step)%3B%0A%20%20%20%20if%20(this.step%20%3C%201)%20%7B%0A%20%20%20%20%20%2F**%0A%20%20%20%20%20%20*%20For%20small%20values%20of%20this.step%2C%20if%20we%20calculate%20the%20step%20using%0A%20%20%20%20%20%20*%20%60Math.round(value%20%2F%20step)%20*%20step%60%20we%20may%20hit%20a%20precision%20point%20issue%0A%20%20%20%20%20%20*%20eg.%200.1%20*%200.2%20%3D%20%200.020000000000000004%0A%20%20%20%20%20%20*%20http%3A%2F%2Fdocs.oracle.com%2Fcd%2FE19957-01%2F806-3568%2Fncg_goldberg.html%0A%20%20%20%20%20%20*%0A%20%20%20%20%20%20*%20as%20a%20work%20around%20we%20can%20divide%20by%20the%20reciprocal%20of%20%60step%60%0A%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20return%20numSteps%20%2F%20(1%20%2F%20this.step)%20%2B%20this.min%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20numSteps%20*%20this.step%20%2B%20this.min%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20_validateValue%3A%20function()%20%7B%0A%20%20%20%20var%20v%20%3D%20this._clampValue(this.value)%3B%0A%20%20%20%20this.value%20%3D%20this.oldValue%20%3D%20isNaN(v)%20%3F%20this.oldValue%20%3A%20v%3B%0A%20%20%20%20return%20this.value%20!%3D%3D%20v%3B%0A%20%20%7D%2C%0A%0A%20%20_update%3A%20function()%20%7B%0A%20%20%20%20this._validateValue()%3B%0A%20%20%20%20this._setRatio(this._calcRatio(this.value)%20*%20100)%3B%0A%20%20%7D%0A%0A%7D%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-range-behavior%2Firon-range-behavior.html.js%0A",
            "resourceBytes": 2429,
            "encodedBytes": 0,
            "unusedBytes": 1128
          },
          {
            "name": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-progress'%2C%0A%0A%20%20%20%20behaviors%3A%20%5B%0A%20%20%20%20%20%20Polymer.IronRangeBehavior%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20number%20that%20represents%20the%20current%20secondary%20progress.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20secondaryProgress%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20value%3A%200%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20secondary%20ratio%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20secondaryRatio%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20value%3A%200%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Use%20an%20indeterminate%20progress%20indicator.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20indeterminate%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_toggleIndeterminate'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20progress%20is%20disabled.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20disabled%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20reflectToAttribute%3A%20true%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_disabledChanged'%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20observers%3A%20%5B%0A%20%20%20%20%20%20'_progressChanged(secondaryProgress%2C%20value%2C%20min%2C%20max%2C%20indeterminate)'%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20role%3A%20'progressbar'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_toggleIndeterminate%3A%20function(indeterminate)%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20we%20use%20attribute%2Fclass%20binding%2C%20the%20animation%20sometimes%20doesn't%20translate%20properly%0A%20%20%20%20%20%20%2F%2F%20on%20Safari%207.1.%20So%20instead%2C%20we%20toggle%20the%20class%20here%20in%20the%20update%20method.%0A%20%20%20%20%20%20this.toggleClass('indeterminate'%2C%20indeterminate%2C%20this.%24.primaryProgress)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_transformProgress%3A%20function(progress%2C%20ratio)%20%7B%0A%20%20%20%20%20%20var%20transform%20%3D%20'scaleX('%20%2B%20(ratio%20%2F%20100)%20%2B%20')'%3B%0A%20%20%20%20%20%20progress.style.transform%20%3D%20progress.style.webkitTransform%20%3D%20transform%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_mainRatioChanged%3A%20function(ratio)%20%7B%0A%20%20%20%20%20%20this._transformProgress(this.%24.primaryProgress%2C%20ratio)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_progressChanged%3A%20function(secondaryProgress%2C%20value%2C%20min%2C%20max%2C%20indeterminate)%20%7B%0A%20%20%20%20%20%20secondaryProgress%20%3D%20this._clampValue(secondaryProgress)%3B%0A%20%20%20%20%20%20value%20%3D%20this._clampValue(value)%3B%0A%0A%20%20%20%20%20%20var%20secondaryRatio%20%3D%20this._calcRatio(secondaryProgress)%20*%20100%3B%0A%20%20%20%20%20%20var%20mainRatio%20%3D%20this._calcRatio(value)%20*%20100%3B%0A%0A%20%20%20%20%20%20this._setSecondaryRatio(secondaryRatio)%3B%0A%20%20%20%20%20%20this._transformProgress(this.%24.secondaryProgress%2C%20secondaryRatio)%3B%0A%20%20%20%20%20%20this._transformProgress(this.%24.primaryProgress%2C%20mainRatio)%3B%0A%0A%20%20%20%20%20%20this.secondaryProgress%20%3D%20secondaryProgress%3B%0A%0A%20%20%20%20%20%20if%20(indeterminate)%20%7B%0A%20%20%20%20%20%20%20%20this.removeAttribute('aria-valuenow')%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.setAttribute('aria-valuenow'%2C%20value)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this.setAttribute('aria-valuemin'%2C%20min)%3B%0A%20%20%20%20%20%20this.setAttribute('aria-valuemax'%2C%20max)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_disabledChanged%3A%20function(disabled)%20%7B%0A%20%20%20%20%20%20this.setAttribute('aria-disabled'%2C%20disabled%20%3F%20'true'%20%3A%20'false')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_hideSecondaryProgress%3A%20function(secondaryRatio)%20%7B%0A%20%20%20%20%20%20return%20secondaryRatio%20%3D%3D%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-progress%2Fpaper-progress.html.js%0A",
            "resourceBytes": 2770,
            "encodedBytes": 0,
            "unusedBytes": 1475
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PackagedContentBehavior%20*%2Fwindow.ga_data.behaviors.PackagedContentBehavior%3D%7B_valueChange%3Afunction%20_valueChange(service%2CsiteCode%2Cfront%2Cquery%2Cssts%2Ccount%2CassetType%2CincludeBody%2CprestoModuleName)%7B%2F%2F%20get%20a%20default%20value%20here%20and%20increment%20it%0Acount%3Dcount%7C%7C5%3Bcount%2B%2B%3Bif(ssts%26%26ssts.indexOf('sstspath%3A')%3E-1)%7Bssts%3Dssts.split('%3A')%5B1%5D%3B%7Dif(ssts%26%26ssts%3D%3D'*')%7Bssts%3D''%3B%7Dvar%20err%3Dfalse%3Bvar%20url%3Dga_data.site.hosts.pcsAPI%3Bvar%20baseKey%3Dga_data.site.keys.pcsKey%3Bvar%20siteUAID%3Dthis.getAttribute('site-code')%7C%7Cwindow.ga_data.site.uaid%3Bif(service%3D%3D%3D'section')%7Bif(front)%7Burl%2B%3D'section%2Fpromo%2F'%2BsiteUAID%2B'%2F'%2Bfront%3Burl%3Dthis._appendUrlParam(url%2C'site-code'%2Cwindow.ga_data.site.uaid)%3Burl%3Dthis._appendUrlParam(url%2C'count'%2Ccount)%3Burl%3Dthis._appendUrlParam(url%2C'includeBody'%2CincludeBody)%3Burl%3Dthis._appendUrlParam(url%2C'prestomodulename'%2CprestoModuleName)%3B%7Delse%7Berr%3Dtrue%3B%7D%7Delse%20if(service%3D%3D%3D'sectionlite')%7Bif(front)%7Burl%2B%3D'section%2Fpromo%2Fbymodule%2F'%2BsiteUAID%2B'%2F'%2Bfront%3Burl%3Dthis._appendUrlParam(url%2C'site-code'%2Cwindow.ga_data.site.uaid)%3Burl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'count'%2Ccount)%3B%7Delse%7Berr%3Dtrue%3B%7D%7Delse%20if(service%3D%3D%3D'popular')%7Burl%2B%3D'popular%2F'%2Bwindow.ga_data.site.uaid%2B(count%3F'%2F'%2Bcount%3A'')%3Bif(ssts)%7Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cssts)%3B%7Durl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'searchtype'%2C'pageViews')%3B%7Delse%20if(service%3D%3D%3D'social')%7Burl%2B%3D'popular%2F'%2Bwindow.ga_data.site.uaid%2B(count%3F'%2F'%2Bcount%3A'')%3Bif(ssts)%7Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cssts)%3B%7Durl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'searchtype'%2C'socialReferrals')%3B%7Delse%20if(service%3D%3D%3D'trending')%7Burl%2B%3D'popular%2F'%2Bwindow.ga_data.site.uaid%2B(count%3F'%2F'%2Bcount%3A'')%3Bif(ssts)%7Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cssts)%3B%7Durl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'searchtype'%2C'pageViews')%3B%7Delse%7Berr%3Dtrue%3B%7Dif(err)%7Bthis._handleError()%3B%7Delse%7Breturn%20this._appendUrlParam(url%2C'apiKey'%2CbaseKey)%3B%7Dreturn''%3B%7D%2C_appendUrlParam%3Afunction%20_appendUrlParam(url%2CparamName%2CparamValue)%7Bif(paramValue)%7Breturn''%2Burl%2B(url.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BparamName%2B'%3D'%2BencodeURIComponent(paramValue)%3B%7Dreturn%20url%3B%7D%2C_getLabel%3Afunction%20_getLabel(ssts)%7Breturn%20ssts.taxonomyEntityDisplayName%3Fssts.taxonomyEntityDisplayName%3Assts.leafName%3B%7D%2C_parseDate%3Afunction%20_parseDate(parseDate)%7Bif(isNaN(parseDate))%7Bvar%20tempTime%3Dnew%20Date(parseDate).getTime()%3Breturn!isNaN(tempTime)%26%26tempTime%3FtempTime%3A''%3B%7Delse%7Breturn(parseInt(parseDate)*1000).toString()%3B%7D%7D%2C_getFormattedSsts%3Afunction%20_getFormattedSsts(ssts)%7Bif(!ssts)return''%3Bif(ssts.subtopic)return%20ssts.section%2B'%2F'%2Bssts.subsection%2B'%2F'%2Bssts.topic%2B'%2F'%2Bssts.subtopic%3Bif(ssts.topic)return%20ssts.section%2B'%2F'%2Bssts.subsection%2B'%2F'%2Bssts.topic%3Bif(ssts.subsection)return%20ssts.section%2B'%2F'%2Bssts.subsection%3Breturn''%2Bssts.section%3B%7D%2C_removeStoryAsset%3Afunction%20_removeStoryAsset(storyAsset%2Cassets%2Ccount)%7Bvar%20ret%3Dassets.filter(function(asset)%7Breturn%20asset.assetId!%3D%3DstoryAsset.toString()%3B%7D)%3B%2F%2F%20default%20value%0Acount%3Dcount%7C%7C5%3Bif(ret.length%3Ecount)%7Bret.splice(-1%2C1)%3B%7Dreturn%20ret%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpackaged-content-behavior.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpackaged-content-behavior.html.js%0A",
            "resourceBytes": 3386,
            "encodedBytes": 0,
            "unusedBytes": 2866,
            "children": [
              {
                "name": "gallium/behaviors/packaged-content-behavior.html_script_0.js",
                "resourceBytes": 3136,
                "unusedBytes": 2866
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 250
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-search-bucket'%2CdesignId%3A'N7'%2Cproperties%3A%7B%2F*%20for%20empty%20search%20text%20*%2Fl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'empty-search'%3A'Sorry!%20There%20are%20no%20results%20for%20your%20search%20term.%20Please%20check%20the%20spelling%20of%20your%20search%20term%2C%20or%20try%20a%20different%20word%20or%20phrase.'%2C'story'%3A'Stories'%7D%2C'es'%3A%7B'empty-search'%3A'%C2%A1Lo%20siento!%20No%20hay%20resultados%20para%20su%20t%C3%A9rmino%20de%20b%C3%BAsqueda.%20Compruebe%20la%20ortograf%C3%ADa%20de%20su%20t%C3%A9rmino%20de%20b%C3%BAsqueda%20o%20pruebe%20una%20palabra%20o%20frase%20diferente.'%2C'story'%3A'Los%20Cuentos'%7D%7D%3B%7D%7D%2C%2F*%20siteId%20to%20choose%20between%20usat%20and%20uscp%20stuffs%20*%2FsiteId%3A%7Btype%3ANumber%2Cvalue%3Afunction%20value()%7Breturn%20ga_data.site.siteId%3B%7D%7D%2CsiteCode%3A%7Btype%3AString%2Cvalue%3Afunction%20value()%7Breturn%20ga_data.site.uaid%3B%7D%7D%2C%2F*%20tells%20which%20child%20module%20to%20use%20(takes%20small%20or%20large.%20defaults%20to%20small)%20*%2FitemModuleType%3A%7Btype%3AString%2Cvalue%3A'promo-story-thumb-small'%7D%2C%2F*%20required.%20This%20will%20be%20used%20to%20do%20the%20search%20query.%20This%20is%20a%20urlencoded%20solr%20query%20string*%2Fquery%3A%7Btype%3AString%2Cobserver%3A'_fireAnalytics'%2Cvalue%3A''%7D%2C%2F*%20can%20come%20in%20with%20the%20query%20if%20you%20want%20*%2Fssts%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20allows%20to%20change%20the%20asset%20type.%20but%20for%20now%20should%20not%20be%20touched%20since%20we%20want%20text%20*%2FassetType%3A%7Btype%3AString%2Cvalue%3A'text'%7D%2C%2F*%20not%20required%2C%20but%20useful%20for%20limiting%20number%20returned%20from%20solr%20and%20popular%20*%2Fcount%3A%7Btype%3AString%2Cvalue%3A''%7D%2Curl%3A%7Btype%3AString%2Ccomputed%3A'_queryChange(query%2C%20assetType%2C%20count)'%2Cobserver%3A'_urlChange'%7D%2C%2F*%20the%20assets%20returned%20from%20the%20endpoint%20*%2Fassets%3A%7Btype%3AArray%7D%2Cerror%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cnotify%3Atrue%2CreadOnly%3Atrue%7D%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%2Cwindow.ga_data.behaviors.PackagedContentBehavior%5D%2C_urlChange%3Afunction%20_urlChange(url)%7Bif(url.length)%7Bthis.%24.ajax.url%3Durl%3B%2F%2F%20for%20some%20reason%20without%20this%20here%20requests%20will%20not%20go%20through%0Athis.%24.ajax.generateRequest()%3B%7D%7D%2C_fireAnalytics%3Afunction%20_fireAnalytics(query)%7Bif(query.length)%7Bthis.%24.analytics.fireEvent('search-query'%2Cquery)%3B%7D%7D%2C_queryChange%3Afunction%20_queryChange(query%2CassetType%2Ccount)%7Bthis.%24.emptySearch.style.display%3D'none'%3Bthis.%24.loading.classList.remove('loaded')%3B%2F%2F%20reset%20the%20query%20responses%20visible%0Awhile(this.%24.container.hasChildNodes())%7Bthis.%24.container.removeChild(this.%24.container.lastChild)%3B%7Dif(this.siteId%26%26this.query.length)%7Bvar%20baseUrl%3Dwindow.ga_data.site.hosts.searchAPI%3Bvar%20urlPath%3D'search%2F'%2Bthis.siteCode%2B(count.length%3F'%2F'%2Bcount%3A'')%3Bvar%20url%3D''%2BbaseUrl%2BurlPath%3Burl%3Dthis._appendUrlParam(url%2C'query'%2Cquery)%3Burl%3Dthis._appendUrlParam(url%2C'ssts'%2Cthis.ssts)%3Burl%3Dthis._appendUrlParam(url%2C'assettype'%2CassetType)%3Burl%3Dthis._appendUrlParam(url%2C'apiKey'%2Cwindow.ga_data.site.keys.searchKey%7C%7C'57646bc6bca4811fea0000011378af619f284d8f5119e496a0a016a9')%3Breturn%20url%3B%7Dthis._handleNoInput()%3Bthis.%24.loading.classList.add('loaded')%3Breturn''%3B%7D%2C_resultsTap%3Afunction%20_resultsTap(e)%7Bfor(var%20i%3D0%3Bi%3Cthis.%24.container.children.length%3Bi%2B%2B)%7Bif(this.%24.container.children%5Bi%5D%3D%3D%3De.target)%7Bvar%20analyticsEvent%3D'searchstory'%2B(i%2B1)%2B'of'%2Bthis.%24.container.children.length%3Bthis.%24.analytics.fireEvent(analyticsEvent%2Cnull%2Ctrue)%3B%7D%7D%7D%2C_handleResponse%3Afunction%20_handleResponse(event%2Crequest)%7Bif(event.detail.response%26%26Object.keys(event.detail.response).length)%7Bthis.assets%3Devent.detail.response.assets%3Bthis.%24.container.style.display%3D'block'%3Bthis._addAssets(this.itemModuleType)%3Bthis._setError(false)%3B%7Delse%7Bthis.assets%3D%5B%5D%3B%2F%2F%20since%20no%20data%20has%20been%20returned%0Athis._handleError()%3B%7Dthis.%24.loading.classList.add('loaded')%3B%7D%2C_handleError%3Afunction%20_handleError()%7Bthis.%24.container.style.display%3D'none'%3Bthis.%24.loading.classList.add('loaded')%3Bthis._setError(true)%3B%7D%2C_handleNoInput%3Afunction%20_handleNoInput()%7Bthis.%24.container.style.display%3D'none'%3Bthis.%24.emptySearch.style.display%3D'none'%3Bthis.%24.loading.classList.add('loaded')%3Bthis._setError(false)%3B%7D%2C_addAssets%3Afunction%20_addAssets(elemName)%7Bvar%20_this%3Dthis%3Bvar%20elemType%3DelemName.split('-')%5B0%5D%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2F'%2BelemType%2B'%2F'%2BelemName%2B'%2F'%2BelemName%2B'.html'%2Cnull%2Cnull%2Ctrue)%3Bif(!this.assets.length)%7Bthis.%24.emptySearch.style.display%3D'block'%3B%7Dthis.assets.forEach(function(asset)%7Bvar%20tempElem%3Ddocument.createElement(elemName)%3BtempElem.setAttribute('title'%2Casset.shortHeadline%7C%7Casset.title)%3BtempElem.setAttribute('description'%2Casset.description%7C%7Casset.promoBrief)%3BtempElem.setAttribute('type'%2C_this.assetType)%3Bif(asset.thumbnail)%7Bif(asset.thumbnail.type%3D%3D%3D'text'%26%26!!asset.thumbnail.crops)%7BtempElem.setAttribute('thumbnail-set'%2Casset.thumbnail.crops%5B'1_1'%5D%2B'%201%3A1%2C%20'%2Basset.thumbnail.crops%5B'16_9'%5D%2B'%2016%3A9')%3B%7Delse%20if(asset.thumbnail.type%3D%3D%3D'video')%7BtempElem.setAttribute('thumbnail-url'%2Casset.thumbnail.url)%3BtempElem.setAttribute('length'%2Casset.thumbnail.length)%3B%7Delse%20if(asset.thumbnail.type%3D%3D%3D'gallery')%7BtempElem.setAttribute('thumbnail-url'%2Casset.thumbnail.url)%3B%7D%7DtempElem.setAttribute('date-published'%2Casset.datePublished)%3BtempElem.setAttribute('label'%2C_this._getLabel(asset.ssts))%3Bif(asset.sponsorName!%3D'')%7BtempElem.setAttribute('brand-name'%2Casset.sponsorName)%3BtempElem.setAttribute('sponsored'%2Ctrue)%3B%7DtempElem.setAttribute('url'%2Casset.url%7C%7Casset.pageURL.long)%3Bif(window.innerWidth%3E480)%7BtempElem.classList%3D'colwidth-narrow'%3B%7DtempElem.setAttribute('date-updated'%2Casset.dateUpdated)%3B_this.%24.container.appendChild(tempElem)%3B%7D)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-search-bucket%2Fnav-search-bucket.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-search-bucket%2Fnav-search-bucket.html.js%0A",
            "resourceBytes": 5425,
            "encodedBytes": 0,
            "unusedBytes": 3927,
            "children": [
              {
                "name": "elements/nav/nav-search-bucket/nav-search-bucket.html_script_0.js",
                "resourceBytes": 5162,
                "unusedBytes": 3927
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 263
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PromoItem%20*%2Fwindow.ga_data.behaviors.PromoItem%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Utility%20to%20pass%20urls%20%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20promoUrl%20full%20uri%20of%20the%20promo%20item%2C%20not%20necessarily%20in%20same%20domain%20as%20current%20host%2Fenv%0A%20%20%20%20%20%20%20%20%20*%20%0A%20%20%20%20%20%20%20%20%20*%2FGANNETT_SITES_REGEX%3A'(alamogordonews%7Capp%7Cargusleader%7Cazcentral%7Cbattlecreekenquirer%7Cbaxterbulletin%7Cblackmountainnews%7Cbrookfield-elmgrovenow%7Cbucyrustelegraphforum%7Cburlingtonfreepress%7Ccaller%7Ccentralfloridafuture%7Cchillicothegazette%7Ccincinnati%7Ccitizen-times%7Cclarionledger%7Ccoloradoan%7Ccommercialappeal%7Ccoshoctontribune%7Ccourier-journal%7Ccourierpostonline%7Ccourierpress%7Ccurrentargus%7Cdaily-times%7Cdailyrecord%7Cdailyworld%7Cdelawarebeaches%7Cdelawareonline%7Cdelmarvanow%7Cdemingheadlight%7Cdemocratandchronicle%7Cdesertsun%7Cdesmoinesregister%7Cdmjuice%7Cdnj%7Celpasotimes%7Ceveningsun%7Cfdlreporter%7Cfloridatoday%7Cfreep%7Cfsunews%7Cgosanangelo%7Cgreatfallstribune%7Cgreenbaypressgazette%7Cgreenfield-westallisnow%7Cgreenvilleonline%7Cguampdn%7Chattiesburgamerican%7Chawkcentral%7Chometownlife%7Chtrnews%7Cindependentmail%7Cindystar%7Cithacajournal%7Cjacksonsun%7Cjconline%7Cjsonline%7Ckitsapsun%7Cknoxnews%7Clancastereaglegazette%7Clakecountrynow%7Clansingstatejournal%7Clavozarizona%7Clcsun-news%7Cldnews%7Clivingstondaily%7Clohud%7Cmansfieldnewsjournal%7Cmarconews%7Cmarionstar%7Cmarshfieldnewsherald%7Cmetroparentmagazine%7Cmontgomeryadvertiser%7Cmuskego-newberlinnow%7Cmycentraljersey%7Cmydesert%7Cmynorthshorenow%7Cmynorthwestnow%7Cmyozaukeenow%7Cmysouthnow%7Cmysouthshorenow%7Cnaplesnews%7Cnewarkadvocate%7Cnews-leader%7Cnews-press%7Cnewsleader%7Cnorthjersey%7Cpackersnews%7Cpal-item%7Cpnj%7Cportclintonnewsherald%7Cpostcrescent%7Cpoughkeepsiejournal%7Cpress-citizen%7Cpressconnects%7Cpublicopiniononline%7Credding%7Creno%7Creporternews%7Crgj%7Cruidosonews%7Cscsun-news%7Csctimes%7Csheboyganpress%7Cshreveporttimes%7Csomosfrontera%7Cstargazette%7Cstatesmanjournal%7Cstevenspointjournal%7Ctallahassee%7Ctcpalm%7Ctennessean%7Ctheadvertiser%7Cthecalifornian%7Cthedailyjournal%7Ctheleafchronicle%7Cthegleaner%7Cthenews-messenger%7Cthenewsstar%7Cthenorthwestern%7Cthespectrum%7Cthestarpress%7Cthetimesherald%7Cthetowntalk%7Ctimesrecordnews%7Cupstateparent%7Cvcstar%7Cvisaliatimesdelta%7Cwausaudailyherald%7Cwaukeshanow%7Cwauwatosanow%7Cwisconsinrapidstribune%7Cwisfarmer%7Cydr%7Czanesvilletimesrecorder%7Cusatoday)'%2CDETROITNEWS_SITES_REGEX%3A'(detroitnews)'%2C_checkIsUrlExternal%3Afunction%20_checkIsUrlExternal(url)%7Breturn!(url.indexOf('%2F')%3D%3D%3D0)%3B%7D%2C_preserveLocalURL%3Afunction%20_preserveLocalURL(promoUrl)%7Bif(!promoUrl)return%20promoUrl%3Bif(promoUrl.indexOf('%2F%2Fftw.usatoday.com')%3E0)%7B%2F%2F%20NOTE%3A%20we%20do%20not%20want%20to%20localize%20ftw%20urls%2C%20they%20come%20back%20correctly%20from%20packaged%20content%20service%20and%20should%20go%20to%20the%20FTW%20platforms%0Areturn%20promoUrl%3B%7Dvar%20siteRegex%3Dwindow.ga_data.site.contentSharingPattern%3Fwindow.ga_data.site.contentSharingPattern%3Awindow.ga_data.site.baseName%3D%3D%3D'detroitnews'%3Fthis.DETROITNEWS_SITES_REGEX%3Athis.GANNETT_SITES_REGEX%3Breturn%20promoUrl.replace(new%20RegExp('%5Ehttps%3F%3A%2F%2Fwww.(%3F%3A'%2BsiteRegex%2B'.com)(%2F.*)')%2C'%242')%3B%7D%2C_getClassNameForElement%3Afunction%20_getClassNameForElement(el)%7Breturn%20this._getClassNameForWidth(this._getContainerWidth(el))%3B%7D%2C_getClassNameForWidth%3Afunction%20_getClassNameForWidth(width)%7Bif(width%3C480)%7Breturn'colwidth-narrow'%3B%7Delse%20if(width%3E%3D480%26%26width%3C850)%7Breturn'colwidth-medium'%3B%7Delse%7Breturn'colwidth-wide'%3B%7D%7D%2C_getContainerWidth%3Afunction%20_getContainerWidth(el)%7Bif(el%26%26el.nodeType)%7Bvar%20w%3Del.offsetWidth%3Bif(w%3E0)%7Breturn%20w%3B%7Dif(el.parentElement)%7Breturn%20this._getContainerWidth(el.parentElement)%3B%7D%7Dreturn%200%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpromo-item.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpromo-item.html.js%0A",
            "resourceBytes": 3627,
            "encodedBytes": 0,
            "unusedBytes": 1048,
            "children": [
              {
                "name": "gallium/behaviors/promo-item.html_script_0.js",
                "resourceBytes": 3236,
                "unusedBytes": 1048
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 391
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-promo-item'%2CdesignId%3A'N5'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%2Cwindow.ga_data.behaviors.PromoItem%5D%2Cproperties%3A%7Bl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'breaking-news'%3A'Breaking%20News'%7D%2C'es'%3A%7B'breaking-news'%3A'Noticias%20de%20%C3%BAltima%20hora'%7D%7D%3B%7D%7D%2CpromoTag%3A%7Btype%3AString%7D%2CpromoDescription%3A%7Btype%3AString%7D%2CpromoUrl%3A%7Btype%3AString%7D%2CisAlert%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2CalertType%3A%7Btype%3AString%2Cvalue%3A''%7D%7D%2Cready%3Afunction%20ready()%7Bthis.promoUrl%3Dthis._preserveLocalURL(this.promoUrl)%3B%7D%2C_addBreakingClass%3Afunction%20_addBreakingClass(isAlert%2CalertType)%7Bvar%20classname%3D''%2Ctype%3D'generic'%3Bif(alertType%3D%3D%3D'breaking')%7Btype%3D'breaking'%3Bthis.promoTag%3Dthis.localize('breaking-news')%3B%7Dif(isAlert)%7Bclassname%2B%3D'%20alert%20'%2Btype%3B%7Dreturn%20classname%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-promo-item%2Fnav-promo-item.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-promo-item%2Fnav-promo-item.html.js%0A",
            "resourceBytes": 987,
            "encodedBytes": 0,
            "unusedBytes": 408,
            "children": [
              {
                "name": "elements/nav/nav-promo-item/nav-promo-item.html_script_0.js",
                "resourceBytes": 736,
                "unusedBytes": 408
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 251
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Base%20Gallium%20framework%20behavior.%0A%20%20%20%20%20*%20Adds%20a%20%60frameworkReady%60%20lifecycle%20method%20that%20is%20called%20when%20the%20global%20Gallium%20class%20is%20ready%0A%20%20%20%20%20*%20Adds%20helper%20methods%20for%20getting%20current%20User's%20Firefly%20paywall%20status%20data%0A%20%20%20%20%20*%20%3F%3F%3F%0A%20%20%20%20%20*%20Profit!%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.GalliumElement%20*%2Fwindow.ga_data.behaviors.GalliumElement%3D%7Bready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(window.Gallium)%7Bthis.frameworkReady()%3B%7Delse%7Bwindow.addEventListener('ga-init'%2Cfunction()%7B_this.frameworkReady()%3B%7D)%3B%7D%7D%2CframeworkReady%3Afunction%20frameworkReady()%7B%2F%2F%20Override%20in%20element%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20user%20state%20from%20Firefly%20cookie%0A%20%20%20%20%20%20%20%20%20*%20%0A%20%20%20%20%20%20%20%20%20*%20TODO%3A%20Add%20more%20data%20validation%20as%20done%20in%20https%3A%2F%2Fgithub.com%2FGannettDigital%2Fweb-standard-apps%2Fblob%2Fmaster%2Fusers%2Fstatic%2Fjs%2Fthird-party-apis%2Ffirefly%2Ffirefly.js%23L82%0A%20%20%20%20%20%20%20%20%20*%2F_getUserFireflyState%3Afunction%20_getUserFireflyState()%7Bvar%20fireflyCookie%3Dga_data.utils%3Fga_data.utils.readCookie('firefly_akamai_open')%7C%7C''%3A''%3Bvar%20fireflyValue%3Dnull%3Bif(fireflyCookie)%7Btry%7BfireflyValue%3DJSON.parse(atob(fireflyCookie))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7Dreturn%20fireflyValue%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fgallium-element.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fgallium-element.html.js%0A",
            "resourceBytes": 1408,
            "encodedBytes": 0,
            "unusedBytes": 466,
            "children": [
              {
                "name": "gallium/behaviors/gallium-element.html_script_0.js",
                "resourceBytes": 679,
                "unusedBytes": 466
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 729
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-tree'%2CdesignId%3A'N16'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%5D%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this%20observer%20will%20pickup%20changes%20to%20the%20array%20as%20a%20whole%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20but%20not%20items%20in%20the%20array%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20TODO%3A%20good%20refactor%20to%20observe%20when%20items%20change%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FtagList%3A%7Btype%3AArray%2Cobserver%3A'_tagListChanged'%7D%7D%2C_getContainerClass%3Afunction%20_getContainerClass()%7Breturn%20window.ga_data.site.siteId!%3D%3D1%3F'local'%3A''%3B%7D%2CframeworkReady%3Afunction%20frameworkReady()%7B%2F*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20could%20be%20device-type%3Adesktop%20and%20IS_IPAD%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20but%20we%20only%20want%20one%20or%20the%20other%20here%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20since%20'desktop-navigation'%20has%20hover%20states%20and%20we%20dont%20want%20those%20on%20iPad%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fif(this._isDesktop()%26%26!this._isIpad())%7Bthis.%24.container.classList.add('desktop-navigation')%3B%7D%7D%2C_isDesktop%3Afunction%20_isDesktop()%7Breturn%20window.ga_data.intents.indexOf('device-type%3Adesktop')%3E-1%3B%7D%2C_isIpad%3Afunction%20_isIpad()%7Breturn%20window.ga_data.utils%26%26window.ga_data.utils.UA%26%26window.ga_data.utils.UA.IS_IPAD%3B%7D%2C_tagListChanged%3Afunction%20_tagListChanged(list)%7Bvar%20menu%3Dthis.%24.mainMenu%3Bthis._addListener(menu)%3Bmenu.items%3D%5B%5D%3Bmenu.render()%3Bmenu.items%3Dlist.filter(function(item)%7Breturn%20item.key!%3D%3D'home'%3B%7D)%3B%7D%2C_addListener%3Afunction%20_addListener(menu)%7Bvar%20_this%3Dthis%3Bthis.renderedListener%3Dfunction()%7Bif(menu.renderedItemCount%3D%3D%3Dmenu.items.length)%7B_this.dispatchEvent(new%20CustomEvent('linksRendered'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3Bmenu.removeEventListener('rendered-item-count-changed'%2C_this.renderedListener)%3B%7D%7D%3Bmenu.addEventListener('rendered-item-count-changed'%2Cthis.renderedListener)%3B%7D%2C_hasChildren%3Afunction%20_hasChildren(item)%7Breturn%20item.children%26%26item.children.length%3B%7D%2C_getMainMenuItemClass%3Afunction%20_getMainMenuItemClass(item)%7Bvar%20cls%3D'section-'%2Bitem.key%2B'%20main-menu-item%20smooth'%3Bif(window.ga_data.route.sectionName%3D%3D%3Ditem.key)%7Bcls%2B%3D'%20activeSection'%3B%7Dreturn%20cls%3B%7D%2C_getSecondaryMenuItemClass%3Afunction%20_getSecondaryMenuItemClass(url)%7Bvar%20ssts%3Dwindow.ga_data.route.ssts%3Breturn%20url.replace(%2F-%2Fg%2C'').match(ssts)%26%26ssts.indexOf('%2F')%3E-1%3F'activeSubSection'%3A''%3B%7D%2C_showHideSubMenu%3Afunction%20_showHideSubMenu(e)%7Be.stopPropagation()%3Bvar%20active%3De.target%3Bif(!active.classList.contains('main-menu-item'))%7Bactive%3Dthis._getParent(active%2C'main-menu-item')%3B%7Dactive.classList.toggle('active')%3Bvar%20icon%3Dactive.querySelector('.mobile-arrow')%3Bif(icon)%7Bif(icon.iconName%3D%3D%3D'icon-caret-down_16')%7Bicon.iconName%3D'icon-caret-up_16'%3B%7Delse%7Bicon.iconName%3D'icon-caret-down_16'%3B%7D%7D%7D%2C_getParent%3Afunction%20_getParent(el%2CclassToFind)%7Bvar%20found%3Dfalse%2Cparent%3Del.parentNode%3Bwhile(parent%26%26!found)%7Bif(parent.classList.contains(classToFind))%7Bfound%3Dtrue%3B%7Delse%7Bparent%3Dparent.parentNode%3B%7D%7Dreturn%20parent%3B%7D%2C_primaryLinkTap%3Afunction%20_primaryLinkTap(e)%7Be.stopPropagation()%3Bthis._fireAnalytics(e)%3B%7D%2C_fireAnalytics%3Afunction%20_fireAnalytics(e)%7Bvar%20href%3De.target.href%2Cdest%3Dhref.match('http')%3Fhref%3Ahref.replace(%2F%5C%2F%2Fg%2C'-').replace(%2F%5E-%7C-%24%2Fg%2C'')%3Bthis.%24.analytics.fireEvent(ga_data.route.basePageType.replace('%20'%2C'-')%2B'%7C'%2Bga_data.route.ssts%2B'%7C'%2Bthis.is%2B'%7C'%2Bdest%2C%7B%7D%2Ctrue)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-tree%2Fnav-tree.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-tree%2Fnav-tree.html.js%0A",
            "resourceBytes": 3297,
            "encodedBytes": 0,
            "unusedBytes": 2234,
            "children": [
              {
                "name": "elements/nav/nav-tree/nav-tree.html_script_0.js",
                "resourceBytes": 2608,
                "unusedBytes": 2234
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 689
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'nav-hub'%2CdesignId%3A'N4'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumI18n%5D%2Cproperties%3A%7Bl10n%3A%7Bvalue%3Afunction%20value()%7Breturn%7B'en'%3A%7B'news-alert-heading'%3A'news%20alert'%2C'trending-corona'%3A'coronavirus%20updates'%2C'trending-heading'%3A'most%20recent%20stories'%7D%2C'es'%3A%7B'news-alert-heading'%3A'alerta%20de%20noticias'%2C'trending-corona'%3A'coronavirus%20updates'%2C'trending-heading'%3A'lo%20mas%20reciente'%7D%7D%3B%7D%7D%2CtrendingHeading%3A%7Btype%3AString%2Ccomputed%3A'getTrendingHeading()'%7D%2CnavEndpoint%3A%7Btype%3AString%2Ccomputed%3A'getEndpoint(promoCount)'%7D%2Calerts%3A%7Btype%3AArray%2Cvalue%3A%5B%5D%2Cobserver%3A'_toggleAlertsHeader'%7D%2Cpromotions%3A%7Btype%3AArray%2Cvalue%3A%5B%5D%7D%2CtagList%3A%7Btype%3AArray%2Cvalue%3A%5B%5D%7D%2CuscpCorona%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F%2Famount%20of%20promotion%20stories%20to%20return%0ApromoCount%3A%7Btype%3AString%2Cvalue%3A'10'%7D%7D%2CgetTrendingHeading%3Afunction%20getTrendingHeading()%7Bif(window.ga_data.site.uaid!%3D'USAT'%26%26this.uscpCorona)%7Breturn'trending-corona'%3B%7Dreturn'trending-heading'%3B%7D%2CgetEndpoint%3Afunction%20getEndpoint(promoCount)%7Bif(window.ga_data.site.uaid!%3D'USAT'%26%26this.uscpCorona)%7Bvar%20searchObj%3D%7B'site_code'%3Awindow.ga_data.site.uaid%2C'types'%3A%5B'text'%2C'gallery'%2C'video'%5D%2C'tagIds'%3A%5B'3cf746dc-de06-4d2f-be6c-aa7f4e34936e'%5D%2C'size'%3A6%7D%3Bvar%20objJsonStr%3DJSON.stringify(searchObj)%3Breturn%20ga_data.site.hosts.pcsAPI%2B'custom-search%2Fasset_reverse_chron%3FapiKey%3D'%2Bga_data.site.keys.pcsKey%2B'%26site-code%3D'%2B(ga_data.site.uaid%7C%7C'USAT')%2B'%26searchEnc%3D'%2Bbtoa(objJsonStr)%3B%7Dreturn%20ga_data.site.hosts.pcsAPI%2B'popular%2F'%2B(ga_data.site.uaid%7C%7C'USAT')%2B'%2F'%2BpromoCount%2B'%3FapiKey%3D'%2Bga_data.site.keys.pcsKey%2B'%26searchtype%3DsocialReferrals'%3B%7D%2C_handlePromoResponse%3Afunction%20_handlePromoResponse(event)%7Bvar%20response%3Devent.detail.response%3Bif(response%26%26Object.keys(response).length%26%26response.assets)%7Bthis.promotions%3Dresponse.assets%3B%7D%7D%2C_alertTap%3Afunction%20_alertTap(event)%7Bthis.dispatchEvent(new%20CustomEvent('hubAlertTap'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%2Cdetail%3Aevent.model.item%7D))%3Bthis.%24.analytics.fireEvent('alert%3Anavhub%3A'%2Bevent.model.item.alertType%2B'%3Aclick'%2Cnull%2Ctrue)%3B%7D%2C_promoTap%3Afunction%20_promoTap(event)%7Bthis.%24.analytics.fireEvent('navtrending1'%2Cnull%2Ctrue)%3B%7D%2C_fireAnalytics%3Afunction%20_fireAnalytics(e)%7Bthis.%24.analytics.fireEvent('navsection'%2B(parseInt(e.detail.index)%2B1)%2B'%5B'%2Be.detail.tag%2B'%5D'%2Cnull%2Ctrue)%3Be.stopPropagation()%3B%7D%2C_toggleAlertsHeader%3Afunction%20_toggleAlertsHeader(alerts)%7Bthis.%24.hubAlerts.hidden%3D!alerts.length%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-hub%2Fnav-hub.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-hub%2Fnav-hub.html.js%0A",
            "resourceBytes": 2519,
            "encodedBytes": 0,
            "unusedBytes": 1707,
            "children": [
              {
                "name": "elements/nav/nav-hub/nav-hub.html_script_0.js",
                "resourceBytes": 2296,
                "unusedBytes": 1707
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 223
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PartnerUtils%20*%2Ffunction%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7Dvar%20PartnerUtils%3D%7Bcreated%3Afunction%20created()%7Bthis.adLoggerEnabled%3D!!this.getUrlParamValue('usat_console')%3B%7D%2C_loadScript%3Afunction%20_loadScript(url)%7Breturn%20new%20Promise(function(resolve%2Creject)%7Bvar%20element%3Ddocument.createElement('script')%3Belement.async%3Dtrue%3Belement.src%3Durl%3B%2F%2F%20Important%20success%20and%20error%20for%20the%20promise%0Aelement.onload%3Dfunction()%7Bresolve(url)%3B%7D%3Belement.onerror%3Dfunction()%7Breject(url)%3B%7D%3Bdocument.body.appendChild(element)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Deep%20dive%20into%20an%20object%20without%20crashing%20on%20null%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20%20%20%20%20%20%20%20%20%20obj%20%20object%20to%20retrieve%20a%20nested%20value%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7B...String%7CNumber%7D%20path%20comma%20separated%20list%20of%20keys%20to%20retrieve%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20returned%20value%20or%20undefined%20if%20does%20not%20exist%0A%20%20%20%20%20%20%20%20%20*%2F_getNested%3Afunction%20_getNested(obj)%7Bif(obj)%7Bfor(var%20_len%3Darguments.length%2Cpath%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bpath%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dreturn%20path.reduce(function(obj%2Carg)%7Breturn%20obj%26%26obj%5Barg%5D%3B%7D%2Cobj)%3B%7Dreturn%20undefined%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Checks%20the%20url%20query%20parameters%20for%20the%20key%20and%20if%20set%20returns%20it's%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20%20%20%20%20%20%20%20%20key%20Query%20Parameter%20key%20to%20lookup%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7CBoolean%7D%20%20%20%20%20Key's%20corresponding%20value%20or%20false%20if%20not%20set.%0A%20%20%20%20%20%20%20%20%20*%2FgetUrlParamValue%3Afunction%20getUrlParamValue(key)%7Bvar%20value%3DdecodeURI((new%20RegExp(key%2B'%3D'%2B'(.%2B%3F)(%26%7C%24)').exec(this._getQueryString())%7C%7C%5B''%2C'false'%5D)%5B1%5D)%3Bif(value%3D%3D%3D'false')%7Breturn%20false%3B%7Delse%20if(value%3D%3D%3D'true')%7Breturn%20true%3B%7Dreturn%20value%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20query%20string%20for%20current%20location%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20returns%20query%20string%0A%20%20%20%20%20%20%20%20%20*%2F_getQueryString%3Afunction%20_getQueryString()%7Breturn%20window.location.search%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20within%2C%20above%2C%20or%20below%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20elm%20element%20to%20check%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20threshold%20pixel%20threshold%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20viewHeight%20client%2Fwindow%20height%20override%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20Whether%20the%20element%20is%20'visible'%2C%20'above'%2C%20or%20'below'%20relative%20to%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20*%2F_checkVisible%3Afunction%20_checkVisible(elm%2Cthreshold%2CviewHeight)%7Bthreshold%3Dthreshold%7C%7C0%3BviewHeight%3DviewHeight%7C%7CMath.max(document.documentElement.clientHeight%2Cwindow.innerHeight)%3Bvar%20rect%3Delm.getBoundingClientRect()%2Cabove%3Drect.bottom-threshold%3C0%2Cbelow%3Drect.top-viewHeight%2Bthreshold%3E%3D0%3Breturn%20above%3F'above'%3Abelow%3F'below'%3A'visible'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20current%20coordinates%20for%20an%20element%20relative%20to%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20el%20element%20to%20get%20coordinates%20for%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20obj%20with%20%60top%60%20and%20%60left%60%20properties%0A%20%20%20%20%20%20%20%20%20*%20*%2F_getCoords%3Afunction%20_getCoords(el)%7Bvar%20box%3Del.getBoundingClientRect()%2CdocEl%3Ddocument.documentElement%2Ctop%3Dbox.top%2Bwindow.pageYOffset-(docEl.clientTop%7C%7C0)%2Cleft%3Dbox.left%2Bwindow.pageXOffset-(docEl.clientLeft%7C%7C0)%3Breturn%7Btop%3AMath.round(top)%2Cleft%3AMath.round(left)%7D%3B%7D%2C_deferred%3Afunction%20_deferred(timeout%2CtimeoutCallback)%7Bvar%20_this%3Dthis%3Bthis.promise%3Dnew%20Promise(function(resolve%2Creject)%7B_this.done%3Dfalse%3B_this.reject%3Dreject%3B_this.resolve%3Dresolve%3Bif(timeout%26%26typeof%20timeout%3D%3D%3D'number')%7BsetTimeout(function()%7Bif(!_this.done)%7Bif(typeof%20timeoutCallback%3D%3D%3D'function')%7BtimeoutCallback(resolve)%3B%7Delse%7Bresolve()%3B%7D%7D%7D%2Ctimeout)%3B%7D%7D)%3Bthis.promise.then(function()%7B_this.done%3Dtrue%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Attempts%20to%20parse%20string.%20If%20an%20error%20is%20encountered%20return%20the%20fallback%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20json%20%20%20%20%20JSON%20String%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20%20%20%20fallback%20Fallback%20value%20to%20return%20if%20an%20error%20is%20encountered%20parsing%20the%20string%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Parsed%2Ffallback%20value%0A%20%20%20%20%20%20%20%20%20*%2F_parseJsonArray%3Afunction%20_parseJsonArray(json%2Cfallback)%7Btry%7Bvar%20data%3DJSON.parse(json)%3Bif(Array.isArray(data))%7Breturn%20data%3B%7D%7Dcatch(e)%7B%7D%2F%2F%20Parsing%20error%2C%20continue%20below%0A%2F%2F%20return%20a%20*copy*%20of%20our%20fallback%20when%20appropriate%0Aif(Array.isArray(fallback))%7Breturn%20Object.assign(%5B%5D%2Cfallback)%3B%7Dreturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Attempts%20to%20parse%20string.%20If%20an%20error%20is%20encountered%20return%20the%20fallback%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20json%20%20%20%20%20JSON%20String%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20%20%20%20%20fallback%20Fallback%20value%20to%20return%20if%20an%20error%20is%20encountered%20parsing%20the%20string%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Parsed%2Ffallback%20value%0A%20%20%20%20%20%20%20%20%20*%2F_parseJsonObject%3Afunction%20_parseJsonObject(json%2Cfallback)%7Btry%7Bvar%20data%3DJSON.parse(json)%3Bif(Object.prototype.toString.call(data)%3D%3D%3D'%5Bobject%20Object%5D')%7Breturn%20data%3B%7D%7Dcatch(e)%7B%7D%2F%2F%20Parsing%20error%2C%20continue%20below%0A%2F%2F%20return%20a%20*copy*%20of%20our%20fallback%20when%20appropriate%0Aif(Object.prototype.toString.call(fallback)%3D%3D%3D'%5Bobject%20Object%5D')%7Breturn%20Object.assign(%7B%7D%2Cfallback)%3B%7Dreturn%7B%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Broadcast%20event%20polyfill%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20eventName%20Event%20Name%20to%20broadcast%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20params%20%20%20%20Data%20to%20be%20attached%20to%20the%20broadcast%20event%0A%20%20%20%20%20%20%20%20%20*%2F_broadcastEvent%3Afunction%20_broadcastEvent(eventName%2Cparams)%7Bvar%20parameters%3Dparams%7C%7C%7Bbubbles%3Atrue%2Ccancelable%3Afalse%2Cdetail%3Aundefined%7D%3Bif(typeof%20window%5B'CustomEvent'%5D%3D%3D%3D'function')%7Bwindow.dispatchEvent(new%20CustomEvent(eventName%2Cparameters))%3B%7Delse%7Bvar%20docEvt%3Ddocument.createEvent('CustomEvent')%3BdocEvt.initCustomEvent(eventName%2Cparameters.bubbles%2Cparameters.cancelable%2Cparameters.detail)%3Bwindow.dispatchEvent(docEvt)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Filters%20an%20array%20of%20sizes%20to%20remove%20the%20'fluid'%20size%20from%20the%20array%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20Array%20of%20sizes%20for%20the%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20Array%20of%20sizes%20for%20the%20slot%20with%20'fluid'%20removed%20if%20present%0A%20%20%20%20%20%20%20%20%20*%2F_filterFluidSize%3Afunction%20_filterFluidSize(sizes)%7Bvar%20fluidIdx%3Dsizes.indexOf('fluid')%3Bif(fluidIdx%3D%3D%3D-1)return%20sizes%3B%2F%2F%20Remove%20fluid%20as%20a%20size%0Areturn%20sizes.reduce(function(sizeOutput%2Csize)%7Bif(size%3D%3D%3D'fluid')return%20sizeOutput%3BsizeOutput.push(size)%3Breturn%20sizeOutput%3B%7D%2C%5B%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Check%20to%20see%20if%20we%20are%20%22mobile%22%20sized%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BBoolean%7D%20True%20is%20the%20screen%20is%20considered%20mobile%0A%20%20%20%20%20%20%20%20%20*%2F_inMobileEnvironment%3Afunction%20_inMobileEnvironment()%7Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bif(typeof%20window.ga_data.ads.inMobileEnvironment%3D%3D%3D'undefined')%7Bwindow.ga_data.ads.inMobileEnvironment%3Dwindow.innerWidth%3C768%3B%7Dreturn%20window.ga_data.ads.inMobileEnvironment%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Transverses%20the%20provided%20attribute%20of%20the%20el's%20parents%20until%20it%20finds%20one%20with%20a%20non-zero%20value.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BElement%7D%20el%20%20%20Initial%20parent%20element%20to%20check%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20%20attr%20Attribute%20to%20check%20the%20value%20of%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BNumber%7D%20%20%20%20%20%20%20First%20non-zero%20value%20found%0A%20%20%20%20%20%20%20%20%20*%2F_getNonZeroAttr%3Afunction%20_getNonZeroAttr(el%2Cattr)%7Bvar%20val%3Del%5Battr%5D%3Bwhile(val%3D%3D%3D0)%7Bel%3Del.parentNode%3Bval%3Del%5Battr%5D%3B%7Dreturn%20val%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Log%20info%20to%20console%20if%20debug%20mode%20is%20enabled.%0A%20%20%20%20%20%20%20%20%20*%20*%2F_log%3Afunction%20_log(msg)%7Bvar%20elapsed%3Dvoid%200%2Cargs%3DArray.prototype.slice.call(arguments%2C1)%3Bif(this.adLoggerEnabled%26%26window.console)%7Bvar%20_console%3Belapsed%3D(performance.now()%2F1000).toFixed(3)%3Bmsg%3D'AD%20ELEMENT%20('%2Bthis.id%2B')%20%3A%20'%2Belapsed%2B's%20%3A%20'%2Bmsg%3B(_console%3Dconsole).info.apply(_console%2C%5Bmsg%5D.concat(_toConsumableArray(args)))%3B%2F%2F%20eslint-disable-line%20no-console%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Retrieves%20override%20values%20from%20request%20query%20parameters.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BObject%7D%20override%20map%0A%20%20%20%20%20%20%20%20%20*%20*%2F_getOverrides%3Afunction%20_getOverrides()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Override%20params%20to%20check%20for%0Avar%20params%3D%5B'usatai'%2C'usatan'%2C'usatl'%5D%3B%2F%2F%20Set%20each%20param%20with%20its%20string%20value%2C%20defaulting%20to%20%60null%60%0Avar%20overrides%3D%7B%7D%3Bparams.forEach(function(param)%7Bvar%20val%3D_this2.getUrlParamValue(param)%3Boverrides%5Bparam%5D%3Dval%3Fval.toString()%3Anull%3B%7D)%3Breturn%20overrides%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20%22Ad%20Free%22%20handling%20should%20be%20applied%20to%20the%20page%0A%20%20%20%20%20%20%20%20%20*%2FisAdFreeExperience%3Afunction%20isAdFreeExperience()%7Bif(window.ga_data%26%26window.ga_data.utils%26%26window.ga_data.utils.isAdFreeExperience)%7Breturn%20window.ga_data.utils.isAdFreeExperience()%3B%7Dreturn%20this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'scroll'%2C'enabled')%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Utils%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerUtils%3DPartnerUtils%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-utils.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-utils.html.js%0A",
            "resourceBytes": 8565,
            "encodedBytes": 0,
            "unusedBytes": 4604,
            "children": [
              {
                "name": "gallium/behaviors/partner-utils.html_script_0.js",
                "resourceBytes": 4986,
                "unusedBytes": 4436
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 3579,
                "unusedBytes": 168
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,%2F*global%20window%3Atrue*%2F%2F*global%20document%3Atrue*%2F%2F*global%20performance%3Atrue*%2F'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Slot%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerSlot%0A%20%20%20%20%20*%2Fvar%20PartnerSlot%3D%7Bproperties%3A%7B%2F**%20Exclusion%20Label%20*%2Fexclusion%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20High%20Impact%20Unit%20*%2FhighImpact%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20DFP%20Ad%20Unit%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20Mobile%20*%2Fmobile%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sizes%20to%20be%20included%20in%20the%20ad%20call.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20If%20set%20on%20the%20element%2C%20must%20be%20valid%20JSON.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20To%20set%20defaults%20for%20an%20element%2C%20override%20%60getDefaultSizes%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20(do%20not%20override%20property%20default).%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fsizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%20this.getDefaultSizes()%3B%7D%7D%2C%2F**%20Targeting%20Label%20*%2Ftargeting%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20preset%20targeting%20*%2FslotTargeting%3A%7Btype%3AObject%2Cvalue%3A%7B%7D%7D%2C%2F**%20NSF%20Targeting%20*%2FnsfTargeting%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%20this.getNsfTargeting()%3B%7D%7D%2C%2F**%20Try%20Count%20*%2FtryCount%3A%7Btype%3ANumber%2Cvalue%3A0%7D%2C%2F**%20Sticky%20ad%20slot%20!!Future%20Feature!!%20*%2Fsticky%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Render%20Behavior%20*%2FrenderBehavior%3A%7Btype%3AString%2Cvalue%3A'lazy'%7D%2C%2F**%20Fetch%20Behavior%20*%2FfetchBehavior%3A%7Btype%3AString%2Cvalue%3A'lazy'%7D%2C%2F**%20Below%20the%20fold%20declaration%20*%2Fbtf%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Set%20if%20unit%20is%20not%20currently%20active%20*%2Finactive%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20the%20'fluid'%20size%20should%20be%20included%20with%20the%20ad%20call%20*%2Ffluid%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20border%20(automatic%20on%20high%20impact%20units)%20*%2FnoBorder%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20label%20*%2FnoLabel%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Defer%20control%20of%20refreshing%20this%20slot%20to%20parent%20element%20*%2Fdeferred%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Enables%20Auto-refresh%20for%20this%20ad%20unit%20*%2FautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Last%20time%20a%20user%20engaged%20with%20the%20page%20*%2FlastEngagement%3A%7Btype%3ANumber%2Cvalue%3ADate.now%7D%2C%2F**%20Is%20window%20visible%20*%2FwindowIsVisible%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Conditional%20sizes%20to%20add%20when%20there%20is%20enough%20available%20width%20*%2FconditionalSizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%5B%5D%3B%7D%7D%2C%2F**%20Margins%20to%20add%20to%20conditional%20size%20widths%20before%20checking%20availability%20*%2FconditionalSizesMargin%3A%7Btype%3ANumber%2Cvalue%3A1%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A0%2Cobserver%3A'_minHeightChanged'%7D%2C%2F**%20Approximate%20height%20of%20%22Advertisement%22%20label.%20Added%20to%20minHeight%20value%20to%20determine%20static%20height.%20*%2FlabelHeight%3A%7Btype%3ANumber%2Cvalue%3A20%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Ad%20Slot%20kick%20off.%20Determines%20if%20we%20are%20in%20mobile%20or%20desktop%20screen%20sizes.%0A%20%20%20%20%20%20%20%20%20*%20Establishes%20statistics%20on%20ad%20placements%2C%20adds%20appropriate%20classes%20and%20unique%20id.%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20listeners%20to%20build%20the%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3B%2F%2F%20Call%20slot%20ready%20here%2C%20since%20a%20regular%20ready%20get's%20called%20after%20this%20behavior%20finishes%0Athis.slotReady()%3B%2F%2F%20Check%20whether%20we%20should%20be%20active%0Aif(!this.shouldBeActive())%7Bthis.classList.add('partner-placement-inactive')%3Bthis.inactive%3Dtrue%3Breturn%3B%7Dthis.register()%3Bthis.defineDefer%3Dnew%20this._deferred()%3Bthis.lazyFetchDefer%3Dnew%20this._deferred()%3B%2F%2F%20Fallback%20to%20default%20sizes%20when%20sizes%20attribute%20is%20not%20parsed%20properly%20or%20no%20sizes%20are%20present%0Aif(!this.sizes%7C%7Cthis.sizes.length%3D%3D%3D0)%7Bthis.sizes%3Dthis.getDefaultSizes()%3B%7D%2F%2F%20Add%20fluid%20size%20when%20fluid%20attribute%20is%20set%2C%20if%20it%20isn't%20already%20included%20in%20the%20size%20list%0Aif(this.fluid%26%26this.sizes.indexOf('fluid')%3C0)%7Bthis.sizes.push('fluid')%3B%7D%2F%2F%20Set%20initial%20classes%0Athis.classList.add('partner-placement'%2C'partner-'%2Bthis.placement%2C'partner-loading')%3Bif(!this.noLabel)%7Bthis.classList.add('partner-label')%3B%7Dif(this.mobile)%7Bthis.classList.add('partner-placement-mobile')%3B%7D%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.ads.count%3Dwindow.ga_data.ads.count%7C%7C0%3Bthis.id%3D'partner-'%2Bthis.placement.toLowerCase().replace(%2F%5B%5Cs_%5D%2Fg%2C'-')%2B'-'%2Bwindow.ga_data.ads.count%2B%2B%3B%7Dthis.slotId%3Dthis.id%2B'-container'%3Bthis._log('Slot%20Ready')%3Bthis._broadcastEvent('slotReady')%3B%2F%2F%20Check%20if%20we%20are%20autorefresh%20enabled%20via%20config%2C%20if%20not%20set%20directly%20already%20on%20the%20slot%0Athis.autoRefresh%3D!!(this.autoRefresh%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'enabled'))%3Bif(this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'ias'%2C'enabled'))%7B%2F%2F%20Register%20as%20an%20IAS%20unit%0Athis.iasUnit%3D%7BadSlotId%3Athis.slotId%2Csize%3Athis._filterFluidSize(this.sizes)%2CadUnitPath%3Athis._generatePath()%7D%3Bwindow.ga_data.ads.iasAdUnits%3Dwindow.ga_data.ads.iasAdUnits%7C%7C%5B%5D%3Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.iasAdUnits.push(_this)%3B%7D)%3B%7D%2F%2F%20Setup%20Lazy%20fetching%20and%20rendering%0Athis.classList.add('partner-loading-shown')%3Bthis.viewportHeight%3DMath.max(document.documentElement.clientHeight%2Cwindow.innerHeight)%3Bvar%20platform%3Dthis.mobile%3F'mobile'%3A'desktop'%3Bvar%20lazySettings%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'lazy'%2Cplatform)%7C%7C%7B%7D%3Bthis.renderMultiplier%3DlazySettings.render%7C%7C0%3Bthis.fetchMultiplier%3DlazySettings.fetch%7C%7C1%3Bthis.lazy%3Dthis.renderBehavior%3D%3D%3D'lazy'%26%26!this.isVisible(this.renderMultiplier)%3Bthis.lazyFetch%3Dthis.fetchBehavior%3D%3D%3D'lazy'%26%26!this.isVisible(this.fetchMultiplier)%3Bif(this.lazyFetch)%7Bthis.lazyFetchCheckFn%3Dfunction()%7Breturn%20_this.lazyFetchCheck()%3B%7D%3Bwindow.addEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn%2Cfalse)%3Bthis.lazyFetchCheckFn()%3B%7Delse%7Bthis.lazyFetchDefer.resolve()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20slot%20ready%2C%20to%20beat%20out%20behavior%20lifecycle%20call.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FslotReady%3Afunction%20slotReady()%7B%2F%2F%20slot%20ready%20placeholder%0A%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this2%3Dthis%3B%2F%2F%20When%20inactive%2C%20kill%20things%20here%0Aif(this.inactive%7C%7Cthis.adIsSetup)return%20false%3Bthis.slotAttached()%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7B_this2.lazyFetchDefer.promise.then(function()%7B_this2._log('Lazy%20Fetch%20Defer%20Resolved')%3B_this2.addListeners()%3B_this2.addConditionalSizes()%3B_this2._setupAd()%3B%7D)%3B%7D)%3B%7D%2Cdetached%3Afunction%20detached()%7Bthis.removeListeners()%3Bthis.destroy(false)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20slot%20attached%2C%20to%20beat%20out%20behavior%20lifecycle%20call.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FslotAttached%3Afunction%20slotAttached()%7B%2F%2F%20slot%20attached%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Triggers%20a%20refresh%20on%20the%20ad%20slot.%20Extended%20by%20PartnerBid%20behavior%20to%20refresh%20bids.%0A%20%20%20%20%20%20%20%20%20*%20partner-bid%20does%20a%20global%20check%20for%20this%20function%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.displayQueue%3Dwindow.ga_data.ads.displayQueue%7C%7C%5B%5D%3Bwindow.ga_data.ads.refreshQueue%3Dwindow.ga_data.ads.refreshQueue%7C%7C%5B%5D%3Bvar%20q%3Dthis.displayed%3Fwindow.ga_data.ads.refreshQueue%3Awindow.ga_data.ads.displayQueue%3Bq.push(this)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20fallback%20sizes%20for%20an%20element.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Default%20sizes%20to%20use%20for%20the%20element%0A%20%20%20%20%20%20%20%20%20*%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Default%20for%20NSF%20targeting%0A%20%20%20%20%20%20%20%20%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Register%20our%20ad%20slot%20at%20the%20page%20level%20and%20set%20ad%20count%0A%20%20%20%20%20%20%20%20%20*%2Fregister%3Afunction%20register()%7Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.stats%3Dwindow.ga_data.ads.stats%7C%7C%7Brequests%3A0%2Ctotal%3A0%7D%3Bwindow.ga_data.ads.stats.total%2B%2B%3B%2F%2F%20Register%20on%20the%20page%20as%20a%20DFP%20ad%20unit%0Awindow.ga_data.ads.units%3Dwindow.ga_data.ads.units%7C%7C%5B%5D%3Bwindow.ga_data.ads.units.push(this)%3B%2F%2F%20Ad%20Count%0Athis.adCount%3Dthis.adCount%7C%7Cthis.getAdCount()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20the%20ad%20framework%20should%20be%20active%0A%20%20%20%20%20%20%20%20%20*%2FshouldBeActive%3Afunction%20shouldBeActive()%7Bvar%20inMobileEnv%3Dthis._inMobileEnvironment()%3Breturn!(this.inactive%7C%7C%2F%2F%20Check%20if%20ads%20are%20disabled%20globally%0Athis._getNested(ga_data%2C'route'%2C'noAdvertising')%7C%7Cthis.getUrlParamValue('no_ads')%7C%7C%2F%2F%20Check%20whether%20element%20mobile%2Fdesktop%20matches%20viewport%20mobile%2Fdesktop%0AinMobileEnv!%3D%3Dthis.mobile%7C%7Cthis.isAdFreeExperience())%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Add%20document%20listeners%0A%20%20%20%20%20%20%20%20%20*%2FaddListeners%3Afunction%20addListeners()%7Bvar%20_this3%3Dthis%3Bif(this.listenersSetup)return%3B%2F%2F%20refresh%20slots%20on%20location%20change%0Athis._locationChangedFn%3Dfunction()%7Breturn%20_this3.refresh()%3B%7D%3Bwindow.addEventListener('location-changed'%2Cthis._locationChangedFn)%3B%2F%2F%20Add%20message%20listener%20for%20slots%20that%20require%20messaging%0Athis._onSafeFrameMsgFn%3Dfunction(e)%7Breturn%20_this3._onSafeFrameMsg(e)%3B%7D%3Bwindow.addEventListener('message'%2Cthis._onSafeFrameMsgFn)%3B%2F%2F%20Add%20visibility%20listener%20and%20scroll%20listener%20to%20determine%20if%20user%20is%20active%20and%20engaged%0Athis._visibilityFn%3Dfunction(e)%7Breturn%20_this3._onVisibilityChange(e)%3B%7D%3Bthis._engagementUpdateFn%3Dfunction()%7Breturn%20_this3.engagementUpdate()%3B%7D%3Bif(typeof%20document.hidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'hidden'%3Bthis.visibilityEvent%3D'visibilitychange'%3B%7Delse%20if(typeof%20document.msHidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'msHidden'%3Bthis.visibilityEvent%3D'msvisibilitychange'%3B%7Delse%20if(typeof%20document.webkitHidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'webkitHidden'%3Bthis.visibilityEvent%3D'webkitvisibilitychange'%3B%7Ddocument.addEventListener(this.visibilityEvent%2Cthis._visibilityFn%2Cfalse)%3Bif(this.autoRefresh)%7Bwindow.addEventListener('ga-scroll'%2Cthis._engagementUpdateFn)%3B%7Dif(this.lazy)%7Bthis.lazyTriggered%3Dfalse%3Bthis.lazyRenderCheckFn%3Dfunction()%7Breturn%20_this3.lazyRenderCheck()%3B%7D%3Bwindow.addEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn%2Cfalse)%3Bthis.lazyRenderCheckFn()%3B%7Dthis.listenersSetup%3Dtrue%3B%7D%2CremoveListeners%3Afunction%20removeListeners()%7Bwindow.removeEventListener('location-changed'%2Cthis._locationChangedFn)%3Bwindow.removeEventListener('message'%2Cthis._onSafeFrameMsgFn)%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn)%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn)%3Bwindow.removeEventListener(this.visibilityEvent%2Cthis._visibilityFn)%3Bif(this.autoRefresh)%7Bwindow.removeEventListener('ga-scroll'%2Cthis._engagementUpdateFn)%3B%7Dthis.listenersSetup%3Dfalse%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20conditional%20sizes%20to%20DFP%20size%20sizes%20when%20we%20have%20enough%20available%20width%20(size%20width%20%2B%20margins)%0A%20%20%20%20%20%20%20%20%20*%2FaddConditionalSizes%3Afunction%20addConditionalSizes()%7Bvar%20_this4%3Dthis%3Bvar%20containerWidth%3Dvoid%200%3Bif(this.conditionalSizes.length)containerWidth%3Dthis._getNonZeroAttr(this.parentNode%2C'clientWidth')%3Bthis.conditionalSizes.forEach(function(s)%7Bif(Array.isArray(s)%26%26s.length%3D%3D%3D2)%7Bvar%20w%3DparseInt(s%5B0%5D%2C10)%7C%7C0%3Bvar%20minWidth%3Dw%2B_this4.conditionalSizesMargin*2%3Bif(w%26%26containerWidth%26%26containerWidth%3E%3DminWidth)%7B_this4.sizes.push(s)%3B%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Destroys%20the%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%20%7BBoolean%7D%20setupAgain%20%20whether%20to%20set%20the%20ad%20back%20up%20again%20after%20destroying.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BBoolean%7D%20success%20%20%20whether%20the%20destruction%20was%20successful%0A%20%20%20%20%20%20%20%20%20*%2Fdestroy%3Afunction%20destroy(setupAgain)%7B%2F%2F%20If%20no%20googletag%20just%20stop%20(if%20no%20googletag%20we%20haven't%20been%20setup%20anyways)%0Aif(!this._getNested(window%2C'googletag'%2C'apiReady'))%7Breturn%20false%3B%7Dvar%20success%3Dwindow.googletag.destroySlots(%5Bthis.gptSlot%5D)%3Bif(success%26%26setupAgain)%7Bthis._setupAd()%3B%7Dreturn%20success%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Scroll%20listener%20for%20lazy%20loading%0A%20%20%20%20%20%20%20%20%20*%2FlazyRenderCheck%3Afunction%20lazyRenderCheck()%7Bif(!this.lazyTriggered%26%26this.isVisible(this.renderMultiplier))%7Bthis.refresh()%3Bthis.lazyTriggered%3Dtrue%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Scroll%20listener%20for%20lazy%20fetching%0A%20%20%20%20%20%20%20%20%20*%2FlazyFetchCheck%3Afunction%20lazyFetchCheck()%7Bif(this.isVisible(this.fetchMultiplier))%7Bthis.lazyFetchDefer.resolve()%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20the%20ad%20should%20be%20considered%20%22visible%22.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BBoolean%7D%20Visible%0A%20%20%20%20%20%20%20%20%20*%20*%2FisVisible%3Afunction%20isVisible(multiplier)%7Bmultiplier%3Dmultiplier%7C%7C0%3Bvar%20tolerance%3Dthis.viewportHeight*-multiplier%3Breturn%20this._checkVisible(this%2Ctolerance%2Cnull)%3D%3D%3D'visible'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20last%20engagement%20metric%2C%20triggered%20by%20scroll%2Ffocus%2Fblur%0A%20%20%20%20%20%20%20%20%20*%2FengagementUpdate%3Afunction%20engagementUpdate()%7Bthis.lastEngagement%3DDate.now()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20a%20paramount%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupParamount%3Afunction%20setupParamount(data)%7Bthis._log('Paramount%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-paramount')%3Bthis.container.classList.remove('partner-bordered')%3Bthis.isParamount%3Dtrue%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20an%20inline%20spike%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupSpike%3Afunction%20setupSpike(data)%7Bthis._log('Branded%20Content%20Spike%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-spike')%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20a%20branded%20content%20tile%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupTile%3Afunction%20setupTile(data)%7Bthis._log('Branded%20Content%20Tile%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-tile')%3Bif(data.html)%7Bvar%20div%3Ddocument.createElement('div')%3Bdiv.classList.add('branded-content-tile-container')%3Bthis.parentNode.insertBefore(div%2Cthis.nextSibling)%3Bdiv.innerHTML%3Ddata.html%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Public%20method%20to%20add%20DFP%20targeting%20manually%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20key%20value%20targeting%20to%20set%20on%20the%20slot%0A%20%20%20%20%20%20%20%20%20*%20*%2FaddTargeting%3Afunction%20addTargeting(targeting)%7Bvar%20_this5%3Dthis%3Bthis.defineDefer.promise.then(function()%7B_this5._setTargeting(_this5.gptSlot%2Ctargeting)%3B%7D)%3B%7D%2CsetContainer%3Afunction%20setContainer()%7B%2F%2F%20Set%20container%20to%20load%20ad%20into%20(create%20if%20not%20in%20template)%0Athis.container%3Dthis.%24%24('.ad-container')%3Bif(!this.container)%7Bvar%20el%3Ddocument.createElement('div')%3Bel.classList.add('ad-container')%3BPolymer.dom(this.root).appendChild(el)%3Bthis.container%3Del%3B%7D%2F%2F%20Dynamic%20container%20styles%0Aif(!this.highImpact%26%26!this.noBorder)%7Bthis.container.classList.add('partner-bordered')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Displays%20an%20ad.%20Triggers%20an%20ad%20call%20that%20will%20include%20any%20defined%20slots%20that%20haven't%20been%20fetched%20yet.%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20the%20page%20level%20via%20%60window.ga_data.ads.displayQueue%60%0A%20%20%20%20%20%20%20%20%20*%2Fdisplay%3Afunction%20display()%7Bvar%20_this6%3Dthis%3Bif(!this.displayed)%7Bthis.displayed%3Dtrue%3Bthis.setContainer()%3Bwindow.googletag.cmd.push(function()%7B_this6._startDisplayedAndRenderedFallback()%3B_this6.container.id%3D_this6.slotId%3Bif(!(window.ga_privacy%26%26window.ga_privacy.gdprApplies)%26%26window.ga_data%26%26window.ga_data.utils%26%26typeof%20window.ga_data.utils.flushTcfStub%3D%3D%3D'function')%7Bwindow.ga_data.utils.flushTcfStub()%3B%7Dwindow.googletag.display(_this6.slotId)%3B%7D)%3B%2F%2F%20tracking%2Flogging%20first%20call%0Athis.request%3Dwindow.ga_data.ads.stats.requests%2B%2B%3B%2F%2F%20previously%20newrelic%0Athis._log('Displaying%20Slot')%3B%7D%7D%2C_minHeightChanged%3Afunction%20_minHeightChanged(newValue)%7Bif(newValue)this.style.minHeight%3DnewValue%2B20%2B'px'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Tells%20GPT%20to%20fetch%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20the%20page%20level%20via%20%60window.ga_data.ads.refreshQueue%60%0A%20%20%20%20%20%20%20%20%20*%20*%2FpubadsRefresh%3Afunction%20pubadsRefresh()%7Bvar%20_this7%3Dthis%3Bwindow.googletag.cmd.push(function()%7Bwindow.googletag.pubads().refresh(%5B_this7.gptSlot%5D%2C%7BchangeCorrelator%3Afalse%7D)%3B_this7._startDisplayedAndRenderedFallback()%3B%7D)%3B%2F%2F%20tracking%2Flogging%0Athis.request%3Dwindow.ga_data.ads.stats.requests%2B%2B%3B%2F%2F%20previously%20newrelic%0Athis._log('Refreshing%20Slot')%3B%7D%2C%2F%2F%20previously%20newrelic%20_mark%20function%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gathers%20necessary%20information%20to%20set%20up%20a%20new%20ad%20slot%20for%20rendering.%0A%20%20%20%20%20%20%20%20%20*%2F_setupAd%3Afunction%20_setupAd()%7Bvar%20_this8%3Dthis%3Bthis._beforeSetupAd()%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3Bwindow.googletag.cmd.push(function()%7Breturn%20_this8._defineSlot()%3B%7D)%3Bthis.adIsSetup%3Dtrue%3Bthis._afterSetupAd()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Before%20Setup%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_beforeSetupAd%3Afunction%20_beforeSetupAd()%7B%2F%2F%20before%20setup%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20After%20Setup%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_afterSetupAd%3Afunction%20_afterSetupAd()%7B%2F%2F%20after%20setup%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Render%20ended%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FrenderEnded%3Afunction%20renderEnded(event)%7B%2F%2F%20rendered%20ended%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Render%20ended%20event%20triggered%20by%20Google%20for%20all%20slots%20when%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%201.%20Ad%20call%20is%20returned%20(after%20first%20ad%20on%20page%20is%20displayed)%2C%20and%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%202.%20Slot%20is%20displayed%20%26%20ad%20is%20rendered%20(INCONSISTENT%20as%20of%205-31-2018)%0A%20%20%20%20%20%20%20%20%20*%20Triggers%20the%20public%20rendered%20ended%20function%20if%20the%20ad%20is%20not%20empty.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20event%20DFP%20rendered%20event%20object%0A%20%20%20%20%20%20%20%20%20*%2F_renderEndedCheck%3Afunction%20_renderEndedCheck(event)%7Bif(event.slot.__gannettSlotId%3D%3D%3Dthis.slotId)%7Bif(event.isEmpty)%7Bthis._log('No%20Ad%20Delivered.%20Collapsing%20Ad')%3Bthis.style.display%3D'none'%3B%7Delse%20if(event.size%26%26event.size%5B1%5D%26%26this._checkVisible(this)%3D%3D%3D'below')%7B%2F%2F%20Resize%20if%20returned%20ad%20is%20smaller%20than%20static%20height%20and%20we're%20below%20the%20current%20viewport%0Athis.minHeight%3Devent.size%5B1%5D%3B%7Dthis.classList.remove('partner-loading')%3Bif(this.displayed)%7Bif(this.awaitingDisplayedAndRendered)%7Bif(this.displayedAndRenderedTO)clearTimeout(this.displayedAndRenderedTO)%3Bthis.awaitingDisplayedAndRendered%3Dfalse%3Bthis.onDisplayedAndRendered(event)%3B%7Delse%7B%2F%2F%20previously%20newrelic%0A%7D%7D%7D%7D%2ConDisplayedAndRendered%3Afunction%20onDisplayedAndRendered(event)%7Bthis._log('DisplayedAndRendered')%3Bif(this.autoRefresh)this._startAutoRefresh()%3B%2F%2F%20previously%20newrelic%0Athis.renderEnded(event)%3B%7D%2C_startDisplayedAndRenderedFallback%3Afunction%20_startDisplayedAndRenderedFallback()%7Bvar%20_this9%3Dthis%3Bvar%20renderFallbackTimeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'renderFallbackTimeout')%7C%7C2000%3Bthis.awaitingDisplayedAndRendered%3Dtrue%3Bthis.displayedAndRenderedTO%3DsetTimeout(function()%7B_this9.awaitingDisplayedAndRendered%3Dfalse%3B_this9.onDisplayedAndRendered(%7Bslot%3A%7B__gannettSlotId%3A_this9.slotId%7D%7D)%3B%2F%2F%20previously%20newrelic%0A%7D%2CrenderFallbackTimeout)%3B%7D%2C_startAutoRefresh%3Afunction%20_startAutoRefresh()%7Bvar%20_this10%3Dthis%3Bvar%20refreshTimeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'refreshRate')%7C%7C60000%3Bthis.canRefresh%3Dfalse%3Bif(this.autoRefreshTO)clearTimeout(this.autoRefreshTO)%3B%2F%2F%20Timeout%20before%20we%20allow%20the%20ad%20unit%20to%20refresh%0Athis.autoRefreshTO%3DsetTimeout(function()%7B_this10.canRefresh%3Dtrue%3B_this10._autoRefreshCheck()%3B%7D%2CrefreshTimeout)%3Bif(!this.viewableImpObserver)this._setupViewableImpObserver()%3B%7D%2C_activeViewCheck%3Afunction%20_activeViewCheck(event)%7Bif(event.slot.__gannettSlotId%3D%3D%3Dthis.slotId)%7Bthis._log('Activeview%20Fired')%3B%2F%2F%20previously%20newrelic%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sends%20a%20message%20to%20the%20slot's%20iframe.%0A%20%20%20%20%20%20%20%20%20*%2F_msgSlot%3Afunction%20_msgSlot(message)%7Bvar%20slot%3Dthis.slotOverride%7C%7Cthis.container.querySelector('div%20%3E%20iframe')%3Bvar%20slotWin%3Dslot%3Fslot.contentWindow%3A%7B%7D%3Bif(typeof%20slotWin.postMessage%3D%3D%3D'function')%7BslotWin.postMessage(message%2C'*')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20a%20Google%20ad%20slot%2C%20to%20be%20filled%20by%20Google%20when%20an%20ad%20request%20is%20made.%0A%20%20%20%20%20%20%20%20%20*%2F_defineSlot%3Afunction%20_defineSlot()%7Bvar%20_this11%3Dthis%3Bif(this.gptSlot)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7Bvar%20gptSlot%3Dvoid%200%2Cpubads%3Dvoid%200%3Bvar%20adUnitPath%3D_this11._generatePath()%2Ctargeting%3D_this11._parseJsonObject(_this11.targeting.replace(%2F'%2Fg%2C'%22')%2C%7B%7D)%2Cexclusion%3D_this11.exclusion.split('%2C')%3Bpubads%3Dwindow.googletag.pubads()%3B_this11.gptSlot%3DgptSlot%3Dwindow.googletag.defineSlot(adUnitPath%2C_this11.sizes%2C_this11.slotId).addService(pubads)%3BgptSlot.__gannettSlotId%3D_this11.slotId%3B_this11._log('Slot%20Defined'%2CadUnitPath%2C_this11.sizes)%3B_this11.defineDefer.resolve()%3B%2F%2F%20Add%20event%20listener%20for%20slot%20render%20ended%0A%2F%2F%20Only%20add%20once%20to%20avoid%20adding%20multiples%20when%20destroying%2Frecreating%20slots%0Aif(!_this11.gptEventsAdded)%7Bpubads.addEventListener('slotRenderEnded'%2Cfunction(e)%7Breturn%20_this11._renderEndedCheck(e)%3B%7D)%3Bpubads.addEventListener('impressionViewable'%2Cfunction(e)%7Breturn%20_this11._activeViewCheck(e)%3B%7D)%3B_this11.gptEventsAdded%3Dtrue%3B%7D%2F%2F%20setup%20slot%20targeting%0A_this11._setupTargeting(gptSlot%2Ctargeting)%3B_this11._setExclusionTargeting(gptSlot%2Cexclusion)%3B%2F%2F%20Wrap%20in%20the%20resolved%20promise%2C%20to%20fix%20queuing%20issue%0A_this11.defineDefer.promise.then(function()%7Bif(!(_this11.lazy%7C%7C_this11.deferred))%7B_this11.refresh()%3B%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Generates%20ad%20unit%20path%20for%20DFP.%20Used%20when%20defining%20a%20new%20slot%2C%20as%20well%20as%20for%20bids%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ad%20Unit%20Path%20string%0A%20%20%20%20%20%20%20%20%20*%2F_generatePath%3Afunction%20_generatePath()%7Bvar%20overrides%3Dthis._getOverrides()%3Bvar%20dfpConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'dfp')%7C%7C%7B%7D%3Bvar%20accountId%3Doverrides.usatai%7C%7CdfpConfig.accountId%3Bvar%20accountName%3Doverrides.usatan%7C%7C(this.mobile%3FdfpConfig.mobileAccountName%3AdfpConfig.accountName)%3Bvar%20cst%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'cst')%3Bvar%20vendor%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'vendor')%3Bvar%20path%3D'%2F'%2BaccountId%2B'%2F'%2BaccountName%2B'%2F'%2Bthis.placement%3Bif(vendor)%7Bpath%2B%3D'-'%2Bvendor%3B%7Dif(cst)%7Bpath%2B%3D'%2F'%2Bcst%3B%7Dreturn%20this._sanitizeAdUnitPath(path)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sanitizes%20a%20string%20for%20use%20as%20a%20DFP%20Ad%20Unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%22Only%20letters%2C%20numbers%2C%20underscores%2C%20hyphens%2C%20periods%2C%20asterisks%2C%20forward%20slashes%2C%20backslashes%2C%0A%20%20%20%20%20%20%20%20%20*%20exclamations%2C%20left%20angle%20brackets%2C%20right%20angle%20brackets%2C%20colons%20and%20parentheses%20are%20allowed.%22%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fsupport.google.com%2Fdfp_premium%2Fanswer%2F177203%3Fhl%3Den%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnit%20%20string%20to%20be%20cleaned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20%20%20%20%20%20%20%20%20DFP%20compliant%20ad%20unit%20path%20string%0A%20%20%20%20%20%20%20%20%20*%2F_sanitizeAdUnitPath%3Afunction%20_sanitizeAdUnitPath(adUnit)%7Bif(typeof%20adUnit%3D%3D%3D'string')%7Breturn%20adUnit.replace(%2F%5B%5E%5Cw-*!%3C%3E%3A().%5C%5C%5C%2F%5D%2Fg%2C'')%3B%7Dreturn''%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20initial%20slot%20targeting%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20Targeting%20key%2Fvalue%20pairs%0A%20%20%20%20%20%20%20%20%20*%2F_setupTargeting%3Afunction%20_setupTargeting(gptSlot%2Ctargeting)%7B%2F%2F%20Add%20in%20some%20set%20keys%0Atargeting.position%3Dthis.placement%3Btargeting.adCount%3Dthis.adCount%3Btargeting.features%3Dthis.getFeatures()%3B%2F%2F%20Merge%20targeting%20set%20by%20the%20slot%20and%20targeting%20set%20on%20the%20element%0Atargeting%3DObject.assign(%7B%7D%2Cthis.slotTargeting%2C%7Bnsf%3Athis.nsfTargeting%7D%2Ctargeting)%3Bthis._setTargeting(gptSlot%2Ctargeting)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20targeting%20specified%20in%20the%20targeting%20object%20to%20the%20specified%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20Targeting%20key%2Fvalue%20pairs%0A%20%20%20%20%20%20%20%20%20*%2F_setTargeting%3Afunction%20_setTargeting(gptSlot%2Ctargeting)%7Bvar%20key%3Dvoid%200%2Cvalue%3Dvoid%200%3Bfor(key%20in%20targeting)%7Bif(targeting.hasOwnProperty(key))%7Bvalue%3Dtargeting%5Bkey%5D%3Bif(!(typeof%20value%3D%3D%3D'undefined'%7C%7Cvalue%3D%3D%3Dnull%7C%7Cvalue%3D%3D%3D''%7C%7CArray.isArray(value)%26%26!value.length))%7BgptSlot.setTargeting(key%2CString(value))%3B%7D%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20targeting%20specified%20in%20the%20targeting%20object%20to%20the%20specified%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20%20exclusion%20%20%20%20Array%20of%20exclusion%20labels%20to%20be%20applied%0A%20%20%20%20%20%20%20%20%20*%2F_setExclusionTargeting%3Afunction%20_setExclusionTargeting(gptSlot%2Cexclusion)%7Bexclusion.forEach(function(value)%7Bif(value%26%26typeof%20value%3D%3D%3D'string')%7Bvalue.trim()%3BgptSlot.setCategoryExclusion(value)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20the%20index%20count%20of%20this%20type%20of%20ad%20placement.%20Used%20for%20ad%20targeting.%0A%20%20%20%20%20%20%20%20%20*%20Count%20is%20determined%20by%20the%20sequence%20in%20which%20ads%20are%20registered%20on%20the%20page.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7CNumber%7D%20Adcount%2C%20if%20last%20ad%20unit%2C%20will%20return%20an%20array%20with%20'last'%20and%20index%20value%0A%20%20%20%20%20%20%20%20%20*%2FgetAdCount%3Afunction%20getAdCount()%7B%2F%2F%20Add%20element%20to%20global%20placement%20list%20if%20not%20already%20present%0Aga_data.ads.placements%3Dga_data.ads.placements%7C%7C%7B%7D%3Bga_data.ads.placements%5Bthis.placement%5D%3Dga_data.ads.placements%5Bthis.placement%5D%7C%7C%5B%5D%3Bvar%20idx%3Dga_data.ads.placements%5Bthis.placement%5D.indexOf(this)%3Bif(idx%3C0)%7Bga_data.ads.placements%5Bthis.placement%5D.push(this)%3Breturn%20ga_data.ads.placements%5Bthis.placement%5D.length%3B%7Dreturn%20idx%2B1%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Compiles%20of%20list%20of%20target-able%20features%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20List%20of%20features%20for%20this%20slot%20that%20are%20enabled%0A%20%20%20%20%20%20%20%20%20*%2FgetFeatures%3Afunction%20getFeatures()%7Bvar%20features%3D%5B%5D%3Bvar%20overrides%3Dthis.getUrlParamValue('features')%3Bif(overrides)%7Breturn%20overrides.split('%2C')%3B%7Dif(this.lazy)features.push('lazy')%3Bif(this.autoRefresh)features.push('autorefresh')%3Bif(this.sticky)features.push('sticky')%3Bif(this.outstream)features.push('outstream')%3Bif(window.chrome)features.push('noautoplay')%3Breturn%20features%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Window%20listener%20for%20messages%20coming%20from%20SafeFrames%0A%20%20%20%20%20%20%20%20%20*%2F_onSafeFrameMsg%3Afunction%20_onSafeFrameMsg(e)%7B%2F%2F%20Check%20if%20the%20message%20is%20coming%20from%20a%20google%20iframe%2C%20and%20if%20we%20have%20the%20start%20of%20a%20JSON%20object%0Aif(e%26%26typeof%20e.data%3D%3D%3D'string'%26%26e.data.charAt(0)%3D%3D%3D'%7B')%7Btry%7Bvar%20data%3DJSON.parse(e.data)%3Bif(data.position%3D%3D%3Dthis.placement%26%26data.adCount%3D%3Dthis.adCount)%7Bthis._onDataReceived()%3Bswitch(data.adType)%7Bcase'spike'%3Athis.setupSpike(data)%3Bbreak%3Bcase'paramount'%3Athis.setupParamount(data)%3Bbreak%3Bcase'bcSpike'%3Athis.classList.add('partner-spike')%3Bbreak%3Bcase'tile'%3Athis.setupTile(data)%3B%7Dif(!this.viewabilityObserver)%7Bthis._setupViewabilityObserver()%3B%7Dwindow.removeEventListener('message'%2Cthis._onSafeFrameMsgFn)%3B%7D%7Dcatch(err)%7Bthis._log(this.tagName%2B'%20failed%20to%20parse%20JSON%20data'%2Cerr)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20postmessage%20data%20recieved%20to%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_onDataReceived%3Afunction%20_onDataReceived()%7B%2F%2F%20data%20received%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Will%20only%20allow%20autorefresh%20if%20the%20window%20is%20visible%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_onVisibilityChange%3Afunction%20_onVisibilityChange()%7Bvar%20visible%3D!document%5Bthis.hiddenAttr%5D%3Bthis.windowIsVisible%3Dvisible%3Bthis.engagementUpdate()%3Bif(visible)%7Bthis._autoRefreshCheck()%3B%7Dvar%20message%3DJSON.stringify(%7BgaMsg%3Atrue%2Cvisible%3Avisible%7D)%3Bthis._msgSlot(message)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Runs%20checks%20to%20see%20if%20the%20unit%20is%20visible%2C%20if%20the%20window%20is%20in%20focus%20and%20if%20the%20user%20has%20engaged%20with%20the%20page%20in%20the%20past%205%20minutes%20(configurable)%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_autoRefreshCheck%3Afunction%20_autoRefreshCheck()%7Bvar%20inactive_timeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2C'inactiveTimeout')%7C%7C300000%2Ctype%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'type')%7C%7C'smart'%3Bif(this.canRefresh%26%26!this.isParamount%26%26(this.isViewable%26%26this.windowIsVisible%7C%7Ctype%3D%3D%3D'simple')%26%26this.lastEngagement%3E%3DDate.now()-inactive_timeout)%7Bvar%20navigationType%3D''%3Bif(this.windowIsVisible)%7BnavigationType%3D'adrefresh-on'%3B%7Delse%7BnavigationType%3D'adrefresh-off'%3B%7D%2F%2F%20update%20targeting%20so%20incremental%20revenue%20can%20be%20tracked%0Athis._setTargeting(this.gptSlot%2C%7BnavigationType%3AnavigationType%7D)%3Bthis.refresh()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20observer%20to%20check%20if%20the%20ad%20is%2050%25%20viewable%20for%20the%20smallest%20IAB%20standard%20size%20of%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_setupViewableImpObserver%3Afunction%20_setupViewableImpObserver()%7Bvar%20_this12%3Dthis%3Bvar%20topMargin%3Dthis._getSmallestHeight()%2F2%2Coptions%3D%7Broot%3Anull%2CrootMargin%3A'-'%2BtopMargin%2B'px%200px%200px%200px'%2Cthreshold%3A%5B0.5%5D%7D%3Bthis.viewableImpObserver%3Dnew%20IntersectionObserver(function(entries)%7Breturn%20_this12._viewableImpCheck(entries)%3B%7D%2Coptions)%3Bthis.viewableImpObserver.observe(this)%3B%7D%2C_viewableImpCheck%3Afunction%20_viewableImpCheck(entries)%7Bvar%20_this13%3Dthis%3Bentries.forEach(function(entry)%7Bvar%20ratio%3Dentry.intersectionRatio%2Cviewable%3Dratio%3E%3D0.5%3B_this13.isViewable%3Dviewable%3Bif(viewable)%7B_this13._autoRefreshCheck()%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20observer%20to%20broadcast%20viewability%20info%20to%20Paramount%20ads.%0A%20%20%20%20%20%20%20%20%20*%20Threshold%20value%20gets%20set%20in%20the%20config.%20Default%20threshold%20%3D%200.1%20(10%25%20in%20view).%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_setupViewabilityObserver%3Afunction%20_setupViewabilityObserver()%7Bvar%20_this14%3Dthis%3Bvar%20viewabilityThreshold%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'viewability'%2C'threshold')%7C%7C0.1%3Bvar%20options%3D%7Broot%3Anull%2Cthreshold%3A%5BviewabilityThreshold%5D%7D%3Bthis.viewabilityObserver%3Dnew%20IntersectionObserver(function(entries)%7Breturn%20_this14._viewabilityCheck(entries)%3B%7D%2Coptions)%3Bthis.viewabilityObserver.observe(this)%3B%7D%2C_viewabilityCheck%3Afunction%20_viewabilityCheck(entries)%7Bvar%20_this15%3Dthis%3Bvar%20viewabilityThreshold%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'viewability'%2C'threshold')%7C%7C0.1%3Bentries.forEach(function(entry)%7Bvar%20ratio%3Dentry.intersectionRatio%2CisVisible%3Dratio%3E%3DviewabilityThreshold%2Cmessage%3DJSON.stringify(%7BgaMsg%3Atrue%2Cvisible%3AisVisible%7D)%3B_this15._msgSlot(message)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20the%20smallest%20standard%20IAB%20ad%20height%20of%20the%20ad%20slots%20defined%20sizes%2C%20defaults%20to%2050%20since%20that's%20the%20smallest%20IAB%20height%20we'd%20encounter%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BNumber%7D%20Height%20in%20px%20of%20the%20smallest%20standard%20IAB%20size%20that%20matches%20a%20size%20of%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_getSmallestHeight%3Afunction%20_getSmallestHeight()%7Bvar%20iabHeights%3D%5B50%2C90%2C250%2C600%2C1050%5D%2CslotHeights%3D(this.sizes%7C%7C%5B%5D).map(function(size)%7Breturn%20size%5B1%5D%3B%7D)%3Breturn%20iabHeights.find(function(height)%7Bif(slotHeights.indexOf(height)!%3D%3D-1)return%20height%3B%7D)%7C%7C50%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Slot%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerSlot%3DPartnerSlot%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-slot.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-slot.html.js%0A",
            "resourceBytes": 28581,
            "encodedBytes": 0,
            "unusedBytes": 18573,
            "children": [
              {
                "name": "gallium/behaviors/partner-slot.html_script_0.js",
                "resourceBytes": 21856,
                "unusedBytes": 18573
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 6725
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%20Adds%20header%20bidding%20functionality%20to%20an%20ad.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerBid%0A%20%20%20%20%20*%2Fvar%20PartnerBid%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20prebid%20integration%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(this.inactive%7C%7Cthis._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))return%3Bwindow.pbjs%3Dwindow.pbjs%7C%7C%7B%7D%3Bwindow.pbjs.que%3Dwindow.pbjs.que%7C%7C%5B%5D%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3B%2F%2F%20Get%20debug%20params%0Athis.pbDebug%3Dthis.getUrlParamValue('pb_debug')%3Bthis.apsDebug%3Dthis.getUrlParamValue('aps_debug')%3Bif(this._getNested(this%2C'apsUnit'%2C'mediaType')%3D%3D%3D'video')%7Bthis.aps%3Dthis.apsDebug%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%26%26this.placementConfig.aps%3B%7Dif(!this.prebid%26%26!this.aps)return%3B%2F%2F%20Set%20up%20bidding%20barriers%0Athis.apsSetup%3Dnew%20this._deferred()%3Bthis.pbSetup%3Dnew%20this._deferred()%3B%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.adId%3Dwindow.ga_data.adId%7C%7C0%3Bthis.id%3D'partner-position-'%2Bwindow.ga_data.adId%2B%2B%3B%7Dif(!this.slotId)%7Bthis.slotId%3Dthis.id%3B%7D%2F%2F%20Start%0Athis._refreshBids()%3B%2F%2F%20Lazy%20fetch%20bids%20for%20slots%20that%20are%20lazy%20fetching%0Aif(!this.isVideo%26%26this.lazyFetch)%7Bthis.defineDefer.promise.then(function()%7B_this._setupVendors()%3B%7D)%3B%7Delse%7Bthis._setupVendors()%3B%7D%7D%2C_setupVendors%3Afunction%20_setupVendors()%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%3B%2F%2F%20Setup%20Prebid.js%20if%20enabled%0Aif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bthis._log('Prebid%20setting%20up')%3Bif(this.isVideo)%7Bthis._setupVideoPrebid(prebidSiteConfig)%3B%7Delse%7Bthis._setupPreBids(prebidSiteConfig)%3B%7D%7D%2F%2F%20setup%20APS%20if%20enabled%0Aif((this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%7C%7Cthis.apsDebug)%26%26this.aps)%7Bthis._log('APS%20setting%20up')%3Bthis._setupAPS()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20Amazon%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_setupAPS%3Afunction%20_setupAPS()%7Bif(!this.apsUnit)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bthis.apsUnit%3D%7BslotID%3A'videoPlayer_plcmt'%2B(this.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt'))%7C%7C4%2Csizes%3Athis._getApsSizes(this.sizes)%7D%3B%7Dthis.apsSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20acceptable%20APS%20sizes%20from%20a%20list%20of%20sizes%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20sizeList%20List%20of%20DFP%20sizes%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20List%20of%20sizes%20to%20pass%20to%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_getApsSizes%3Afunction%20_getApsSizes(sizeList)%7Bvar%20apsSizes%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3CsizeList.length%3Bi%2B%2B)%7Bif(sizeList%5Bi%5D!%3D%3D'fluid')%7BapsSizes.push(sizeList%5Bi%5D)%3B%7D%7Dreturn%20apsSizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20current%20player%20dimensions%20for%20prebid%20params%0A%20%20%20%20%20%20%20%20%20*%2F_getVideoSize%3Afunction%20_getVideoSize()%7Bif(this.videoHeight%26%26this.videoWidth)return%3Bthis.videoHeight%3DMath.round(this.%24.still%26%26this.%24.still.offsetHeight%3Fthis.%24.still.offsetHeight%3Awindow.innerWidth*.5625)%3Bthis.videoWidth%3DMath.round(this.%24.still%26%26this.%24.still.offsetWidth%3Fthis.%24.still.offsetWidth%3Awindow.innerWidth)%3B%7D%2C_setupVideoPrebid%3Afunction%20_setupVideoPrebid(prebidSiteConfig)%7Bthis._log('Setting%20up%20video%20prebid')%3Bthis.bids%3D%5B%5D%3Bthis._getVideoSize()%3Bvar%20ssts%3Dthis.getRawData().ssts%3Bvar%20sz%3Dthis.isMobile%3Fthis.adSettings.sizes.mobile%3Athis.adSettings.sizes.desktop%2CappNexusMainConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CappNexusVideoConfig%3Dthis.prebidConfig.appNexus%7C%7C%7B%7D%2CrubiconMainConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CrubiconVideoConfig%3Dthis.prebidConfig.rubicon%7C%7C%7B%7D%2CopenXConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.openx%2Cthis.prebidConfig.openx%7C%7C%7B%7D)%2CindexConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.index%2Cthis.prebidConfig.index%7C%7C%7B%7D)%2CstickyAdsConfig%3Dthis.prebidConfig.stickyAds%7C%7C%7B%7D%2CsonobiConfig%3Dthis.prebidConfig.sonobi%7C%7C%7B%7D%2CpubmaticConfig%3Dthis.prebidConfig.pubmatic%7C%7C%7B%7D%2CtripleliftConfig%3Dthis.prebidConfig.triplelift%7C%7C%7B%7D%2CundertoneConfig%3Dthis.prebidConfig.undertone%7C%7C%7B%7D%2Cgpid%3D'%2F'%2Bthis.Preroll.iu%2B'%2F'%2Bthis.slotId%3Bif(this._isEnabled('appNexus'%2CappNexusMainConfig)%26%26appNexusVideoConfig.enabled)this._setupAppNexusVideo(appNexusVideoConfig%2Cssts)%3Bif(this._isEnabled('rubicon'%2CrubiconMainConfig)%26%26rubiconVideoConfig.enabled)this._setupRubiconVideo(rubiconVideoConfig%2Cssts)%3Bif(this._isEnabled('openx'%2CopenXConfig))this._setupOpenXVideo(openXConfig)%3Bif(this._isEnabled('index'%2CindexConfig))this._setupIndexVideo(indexConfig)%3Bif(this._isEnabled('stickyads'%2CstickyAdsConfig))this._setupStickyAdsVideo(stickyAdsConfig)%3Bif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobiVideo(sonobiConfig)%3Bif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmaticConfigVideo(pubmaticConfig)%3Bif(this._isEnabled('triplelift'%2CtripleliftConfig))this._setupTripleliftVideo(tripleliftConfig)%3Bif(this._isEnabled('undertone'%2CundertoneConfig))this._setupUndertoneVideo(undertoneConfig)%3Bthis._populateUserIds()%3Bthis.addAdUnits(%5B%5Bsz.width%2Csz.height%5D%5D%2Cgpid)%3B%7D%2C_populateUserIds%3Afunction%20_populateUserIds()%7Bvar%20getNested%3Dthis._getNested%2Cutils%3Dga_data.utils%2CgetParam%3Dutils.getUrlParamValue%2Cpbc%3DgetNested(ga_data%2C'site'%2C'ads'%2C'prebid')%2CliveRampEnabled%3Dutils.isCookieLessBrowser()%26%26getNested(pbc%2C'identityLink'%2C'enabled')%7C%7CgetParam('identitylink')%2CsharedIdEnabled%3DgetNested(pbc%2C'sharedId'%2C'enabled')%7C%7CgetParam('sharedid')%3Bif(!liveRampEnabled%26%26!sharedIdEnabled)%7Breturn%3B%7Dvar%20anonId%3Dvoid%200%2CliverampId%3Dvoid%200%3Bif(sharedIdEnabled)%7BanonId%3Dutils.anonId%3B%7Dif(liveRampEnabled)%7BliverampId%3Dutils.lrEnv%3B%7Dthis.bids.forEach(function(b)%7Bb.userId%3D%7B%7D%3Bb.userIdAsEids%3D%5B%5D%3Bif(liveRampEnabled%26%26liverampId)%7Bb.userId.idl_env%3DliverampId%3Bb.userIdAsEids.push(%7Bsource%3A'liveramp.com'%2Cuids%3A%5B%7Bid%3AliverampId%2Catype%3A3%7D%5D%7D)%3B%7Dif(sharedIdEnabled%26%26anonId)%7Bb.userId.sharedid%3D%7B'id'%3AanonId%7D%3Bb.userIdAsEids.push(%7Bsource%3A'pubcid.org'%2Cuids%3A%5B%7Bid%3AanonId%2Catype%3A1%7D%5D%7D)%3B%7D%7D)%3B%7D%2C_setupAppNexusVideo%3Afunction%20_setupAppNexusVideo(config%2Cssts)%7Bvar%20placementId%3Dthis.getUrlParamValue('pb_video_id')%7C%7Cconfig.placementId%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(placementId)%7Bthis.bids.push(%7Bbidder%3A'appnexusAst'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cposition%3A%5Bthis.placement%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3Bthis._log('Adding%20video%20ad%20unit%20placement'%2CplacementId)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-302%0A%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fprebid.org%2Fdev-docs%2Fbidders%2Frubicon.html%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubiconVideo%3Afunction%20_setupRubiconVideo(config%2Cssts)%7Bvar%20getNested%3Dthis._getNested%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(ssts.topic)%7BtopicArr.push(ssts.topic)%3B%7Dthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.accountId%2CsiteId%3Aconfig.siteId%2CzoneId%3Aconfig.zoneId%2Cvideo%3A%7Blanguage%3A'en'%7D%2Cinventory%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cdomain%3A%5BgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-395%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenXVideo%3Afunction%20_setupOpenXVideo(config)%7Bthis.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3Aconfig.unit.toString()%2CdelDomain%3Aconfig.domain%2Cvideo%3A%7Burl%3Athis.placementConfig.iframed%3Fdocument.referrer%3Awindow.location.href%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-420%0A%20%20%20%20%20%20%20%20%20*%2F_setupIndexVideo%3Afunction%20_setupIndexVideo(config)%7Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(params%26%26params.id%26%26params.siteId)%7Bthis.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7Bid%3Aparams.id%2CsiteID%3Aparams.siteId%2Cvideo%3A%7BsiteID%3Aparams.siteId%2CplayerType%3Aconfig.playerType%2Cprotocols%3Aconfig.supportedVastVersions%2Cmaxduration%3Aconfig.maxDuration%7D%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-332%0A%20%20%20%20%20%20%20%20%20*%2F_setupStickyAdsVideo%3Afunction%20_setupStickyAdsVideo(config)%7Bif(config.zoneId)%7Bthis.bids.push(%7Bbidder%3A'stickyadstv'%2Cparams%3A%7BzoneId%3Aconfig.zoneId%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-530%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobiVideo%3Afunction%20_setupSonobiVideo(config)%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%3Bvar%20TagID%3Dthis._getNested(config%2Cplatform%2C'TagID')%3Bif(TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3ATagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FWP-4177%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fcommunity.pubmatic.com%2Fdisplay%2FOP%2FPubMatic%2BPrebid.js%2BAdapter%2BParameters%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmaticConfigVideo%3Afunction%20_setupPubmaticConfigVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(config.publisherId)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.publisherId%2CadSlot%3Aparams.adSlot%2Cvideo%3A%7Bapi%3Aconfig.supportedVpaidVersions%2Ch%3Athis.videoHeight%2Clinearity%3A1%2Cmaxduration%3Aconfig.maxDuration%2Cmimes%3Aconfig.mimeTypes%2Cminduration%3Aconfig.minDuration%2Cplacement%3Aconfig.placement%2Cplaybackmethod%3Aconfig.playbackmethod%2Cprotocols%3Aconfig.supportedVastVersions%2Cskippable%3Aconfig.skippable%2Cstartdelay%3A0%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%7D%2C_setupTripleliftVideo%3Afunction%20_setupTripleliftVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aconfig.inventoryCode%2Cvideo%3A%7Bcontext%3Aconfig.context%2Ch%3Athis.videoHeight%2Cplacement%3Aconfig.placement%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%2C_setupUndertoneVideo%3Afunction%20_setupUndertoneVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'undertone'%2Cparams%3A%7BplacementId%3Aconfig.placementId%2CpublisherId%3Aconfig.publisherId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20prebid.js%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20prebidSiteConfig%20Site%20specific%20config%20object%20for%20prebid%0A%20%20%20%20%20%20%20%20%20*%2F_setupPreBids%3Afunction%20_setupPreBids(prebidSiteConfig)%7Bvar%20adSize%3Dvoid%200%2CadSizeStr%3Dvoid%200%2CgetNested%3Dthis._getNested%2CadCount%3Dthis.adCount%7C%7Cthis.getAdCount()%2CadUnitPath%3Dthis._generatePath()%2CadUnitSizes%3Dthis._filterFluidSize(this.sizes)%2Clocation%3Dthis.btf%3F'btf'%3A'atf'%2Csection%3DgetNested(window%2C'ga_data'%2C'route'%2C'sectionName')%2Cssts%3DgetNested(window%2C'ga_data'%2C'route'%2C'ssts')%7C%7C''%2CacceptedSizes%3DprebidSiteConfig.sizes%2CappNexusConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CaolConfig%3DprebidSiteConfig.aol%7C%7C%7B%7D%2CcriteoConfig%3DprebidSiteConfig.criteo%7C%7C%7B%7D%2CixConfig%3DprebidSiteConfig.ix%7C%7C%7B%7D%2ConeMobileConfig%3DprebidSiteConfig.onemobile%7C%7C%7B%7D%2CopenxConfig%3DprebidSiteConfig.openx%7C%7C%7B%7D%2CpubmaticConfig%3DprebidSiteConfig.pubmatic%7C%7C%7B%7D%2CsonobiConfig%3DprebidSiteConfig.sonobi%7C%7C%7B%7D%2CrubiconConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CtripleLiftConfig%3DprebidSiteConfig.triplelift%7C%7C%7B%7D%2CkargoConfig%3DprebidSiteConfig.kargo%7C%7C%7B%7D%2CtrustxConfig%3DprebidSiteConfig.trustx%7C%7C%7B%7D%2CyieldmoConfig%3DprebidSiteConfig.yieldmo%7C%7C%7B%7D%3Bthis.bids%3D%5B%5D%3B%2F%2F%20Check%20to%20see%20if%20this%20slot%20has%20a%20size%20that%20we%20can%20bid%20on%0AadSize%3Dthis._getMaxSize(adUnitSizes%2CacceptedSizes)%3Bif(!adSize%7C%7Cthis.inactive)%7Bthis._log('Inactive%2FNo%20valid%20sizes%20for%20bidding.')%3Breturn%20this.prebid%3Dfalse%3B%7DadSizeStr%3DadSize%5B0%5D%2B'x'%2BadSize%5B1%5D%3B%2F%2F%20Sonobi%20Adapter%20Setup%0Aif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobi(sonobiConfig%2CadUnitPath)%3B%2F%2F%20Criteo%20Adapter%20Setup%0Aif(this._isEnabled('criteo'%2CcriteoConfig))this._setupCriteo(criteoConfig%2CadUnitSizes)%3B%2F%2F%20Index%20Exchange%20Adapter%20Setup%0Aif(this._isEnabled('ix'%2CixConfig))this._setupIx(ixConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20OpenX%20Adapter%20Setup%0Aif(this._isEnabled('openx'%2CopenxConfig))this._setupOpenX(openxConfig%2CadUnitSizes%2Csection)%3B%2F%2F%20Rubicon%20Adapter%20Setup%0Aif(this._isEnabled('rubicon'%2CrubiconConfig))this._setupRubicon(rubiconConfig%2Csection%2Cssts%2Clocation%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('appNexus'%2CappNexusConfig))this._setupAppNexus(appNexusConfig%2CadUnitSizes%2Csection%2Cssts%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('tripleLift'%2CtripleLiftConfig))this._setupTripleLift(tripleLiftConfig%2CadUnitSizes)%3B%2F%2F%20Pubmatic%20Adapter%20Setup%0Aif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmatic(pubmaticConfig%2CadSizeStr%2Clocation)%3B%2F%2F%20OneMobile%20by%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('onemobile'%2ConeMobileConfig))this._setupOneMobile(oneMobileConfig%2CadUnitSizes)%3B%2F%2F%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('aol'%2CaolConfig))this._setupAol(aolConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20Kargo%20Adapter%20Setup%0Aif(this._isEnabled('kargo'%2CkargoConfig)%26%26adCount%3D%3D%3D1%26%26this.placement%3D%3D%3D'mobileweb-banner_bottom')this._setupKargo(kargoConfig%2CadUnitSizes)%3B%2F%2F%20Trustx%20Adapter%20Setup%0Aif(this._isEnabled('trustx'%2CtrustxConfig)%26%26(this._inMobileEnvironment()%7C%7Cthis.sticky))this._setupTrustx(trustxConfig%2CadUnitSizes)%3B%2F%2F%20Yieldmo%20Setup%0Aif(this._isEnabled('yieldmo'%2CyieldmoConfig))this._setupYieldmo(yieldmoConfig)%3Bvar%20experiment%3DgetNested(window.ga_data%2C'ads'%2C'experiment')%7C%7C%7B%7D%3Bif(experiment.flag%3D%3D%3D'ordered'%26%26Array.isArray(experiment.params))%7Bvar%20sortArray%3Dexperiment.params%3Bthis.bids.sort(function(a%2Cb)%7Breturn%20sortArray.indexOf(a.bidder)-sortArray.indexOf(b.bidder)%3B%7D)%3B%7Dthis.addAdUnits(adUnitSizes)%3B%7D%2C_isEnabled%3Afunction%20_isEnabled(bidder%2CbidderConfig)%7Breturn%20this.pbDebug%3D%3D%3Dbidder%7C%7C!this.pbDebug%26%26bidderConfig.enabled%26%26!(!bidderConfig.usp%26%26this._noSell())%3B%7D%2C_noSell%3Afunction%20_noSell()%7Bvar%20privacy%3Dwindow.ga_privacy%7C%7C%7Bchoices%3A%7B%7D%7D%3Breturn%20privacy.ccpaApplies%26%26privacy.choices.targeting%3D%3D%3Dfalse%3B%7D%2CaddAdUnits%3Afunction%20addAdUnits(adUnitSizes%2Cgpid)%7Bif(this.bids.length)%7Bvar%20pbUnit%3D%7Bcode%3Athis.slotId%2CmediaTypes%3A%7Bbanner%3A%7Bsizes%3Athis._sortSizes(adUnitSizes)%7D%7D%2Cbids%3Athis.bids%2Cortb2Imp%3A%7Bext%3A%7Bdata%3A%7Badserver%3A%7Badslot%3Agpid%2Cname%3A'gam'%7D%2Cpbadslot%3Agpid%7D%2Cgpid%3Agpid%7D%7D%7D%3Bif(this.isVideo)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bvar%20plcmt%3Dthis.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt')%3BpbUnit.mediaTypes%3D%7Bvideo%3A%7Bapi%3A%5B2%5D%2Ccontext%3A'instream'%2Clinearity%3A1%2Cmaxduration%3A120%2Cmimes%3A%5B'application%2Fjavascript'%2C'video%2Fmp4'%2C'video%2Fwebm'%2C'video%2Fogg'%2C'application%2Fx-mpegURL'%2C'application%2Fdash%2Bxml'%2C'video%2Fx-ms-wmv'%2C'video%2Fms-asf'%5D%2Cstartdelay%3A0%2Csize_id%3A201%2CplayerHeight%3Athis.videoHeight%2CplayerWidth%3Athis.videoWidth%2Cplcmt%3Aplcmt%7C%7C2%2C%2F%2F%20playerSize%20with%20window%20width%2Fheight%20works%20for%20our%20current%20use%20cases%20(iframes%2C%20mobile%20web)%0A%2F%2F%20will%20need%20to%20be%20updated%20once%20more%20use%20cases%20are%20added%0AplayerSize%3A%5Bwindow.innerWidth%2CMath.round(window.innerWidth*.5625)%5D%2Cprotocols%3A%5B2%2C3%2C5%2C6%2C7%2C8%5D%7D%7D%3B%7Dwindow.pbjs.que.push(function()%7Bwindow.pbjs.addAdUnits(pbUnit)%3B%7D)%3B%7Dthis.pbSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Trustx%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Trustx%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTrustx%3Afunction%20_setupTrustx(config%2Csizes)%7Bvar%20_this2%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bplacements.forEach(function(placement)%7B_this2.bids.push(%7Bbidder%3A'trustx'%2Cparams%3A%7Buid%3Aplacement.uid%2Ckeywords%3A%7Btopic%3AtopicArr.filter(Boolean)%2Cbrandsafety%3A_this2._getBrandSafety()%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Kargo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Kargo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupKargo%3Afunction%20_setupKargo(config%2Csizes)%7Bvar%20_this3%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7Bplacement.ids.forEach(function(id)%7B_this3.bids.push(%7Bbidder%3A'kargo'%2Cparams%3A%7BplacementId%3Aid%7D%7D)%3B%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Aol%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupAol%3Afunction%20_setupAol(config%2CadUnitPath%2Csizes)%7Bvar%20_this4%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this4.bids.push(%7Bbidder%3A'aol'%2Cparams%3A%7Bplacement%3Aplacement.id%2Cnetwork%3Aconfig.network%2Calias%3AadUnitPath%2Cserver%3Aconfig.server%2CsizeId%3Aplacement.sizeId%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OneMobile%20by%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20OneMobile%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupOneMobile%3Afunction%20_setupOneMobile(config%2Csizes)%7Bvar%20_this5%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this5.bids.push(%7Bbidder%3A'onemobile'%2Cparams%3A%7Bdcn%3Aconfig.dcn%2Cpos%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20AppNexus%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20AppNexus%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupAppNexus%3Afunction%20_setupAppNexus(config%2Csizes%2Csection%2Cssts%2CadCount)%7Bvar%20_this6%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bvar%20placementId%3Dvoid%200%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3B_this6.bids.push(%7Bbidder%3A'appnexus'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7BadCount%3AadCount%2Cbrandsafety%3A_this6._getBrandSafety()%2Cposition%3A_this6.placement%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Criteo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Criteo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupCriteo%3Afunction%20_setupCriteo(config)%7Bthis.bids.push(%7Bbidder%3A'criteo'%2Cparams%3A%7BnetworkId%3Aconfig.networkId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20IndexExchange%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20IndexExchange%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20adUnitSizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupIx%3Afunction%20_setupIx(config%2CadUnitPath%2CadUnitSizes)%7Bvar%20_this7%3Dthis%3Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%3Bvar%20placement%3Dvoid%200%3Bplacement%3Dconfig.placements%5Bkey%5D%3Bif(placement)%7BadUnitSizes.forEach(function(size)%7B_this7.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7BsiteId%3Aplacement.siteid%2Csize%3Asize%7D%7D)%3B%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OpenX%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20OpenX%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenX%3Afunction%20_setupOpenX(config%2Csizes%2Csection)%7Bvar%20_this8%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bvar%20placementId%3Dvoid%200%3Bplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3Bif(placementId)%7B_this8.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3AplacementId%2CdelDomain%3Aconfig.domain%7D%7D)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Pubmatic%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Pubmatic%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adSizeStr%20%20String%20value%20for%20ad%20size.%20i.e.%20%22300x250%22%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20%20%20Whether%20we%20are%20above%20or%20below%20the%20fold%20('abf'%2F'btf')%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmatic%3Afunction%20_setupPubmatic(config%2CadSizeStr%2Clocation)%7Bvar%20slot%3Dlocation.toUpperCase()%2B'%40'%2BadSizeStr%2CrosSlot%3D'ROS%40'%2BadSizeStr%2CadSlot%3Dconfig.placements.indexOf(slot)%3E-1%3Fslot%3Aconfig.placements.indexOf(rosSlot)%3E-1%3FrosSlot%3Anull%3Bif(adSlot)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.account%2CadSlot%3AadSlot%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Rubicon%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20Rubicon%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20Ad%20location%20on%20page.%20Options%20are%20'btf'%20or%20'aft'.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubicon%3Afunction%20_setupRubicon(config%2Csection%2Cssts%2Clocation%2CadCount)%7Bvar%20getNested%3Dthis._getNested%2CzoneId%3DgetNested(config%2C'zones'%2Clocation%2Csection)%7C%7CgetNested(config%2C'zones'%2C'catchall')%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dif(zoneId)%7Bthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.account%2CsiteId%3Aconfig.siteId%2CzoneId%3AzoneId%2Cinventory%3A%7Badcount%3AadCount%2Cbrandsafety%3Athis._getBrandSafety()%2Cdomain%3AgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%2Cposition%3Alocation%3D%3D%3D'atf'%3Flocation%3A''%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Sonobi%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20Sonobi%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobi%3Afunction%20_setupSonobi(config%2CadUnitPath)%7Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%2Cplacement%3Dconfig.placements%26%26(config.placements%5Bkey%5D%7C%7Cconfig.placements%5B'*'%5D)%3Bif(placement%26%26placement.TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3Aplacement.TagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20TripleLift%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20TripleLift%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTripleLift%3Afunction%20_setupTripleLift(config%2Csizes)%7Bvar%20_this9%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this9.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Yieldmo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Yieldmo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%2F_setupYieldmo%3Afunction%20_setupYieldmo(config)%7Bthis.bids.push(%7Bbidder%3A'yieldmo'%2Cparams%3A%7BplacementId%3Aconfig.placementId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20targeting%20for%20the%20ad%20slot%20then%20triggers%20a%20call%20to%20dfp%20to%20fetch%20and%20render%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bvar%20superRefresh%3Dthis._getNested(window%2C'ga_data'%2C'behaviors'%2C'PartnerSlot'%2C'refresh')%3Bif((this.displayed%7C%7Cthis.video)%26%26!this._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))%7Bthis._refreshBids(superRefresh)%3B%7Delse%20if(typeof%20superRefresh%3D%3D%3D'function')%7BsuperRefresh.call(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20bidding%20targeting%20on%20an%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BPromise%7D%20Promise%20to%20be%20resolved%20when%20bidding%20is%20complete%0A%20%20%20%20%20%20%20%20%20*%2F_refreshBids%3Afunction%20_refreshBids(superRefresh)%7Bvar%20_this10%3Dthis%3Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%2CapsSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps')%7C%7C%7B%7D%2Cpromises%3D%5B%5D%3Bthis.bidSet%3Dfalse%3Bif(this.gptSlot)%7Bthis._unsetTargeting()%3B%7Dif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bpromises.push(this.pbSetup.promise)%3Bthis.pbSetup.promise.then(function()%7Breturn%20_this10._refreshPrebid()%3B%7D)%3B%7Dif((apsSiteConfig.enabled%7C%7Cthis.apsDebug)%26%26this.aps)%7Bpromises.push(this.apsSetup.promise)%3Bthis.apsSetup.promise.then(function()%7Breturn%20_this10._refreshAPS()%3B%7D)%3B%7Dif(typeof%20superRefresh%3D%3D%3D'function')%7Bif(promises.length)%7BPromise.all(promises).then(function()%7BsuperRefresh.call(_this10)%3B%7D)%3B%7Delse%7BsuperRefresh.call(this)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Unset%203rd%20party%20targeting%0A%20%20%20%20%20%20%20%20%20*%2F_unsetTargeting%3Afunction%20_unsetTargeting()%7Bvar%20_this11%3Dthis%3Bthis._log('Clearing%203rd%20party%20targeting')%3B%5B'hb_ap'%2C'hb_bidder'%2C'hb_size'%2C'hb_source'%2C'hb_format'%2C'hb_ap_id'%2C'hb_adid'%2C'amznbid'%2C'amznp'%2C'amzniid'%2C'amznsz'%5D.forEach(function(key)%7B_this11.gptSlot.clearTargeting(key)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20our%20APS%20bids%0A%20%20%20%20%20%20%20%20%20*%2F_refreshAPS%3Afunction%20_refreshAPS()%7Bvar%20_this12%3Dthis%3Bthis._log('Queuing%20APS')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.apsAdUnits%3Dwindow.ga_data.ads.apsAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.apsAdUnits.push(_this12)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.apsAdUnits.push(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Makes%20request%20to%20prebid.js%20to%20refresh%20the%20bids%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_refreshPrebid%3Afunction%20_refreshPrebid()%7Bvar%20_this13%3Dthis%3Bthis._log('Queuing%20Prebid')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.pbAdUnits%3Dwindow.ga_data.ads.pbAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.pbAdUnits.push(_this13)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.pbAdUnits.push(this)%3B%7D%7D%2CprebidBidsReturned%3Afunction%20prebidBidsReturned(allBids)%7Bvar%20slotBids%3D(allBids%5Bthis.slotId%5D%7C%7C%7Bbids%3A%5B%5D%7D).bids%3Bif(slotBids.length)%7Bvar%20winningBid%3Dthis._getWinningBid(slotBids)%3Bthis._setPrebidTargeting(winningBid)%3B%7D%7D%2CprebidTimeoutReturned%3Afunction%20prebidTimeoutReturned(winningBid)%7Bif(!(winningBid%26%26winningBid.adserverTargeting))%7Bif(typeof%20window.pbjs.getAdserverTargetingForAdUnitCode!%3D%3D'function')return%3Bvar%20bidTargeting%3Dwindow.pbjs.getAdserverTargetingForAdUnitCode(this.slotId)%3BwinningBid%3D%7BadserverTargeting%3AbidTargeting%2CbidderCode%3AbidTargeting.hb_bidder%7D%3B%7Dthis._setPrebidTargeting(winningBid)%3B%7D%2C_setPrebidTargeting%3Afunction%20_setPrebidTargeting(winningBid)%7Bvar%20_this14%3Dthis%3Bif(!winningBid%7C%7C!winningBid.bidderCode%7C%7C!winningBid.adserverTargeting%7C%7C!winningBid.adserverTargeting.hb_ap_id)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7B_this14._setTargeting(_this14.gptSlot%2CwinningBid.adserverTargeting)%3B_this14._log('Prebid%20targeting%20set')%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20an%20array%20of%20size%20arrays%20and%20returns%20the%20largest%20ad%20size%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20%20%20%20%20%20%20%20%20Array%20of%20ad%20size%20arrays%20to%20reduce%20to%20largest%20value.%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20acceptedSizes%20Array%20of%20biddable%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Largest%20size%20array.%20i.e.%20%5B300%2C600%5D%0A%20%20%20%20%20%20%20%20%20*%2F_getMaxSize%3Afunction%20_getMaxSize(sizes%2CacceptedSizes)%7Bvar%20result%3D%5B%5D%2ClargestSize%3D0%3Bsizes.forEach(function(size)%7Bvar%20total%3Dsize%5B0%5D*size%5B1%5D%3Bif(acceptedSizes%5Bsize%5B0%5D%2B'x'%2Bsize%5B1%5D%5D%26%26total%3ElargestSize)%7BlargestSize%3Dtotal%3Bresult%3Dsize%3B%7D%7D)%3Breturn%20result%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sorts%20an%20array%20of%20size%20arrays%20in%20order%20from%20largest%20to%20smallest%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20Array%20of%20ad%20size%20arrays%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20Sorted%20array%20of%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%2F_sortSizes%3Afunction%20_sortSizes(sizes)%7Bif(sizes.length%3D%3D%3D1)return%20sizes%3Bsizes.sort(function(a%2Cb)%7Breturn%20b%5B0%5D*b%5B1%5D-a%5B0%5D*a%5B1%5D%3B%7D)%3Breturn%20sizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20a%20list%20of%20placements%20and%20finds%20the%20largest%20available%20placement%20based%0A%20%20%20%20%20%20%20%20%20*%20on%20the%20available%20sizes%20passed%20through.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20placements%20Placement%20object%2C%20keyed%20by%20size%20string.%20i.e.%20%22300x250%22%20%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20sizes%20%20%20%20%20%20Array%20of%20an%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BBoolean%7D%20multiSize%20%20Set%20true%20to%20return%20all%20matched%20sizes%2C%20otherwise%20largests%20gets%20returned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20Returns%20array%20of%20matched%20placement%20objects%0A%20%20%20%20%20%20%20%20%20*%2F_getPlacementSizes%3Afunction%20_getPlacementSizes(placements%2Csizes%2CmultiSize)%7Bvar%20matches%3D%5B%5D%3Bif(!placements)return%20matches%3Bsizes%3Dthis._sortSizes(sizes)%3Bsizes.forEach(function(size)%7Bvar%20sizeStr%3Dsize%5B0%5D%2B'x'%2Bsize%5B1%5D%2Cplacement%3Dplacements%5BsizeStr%5D%3Bif(placement)%7Bmatches.push(placement)%3B%7D%7D)%3Breturn%20multiSize%3Fmatches%3Amatches.slice(0%2C1)%3B%7D%2C_getBrandSafety%3Afunction%20_getBrandSafety()%7Bif(!this.brandSafety)%7Bvar%20simpleTarget%3Dga_data.route.simpleTarget%7C%7C%5B%5D%3Bvar%20simpleExclusion%3Dga_data.route.simpleExclusion%7C%7C%5B%5D%3Bthis.brandSafety%3DsimpleTarget.concat(simpleExclusion)%3Bif(!this.brandSafety.length)%7Bthis.brandSafety.push('')%3B%7D%7Dreturn%20this.brandSafety%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerBid%3DPartnerBid%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-bid.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-bid.html.js%0A",
            "resourceBytes": 28154,
            "encodedBytes": 0,
            "unusedBytes": 20742,
            "children": [
              {
                "name": "gallium/behaviors/partner-bid.html_script_0.js",
                "resourceBytes": 21762,
                "unusedBytes": 20742
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 6392
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-banner%3E%60%20adds%20a%20Banner%20Ad%20to%20your%20page.%20Mobile%20only%20ad%20unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-banner'%2CdesignId%3A'A1'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2Cmobile%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cbottom%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20preset%20targeting%20*%2FslotTargeting%3A%7Btype%3AObject%2Cvalue%3A%7B%7D%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A50%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B320%2C50%5D%2C%5B300%2C250%5D%5D%3B%7D%2C%2F**%20NSF%20Targeting%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B'paramount'%2C'paramount-5_6'%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Register%20as%20a%20banner%20on%20the%20window%0Awindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.banners%3Dwindow.ga_data.ads.banners%7C%7C%5B%5D%3Bwindow.ga_data.ads.banners.push(this)%3B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%20and%20position%20relative%20to%20other%20banners%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7B%2F%2F%20Set%20top%20vs.%20bottom%20based%20on%20relative%20position%20in%20DOM%0Aif(window.ga_data.ads.banners.indexOf(this)!%3D%3D0)%7Bthis.bottom%3Dtrue%3B%7D%2F%2F%20Set%20section_front%20vs.%20banner%20based%20on%20content%20type%0Avar%20sectionFront%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3B%2F%2F%20Add%20gallery%20designation%0Avar%20gallery%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'basePageType')%3D%3D%3D'vertical%20asset%20gallery'%3F'gallery_'%3A''%3B%2F%2F%20Set%20placement%20using%20top%2Fbottom%20and%20section%2Fbanner%20values%0Avar%20prefix%3DsectionFront%3F'mobileweb-section_front'%3A'mobileweb-'%2Bgallery%2B'banner'%3Bvar%20suffix%3Dthis.bottom%3F'bottom'%3A'top'%3Breturn%20prefix%2B'_'%2Bsuffix%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-banner%2Fpartner-banner.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-banner%2Fpartner-banner.html.js%0A",
            "resourceBytes": 2494,
            "encodedBytes": 0,
            "unusedBytes": 1053,
            "children": [
              {
                "name": "elements/partner/partner-banner/partner-banner.html_script_0.js",
                "resourceBytes": 1964,
                "unusedBytes": 1053
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 530
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'story-timestamp'%2CdesignId%3A'S3'%2Cproperties%3A%7B%2F*%20Optional%2C%20display%20shorter%20output%20(typically%20used%20for%20fronts)%20*%2Ftruncated%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F*%20Required%2C%20will%20display%20blank%20if%20not%20provided.%20Can%20be%20RFC2822%2C%20ISO%208601%2C%20or%20a%20unix%20timestamp%20*%2FpublishDate%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20Optional%2C%20Can%20be%20RFC2822%2C%20ISO%208601%2C%20or%20a%20unix%20timestamp%20*%2FupdateDate%3A%7Btype%3AString%2Cvalue%3A''%7D%2CarticleTop%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Cdisplay%3A%7Btype%3AString%2Ccomputed%3A'_handleDate(publishDate%2C%20updateDate%2C%20truncated%2C%20articleTop)'%2Cobserver%3A'_updateText'%7D%7D%2C_updateText%3Afunction%20_updateText(display)%7Bthis.innerHTML%3Ddisplay%3B%7D%2C_filterDateString%3Afunction%20_filterDateString(timestamp)%7Bif(typeof%20timestamp%3D%3D%3D'string')%7B%2F%2F%20if%20string%20is%20all%20numbers%2C%20convert%20to%20number%0Aif(timestamp.match(%2F%5E%5B0-9%5D*%24%2Fg))%7Btimestamp%3DparseInt(timestamp)%3B%7Delse%7B%2F%2F%20remove%20the%20AM%20%7C%7C%20PM%2C%20causes%20error%20when%20converting%20hours%20in%2024h%20format%20(ex%3A%2011%2F9%2F2018%2020%3A11%3A08%20PM)%3B%0A%2F%2F%20without%20removing%20%22AM%22%20or%20%22PM%22%20new%20Date(timestamp)%20returns%20Invalid%20Date%0Atimestamp%3Dtimestamp.replace(%2FAM%7CPM%2Fi%2C'')%3B%7D%7Dreturn%20timestamp%3B%7D%2C_handleDate%3Afunction%20_handleDate(publishDate%2CupdateDate%2Ctruncated%2CarticleTop)%7Bif(!publishDate)return%3BpublishDate%3Dthis._filterDateString(publishDate)%3Bvar%20publishTime%3Dnew%20Date(publishDate).getTime()%2CdeltaHours%3DMath.floor((Date.now()-publishTime)%2F(1000*60*60))%3B%2F%2F%20exit%20if%20not%20a%20valid%20date.%20ex%3A%20publish-date%3D%22asdlfkj%22%0Aif(isNaN(publishTime))return%3Bif(truncated)%7Breturn%20deltaHours%3C24%3Fthis.formatRelativeTime(publishTime)%3A''%3B%2F%2F%20only%20return%20updateDate%20if%20different%20from%20publishDate%0A%7Delse%20if(updateDate%26%26updateDate!%3D%3DpublishDate)%7BupdateDate%3Dthis._filterDateString(updateDate)%3Bvar%20updateTime%3Dnew%20Date(updateDate).getTime()%2CupdateDisplay%3DdeltaHours%3C24%3Fthis.formatRelativeTime(updateTime)%3Athis.formatDateString(updateDate)%3Bif(articleTop)%7Breturn'Updated%20'%2BupdateDisplay%3B%7Delse%7Breturn'Originally%20Published%20'%2Bthis.formatDateString(publishDate)%2B'%20%3Cdiv%20class%3D%22updated%22%3EUpdated%20'%2BupdateDisplay%2B'%3C%2Fdiv%3E'%3B%7D%7Delse%7Breturn%20this.formatDateString(publishDate)%3B%7D%7D%2C%2F*%20takes%20a%20date%20string%2C%20Can%20be%20RFC2822%2C%20ISO%208601%2C%20or%20a%20unix%20timestamp%20*%2FformatDateString%3Afunction%20formatDateString(str)%7Bvar%20date%3Dnew%20Date(str)%2CdateStr%3DString(date)%2Cam_pm%3Ddate.getHours()%3C12%3F'a.m.'%3A'p.m.'%2Chours%3Ddate.getHours()%3D%3D%3D0%3F12%3Adate.getHours()%3C13%3Fdate.getHours()%3Adate.getHours()-12%2Cminutes%3Ddate.getMinutes()%3C10%3F'0'%2Bdate.getMinutes()%3Adate.getMinutes()%2Cmonths%3D%5B'Jan.'%2C'Feb.'%2C'Mar.'%2C'Apr.'%2C'May'%2C'June'%2C'July'%2C'Aug.'%2C'Sep.'%2C'Oct.'%2C'Nov.'%2C'Dec.'%5D%2Ctime%3Dhours%2B'%3A'%2Bminutes%2B'%20'%2Bam_pm%2CzoneArray%3DdateStr.substring(dateStr.indexOf('(')%2B1%2CdateStr.indexOf(')')).split('%20')%2Czone%3DzoneArray%5B0%5D%3B%2F%2F%20if%20not%20short%20timezone%20format%20like%20%5BEDT%5D%2C%20then%20loop%20thru%20array.%20Ex%3A%20%5BEastern%2C%20Daylight%2C%20Time%5D%20%3D%3E%20'EDT'%20%0Aif(zoneArray.length%3E1)%7Bzone%3D''%3BzoneArray.forEach(function(word)%7Bzone%2B%3Dword%5B0%5D%3B%7D)%3B%7D%2F%2F%20format%20%3D%3E%208%3A14%20p.m.%20EDT%20Nov.%207%2C%202016%0A%2F%2F%20zone%20%3D%3E%20Convert%20CUT%20(Coordinated%20Universal%20Time)%20to%20more%20standard%20abbr%20UTC%20if%20applicable%0Areturn%20time%2B'%20'%2Bzone.replace('CUT'%2C'UTC')%2B'%20'%2Bmonths%5Bdate.getMonth()%5D%2B'%20'%2Bdate.getDate()%2B'%2C%20'%2Bdate.getFullYear()%3B%7D%2C%2F*%20time%20is%20the%20date%20as%20milliseconds%20(use%20getTime())%20*%2FformatRelativeTime%3Afunction%20formatRelativeTime(time)%7Bvar%20now%3DDate.now()%3Bvar%20hours%3DMath.floor((now-time)%2F(1000*60*60))%3Bif(hours%3D%3D%3D0)%7Bvar%20minutes%3DMath.floor((now-time)%2F(1000*60))%3Bif(minutes%3C1)%7Breturn'Less%20than%20a%20minute%20ago'%3B%7Delse%20if(minutes%3D%3D%3D1)%7Breturn'1%20minute%20ago'%3B%7Delse%7Breturn%20minutes.toString()%2B'%20minutes%20ago'%3B%7D%7Delse%20if(hours%3D%3D%3D1)%7Breturn'1%20hour%20ago'%3B%7Delse%7B%2F%2F%20here%20is%20guaranteed%20to%20be%2023%20or%20less%20%0Areturn%20hours.toString()%2B'%20hours%20ago'%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fstory%2Fstory-timestamp%2Fstory-timestamp.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fstory%2Fstory-timestamp%2Fstory-timestamp.html.js%0A",
            "resourceBytes": 3757,
            "encodedBytes": 0,
            "unusedBytes": 2745,
            "children": [
              {
                "name": "elements/story/story-timestamp/story-timestamp.html_script_0.js",
                "resourceBytes": 3498,
                "unusedBytes": 2745
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 259
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.ImageResize%20*%2Fwindow.ga_data.behaviors.ImageResize%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Utility%20to%20pass%20thumbnail%20into%20image%20resizer%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20imageUrl%20full%20uri%20of%20image%20to%20resize%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20width%20target%20width%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20height%20target%20height%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20additionalParams%20query%20params%20passed%20to%20image%20resizer%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BBoolean%7D%20external%20ignore%20additionalParams%20to%20allow%20query%20params%20in%20imageUrl%0A%20%20%20%20%20%20%20%20%20*%2F_getThumbnail%3Afunction%20_getThumbnail(imageUrl%2Cwidth)%7Bvar%20height%3Darguments.length%3E2%26%26arguments%5B2%5D!%3D%3Dundefined%3Farguments%5B2%5D%3A''%3Bvar%20additionalParams%3Darguments.length%3E3%26%26arguments%5B3%5D!%3D%3Dundefined%3Farguments%5B3%5D%3A''%3Bif(!imageUrl)%7Breturn''%3B%7Dif(additionalParams%3D%3D%3D'external')return%20ga_data.site.hosts.gannettCDN%2B'%2F-ip-%2F'%2Bwidth%2B'x'%2Bheight%2B'%2F'%2BimageUrl%3Bvar%20resizeParams%3D''%3Bif(additionalParams%26%26additionalParams.indexOf('crop%3D')%3E-1%7C%7C!height)%7BresizeParams%3D'width%3D'%2Bwidth%3B%7Delse%7BresizeParams%3D'width%3D'%2Bwidth%2B'%26height%3D'%2Bheight%3B%7Dif(additionalParams%26%26additionalParams!%3D%3D'')resizeParams%3DresizeParams%2B('%26'%2BadditionalParams)%3Bif(imageUrl.indexOf('http%3A%2F%2Fvideos.usatoday.net')%3D%3D%3D0)return%20ga_data.site.hosts.gannettCDN%2B'%2F-ip-%2F'%2Bwidth%2B'x'%2Bheight%2B'%2F'%2BimageUrl%2B(imageUrl.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BresizeParams%3Bif(imageUrl.indexOf('http%3A%2F%2Fwww.gannett-cdn.com')%3D%3D%3D0)imageUrl%3DimageUrl.replace('http'%2C'https')%3Bif(imageUrl.indexOf('https%3A%2F%2Fwww.gannett-cdn.com')%3D%3D%3D0%7C%7CimageUrl.indexOf('https%3A%2F%2Fassets.gannettdigital.com')%3D%3D%3D0)%7Breturn''%2BimageUrl%2B(imageUrl.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BresizeParams%3B%7Delse%7Breturn%20ga_data.site.hosts.gannettCDN%2B'%2F-ip-%2F%2F'%2BimageUrl%2B(imageUrl.indexOf('%3F')%3E-1%3F'%26'%3A'%3F')%2BresizeParams%3B%7D%7D%2C_getCropFromArray%3Afunction%20_getCropFromArray(cropsArr%2CcropName)%7Bfor(var%20i%3D0%3Bi%3CcropsArr.length%3Bi%2B%2B)%7Bif(cropsArr%5Bi%5D.name%3D%3D%3DcropName)%7Breturn%20cropsArr%5Bi%5D.path%3B%7D%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fimage-resize.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fimage-resize.html.js%0A",
            "resourceBytes": 2111,
            "encodedBytes": 0,
            "unusedBytes": 1294,
            "children": [
              {
                "name": "gallium/behaviors/image-resize.html_script_0.js",
                "resourceBytes": 1486,
                "unusedBytes": 1294
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 625
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'ui-button'%2CdesignId%3A'UI2'%2Cproperties%3A%7Burl%3A%7Btype%3AString%7D%2Cicon%3A%7Btype%3AString%2Cobserver%3A'_updateIcon'%7D%2Cdisabled%3A%7Btype%3ABoolean%2Cobserver%3A'_updateDisabled'%7D%2Ctarget%3A%7Btype%3AString%7D%7D%2Cready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.%24.textArea.hidden%3D!this.%24.textSlot.assignedNodes().length%3Bthis.%24.container.style.backgroundColor%3Dga_data.site.colors.siteColor%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bvar%20observer%3Dnew%20MutationObserver(function(mutations)%7Bmutations.forEach(function(mutation)%7Bif(mutation.target)%7Bif(mutation.target.nodeType%3D%3DNode.TEXT_NODE%26%26mutation.type%3D%3D'characterData')%7B_this.%24.textArea.hidden%3D!mutation.target.data.length%3B%7D%7D%7D)%3B%7D)%3Bobserver.observe(_this%2C%7BcharacterData%3Atrue%2Csubtree%3Atrue%7D)%3B_this.%24.textSlot.addEventListener('slotchange'%2Cfunction()%7Breturn%20_this._processLightChildren()%3B%7D)%3B_this._processLightChildren()%3B%7D)%3B%7D%2C_processLightChildren%3Afunction%20_processLightChildren()%7Bvar%20childNodes%3Dthis.%24.textSlot.assignedNodes()%3Bif(childNodes)%7Bif(childNodes.length)%7Bthis.%24.textArea.hidden%3D!childNodes%5B0%5D.data.length%3B%7D%7D%7D%2C_updateDisabled%3Afunction%20_updateDisabled(disabled)%7Bthis.%24.container.classList.toggle('disabled'%2Cdisabled)%3B%7D%2C_updateIcon%3Afunction%20_updateIcon(icon)%7Bif(icon)%7Bthis.%24.iconArea.hidden%3Dfalse%3Bthis.%24.iconDisplay.setAttribute('icon-name'%2Cicon)%3Bthis.%24.textArea.classList.toggle('text-inline'%2C!!this.%24.textSlot.assignedNodes().length)%3Bthis.%24.iconArea.classList.toggle('icon-inline'%2C!!this.%24.textSlot.assignedNodes().length)%3B%7Delse%7Bthis.%24.iconArea.hidden%3Dtrue%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fui%2Fui-button%2Fui-button.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fui%2Fui-button%2Fui-button.html.js%0A",
            "resourceBytes": 1722,
            "encodedBytes": 0,
            "unusedBytes": 1246,
            "children": [
              {
                "name": "elements/ui/ui-button/ui-button.html_script_0.js",
                "resourceBytes": 1493,
                "unusedBytes": 1246
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 229
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'media-badge'%2Cproperties%3A%7BmediaType%3A%7Btype%3AString%2Cobserver%3A'_setIcon'%7D%2Caction%3A%7Btype%3AString%2Cvalue%3A''%2Cobserver%3A'_setAction'%7D%2Cmeta%3A%7Btype%3AString%2Cvalue%3A''%2Cobserver%3A'showPipe'%7D%2Curl%3AString%7D%2C_setIcon%3Afunction%20_setIcon(mediatype)%7Bswitch(mediatype)%7Bcase'video'%3Athis.%24.mainButton.icon%3D'icon-play_24'%3Bbreak%3Bcase'gallery'%3Athis.%24.mainButton.icon%3D'icon-camera_80'%3Bbreak%3Bcase'interactive'%3Athis.%24.mainButton.icon%3D'icon-interactive_24'%3Bbreak%3Bcase'promo'%3Athis.%24.mainButton.icon%3D'icon-camera_80'%3Bbreak%3Bdefault%3Athis.%24.mainButton.hidden%3Dtrue%3Bbreak%3B%7D%7D%2C_setAction%3Afunction%20_setAction(action)%7Bvar%20actionArray%3Daction.split('%20%7C%20')%3Bvar%20playTime%3DactionArray%5B1%5D%26%26actionArray%5B1%5D.length%3FactionArray%5B1%5D.trim()%3A''%3Bif(playTime%26%26playTime.length%3E6%26%26playTime.indexOf('00%3A0')%3D%3D%3D0)%7BplayTime%3DplayTime.substring(4)%3Bthis.action%3DactionArray%5B0%5D%2B'%20%20%7C%20%20'%2BplayTime%3B%7Delse%20if(playTime%26%26playTime.length%3D%3D%3D5%26%26playTime.charAt(0)%3D%3D%3D'0')%7BplayTime%3DplayTime.substring(1)%3Bthis.action%3DactionArray%5B0%5D%2B'%20%20%7C%20%20'%2BplayTime%3B%7D%7D%2CshowPipe%3Afunction%20showPipe(meta)%7Bthis.%24.pipe.hidden%3D!meta.length%3Bthis.%24.pipe.classList.toggle('pipe'%2C!!meta.length)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fmedia%2Fmedia-badge%2Fmedia-badge.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fmedia%2Fmedia-badge%2Fmedia-badge.html.js%0A",
            "resourceBytes": 1336,
            "encodedBytes": 0,
            "unusedBytes": 864,
            "children": [
              {
                "name": "elements/media/media-badge/media-badge.html_script_0.js",
                "resourceBytes": 1093,
                "unusedBytes": 864
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 243
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'promo-premium-indicator'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%5D%2Cproperties%3A%7BlabelName%3A%7Btype%3AString%2Cvalue%3A'For%20Subscribers'%7D%2CisPremium%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Cicon%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Clabel%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Chybrid%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%2CframeworkReady%3Afunction%20frameworkReady()%7Bif(this.isPremium)%7Bvar%20_ref%3Dga_data.utils.getNested(ga_data%2C'site'%2C'consumerMarketing')%7C%7C%7B%7D%2CpremiumLabel%3D_ref.premiumLabel%2CisPremiumLabelEnabled%3D_ref.isPremiumLabelEnabled%2CisPremiumIconEnabled%3D_ref.isPremiumIconEnabled%3Bvar%20isSubscriberLabelVariant%3Dga_data.intents.indexOf('variant-group%3Aso_indicator')%3E-1%3Bvar%20isStarIconVariant%3Dga_data.intents.indexOf('variant-group%3Aso_star')%3E-1%3Bif(this.label)%7Bthis.%24.labelContainer.hidden%3D!(isPremiumLabelEnabled%7C%7CisSubscriberLabelVariant)%3B%7Delse%20if(this.icon)%7Bthis.%24.iconContainer.hidden%3D!(isPremiumIconEnabled%7C%7CisStarIconVariant)%3B%7Delse%20if(this.hybrid)%7Bthis.%24.hybridContainer.hidden%3D!(isPremiumLabelEnabled%7C%7CisPremiumIconEnabled)%3B%7Dif(premiumLabel)this.labelName%3DpremiumLabel%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpromo%2Fpromo-premium-indicator%2Fpromo-premium-indicator.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpromo%2Fpromo-premium-indicator%2Fpromo-premium-indicator.html.js%0A",
            "resourceBytes": 1334,
            "encodedBytes": 0,
            "unusedBytes": 737,
            "children": [
              {
                "name": "elements/promo/promo-premium-indicator/promo-premium-indicator.html_script_0.js",
                "resourceBytes": 1043,
                "unusedBytes": 737
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 291
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_slicedToArray%3Dfunction()%7Bfunction%20sliceIterator(arr%2Ci)%7Bvar%20_arr%3D%5B%5D%3Bvar%20_n%3Dtrue%3Bvar%20_d%3Dfalse%3Bvar%20_e%3Dundefined%3Btry%7Bfor(var%20_i%3Darr%5BSymbol.iterator%5D()%2C_s%3B!(_n%3D(_s%3D_i.next()).done)%3B_n%3Dtrue)%7B_arr.push(_s.value)%3Bif(i%26%26_arr.length%3D%3D%3Di)break%3B%7D%7Dcatch(err)%7B_d%3Dtrue%3B_e%3Derr%3B%7Dfinally%7Btry%7Bif(!_n%26%26_i%5B%22return%22%5D)_i%5B%22return%22%5D()%3B%7Dfinally%7Bif(_d)throw%20_e%3B%7D%7Dreturn%20_arr%3B%7Dreturn%20function(arr%2Ci)%7Bif(Array.isArray(arr))%7Breturn%20arr%3B%7Delse%20if(Symbol.iterator%20in%20Object(arr))%7Breturn%20sliceIterator(arr%2Ci)%3B%7Delse%7Bthrow%20new%20TypeError(%22Invalid%20attempt%20to%20destructure%20non-iterable%20instance%22)%3B%7D%7D%3B%7D()%3BPolymer(%7Bis%3A'promo-story-thumb-small'%2CdesignId%3A'P1'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.PromoItem%2Cwindow.ga_data.behaviors.ImageResize%5D%2Cproperties%3A%7B%2F**%20Headline%20*%2Ftitle%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*Deprecated*%20Please%20use%20%60thumbnailSet%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Full%2C%20raw%20URI%20of%20thumbnail%20image%20(will%20be%20resized)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FthumbnailUrl%3A%7Btype%3AString%2Cobserver%3A'_thumbnailChange'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Works%20like%20%60srcset%60%20on%20an%20image%20tag%2C%20this%20is%20a%20comma%20separated%20list%20of%20image%20crops%20associated%20with%20this%20asset.%20Crops%20should%20follow%20the%20format%20of%20%60w%3Ah%20url%60%2C%20so%20%6016%3A9%20https%3A%2F%2F...%2Ffile.jpg%2C%204%3A3%20...%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Currently%20supports%20%601%3A1%60%20and%20%6016%3A9%60%20crops%2C%20others%20will%20be%20ignored.%20Insufficent%20crops%20will%20result%20in%20poorly%20cropped%20images%20at%20various%20screen%20sizes.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FthumbnailSet%3A%7Btype%3AString%2Cobserver%3A'_thumbnailSetChange'%7D%2C%2F**%20Where%20this%20unit%20should%20link%20to%20expected%20to%20be%20a%20URI%20*%2Furl%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20should%20be%20used%20to%20put%20in%20timestamp%20using%20story-timestamp%20*%2FdatePublished%3A%7Btype%3AString%2Cobserver%3A'_dateChanged'%2Cvalue%3A''%7D%2C%2F*%20will%20override%20datePublished%20if%20available%20*%2FdateUpdated%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20the%20most%20granular%20ssts%20or%20other%20*%2Flabel%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20type%20of%20asset%20text%2C%20gallery%20or%20video%20*%2Ftype%3A%7Btype%3AString%7D%2C%2F*%20will%20only%20be%20provided%20for%20type%20video%20*%2Flength%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F*%20allows%20to%20choose%20what%20to%20show%20*%2Finfo%3A%7Btype%3AString%2Ccomputed%3A'_getInfo(type%2C%20label%2C%20length)'%7D%2CadServed%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2Cbranded%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cobserver%3A'_brandedChanged'%7D%2CbrandLanguage%3A%7Btype%3AString%2Cvalue%3A'Story%20From'%7D%2Csponsored%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cobserver%3A'_sponsoredChanged'%7D%2Cadvertisement%3A%7Btype%3ABoolean%2Cvalue%3Afalse%2Cobserver%3A'_advertisementChange'%7D%2CbrandName%3A%7Btype%3AString%2Cvalue%3A''%7D%2CbrandLogo%3A%7Btype%3AString%2Cvalue%3A''%7D%2Cclass%3A%7Btype%3AString%2Cobserver%3A'_classChanged'%7D%2CpremiumContent%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%2CPROMO_STORY_THUMB_SMALL_QUALITY%3A30%2Cready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.url%3Dthis._preserveLocalURL(this.url)%3Bthis.%24.textWrapper.classList.toggle('external-title'%2Cthis._checkIsUrlExternal(this.url))%3Bthis._dateChanged()%3B%2F%2F%20video%20doesn't%20currently%20have%20a%20thumbnailSet%0Aif(this.type!%3D%3D'video'%26%26!this.thumbnailUrl%26%26!(this.thumbnailSet%26%26this.thumbnailSet.length))this._hideThumbnail()%3Bvar%20mediaNarrow%3Dwindow.matchMedia('(min-width%3A%20480px)')%3Bvar%20narrowChangeHandler%3Dfunction%20narrowChangeHandler(mql)%7B_this._sizeClassChangeHandler(mql%26%26mql.matches)%3B%7D%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7BmediaNarrow.addListener(narrowChangeHandler)%3BnarrowChangeHandler(mediaNarrow)%3B%7D)%3B%7D%2Cattached%3Afunction%20attached()%7Bif(!this.dataset.moduleLoadEventFired)%7Bthis._sendLoadEvent()%3B%7D%7D%2C_classChanged%3Afunction%20_classChanged()%7Bthis._sizeClassChangeHandler(window.innerWidth%3E480)%3B%7D%2C_sizeClassChangeHandler%3Afunction%20_sizeClassChangeHandler(isAtLeastMedium)%7Bif(isAtLeastMedium)%7Bif(this.classList.contains('colwidth-narrow'))%7Bthis.%24.mediaBadge.action%3D''%3B%2F%2F%20Don't%20use%2016%3A9%20source%20when%20in%20narrow%20override%0Athis.%24.lgThumbSrc.media%3D'(min-width%3A%201000em)'%3Bthis.%24.mdThumbSrc.media%3D'(min-width%3A%201000em)'%3B%7Delse%7Bthis.%24.mediaBadge.action%3Dthis.info%3Bthis.%24.lgThumbSrc.media%3D'(min-width%3A%201440px)'%3Bthis.%24.mdThumbSrc.media%3D'(min-width%3A%20480px)'%3B%7D%7Delse%7Bthis.%24.mediaBadge.action%3D''%3Bthis.%24.lgThumbSrc.media%3D'(min-width%3A%201440px)'%3Bthis.%24.mdThumbSrc.media%3D'(min-width%3A%20480px)'%3B%7D%7D%2C_getInfo%3Afunction%20_getInfo(type%2Clabel%2Clength)%7Bif((type%3D%3D%3D'text'%7C%7Ctype%3D%3D%3D'')%26%26label!%3D%3D'')%7Bthis.%24.mediaBadge.hidden%3Dtrue%3Breturn%20label%3B%7Delse%20if(type%3D%3D%3D'video'%26%26length!%3D%3D'')%7Bthis.%24.meta.classList.add('media')%3Breturn'Play%20%20%7C%20%20'%2Blength%3B%7Delse%20if(type%3D%3D%3D'gallery')%7Bthis.%24.meta.classList.add('media')%3Breturn'View'%3B%7Dreturn''%3B%7D%2C_brandedChanged%3Afunction%20_brandedChanged(newValue)%7Bthis.%24.textWrapper.classList.toggle('branded'%2CnewValue)%3B%7D%2C_sponsoredChanged%3Afunction%20_sponsoredChanged(newValue)%7Bthis.%24.textWrapper.classList.toggle('sponsored'%2CnewValue)%3Bthis._setBranding()%3B%7D%2C_setBranding%3Afunction%20_setBranding()%7Bvar%20sponsor%3Dthis.brandName%3Bif(this.brandLogo)%7Bsponsor%3D'%3Cimg%20src%3D%22'%2Bthis.brandLogo%2B'%22%20alt%3D%22'%2Bthis.brandName%2B'%22%20class%3D%22sponsored-logo%22%2F%3E'%3B%7Dthis.%24.sponsored.innerHTML%3Dthis.brandLanguage%2B'%20'%2Bsponsor%3B%7D%2C_dateChanged%3Afunction%20_dateChanged()%7Bif(this.datePublished!%3D%3D''%26%26this.%24.storyTimestamp)%7Bif(this.dateUpdated)this.%24.storyTimestamp.setAttribute('update-date'%2Cthis.dateUpdated)%3Bif(this.datePublished)this.%24.storyTimestamp.setAttribute('publish-date'%2Cthis.datePublished)%3B%7D%7D%2C%2F%2F%20because%20safari%20can't%20handle%20_getThumbnail%20this%20completely%20makes%20the%20string%20for%20srcset%20in%20picture%0A_getResponsiveThumbnail%3Afunction%20_getResponsiveThumbnail(imageUrl%2CinitialWidth%2CinitialHeight)%7Bif(imageUrl%26%26imageUrl!%3D%3D'http%3A%2F%2Fwww.gannett-cdn.com')%7Bvar%20additionalParam%3Dthis.adServed%3F'external'%3A'quality%3D'%2Bthis.PROMO_STORY_THUMB_SMALL_QUALITY%3Bif(initialWidth%3D%3D%3DinitialHeight%26%26imageUrl.indexOf('crop%3D')%3D%3D%3D-1)%7BadditionalParam%2B%3D'%26crop%3D1%3A1'%3B%7Dreturn%20this._getThumbnail(imageUrl%2CinitialWidth%2CinitialHeight%2CadditionalParam)%2B'%201x%2C%20'%2Bthis._getThumbnail(imageUrl%2C(parseInt(initialWidth)*2).toString()%2C(parseInt(initialHeight)*2).toString()%2CadditionalParam)%2B'%202x'%3B%7Dreturn''%3B%7D%2C_getNormalThumbnail%3Afunction%20_getNormalThumbnail(imageUrl%2Cwidth%2Cheight)%7Bvar%20additionalParam%3Dthis.adServed%3F'external'%3A'quality%3D'%2Bthis.PROMO_STORY_THUMB_SMALL_QUALITY%3Bif(width%3D%3D%3Dheight%26%26imageUrl.indexOf('crop%3D')%3D%3D%3D-1)%7BadditionalParam%2B%3D'%26crop%3D1%3A1'%3B%7Dreturn%20this._getThumbnail(imageUrl%2Cwidth%2Cheight%2CadditionalParam)%3B%7D%2C_setThumbnailSources%3Afunction%20_setThumbnailSources(path1x1%2Cpath16x9)%7Bthis.%24.photoWrapper.hidden%3Dfalse%3Bthis.%24.textWrapper.classList.remove('no-image')%3Bthis.%24.container.classList.remove('no-image')%3Bthis.%24.noImageBadge.hidden%3Dtrue%3Bthis.%24.lgThumbSrc.srcset%3Dthis._getResponsiveThumbnail(path16x9%2C448%2C252)%3Bthis.%24.mdThumbSrc.srcset%3Dthis._getResponsiveThumbnail(path16x9%2C256%2C144)%3Bthis.%24.smThumbSrc.srcset%3Dthis._getResponsiveThumbnail(path1x1%2C135%2C135)%3Bthis.%24.defaultThumbImg.src%3Dthis._getNormalThumbnail(path1x1%2C135%2C135)%3B%7D%2C_hideThumbnail%3Afunction%20_hideThumbnail()%7Bthis.%24.textWrapper.classList.add('no-image')%3Bthis.%24.photoWrapper.hidden%3Dtrue%3Bif(this.type%3D%3D%3D'video')%7Bthis.%24.noImageBadge.hidden%3Dfalse%3B%7Delse%7Bthis.%24.container.classList.add('no-image')%3B%7D%7D%2C_thumbnailChange%3Afunction%20_thumbnailChange(thumbnail)%7Bif(thumbnail%26%26thumbnail!%3D%3D'http%3A%2F%2Fwww.gannett-cdn.com')%7Bthis._setThumbnailSources(thumbnail%2Cthumbnail)%3B%7D%7D%2C_advertisementChange%3Afunction%20_advertisementChange()%7Bif(this.advertisement)%7Bthis.%24.textWrapper.querySelector('.branded-text').innerHTML%3D'Advertisement'%3Bthis.%24.textWrapper.classList.toggle('branded'%2C'branded')%3B%7D%7D%2C_sendLoadEvent%3Afunction%20_sendLoadEvent()%7Bthis.dispatchEvent(new%20CustomEvent('promos-story-thumb-small-load'%2C%7Bcomposed%3Atrue%2Cbubbles%3Atrue%2Cdetail%3A%7Btime%3A1500%7D%7D))%3Bthis.dataset.moduleLoadEventFired%3Dtrue%3B%7D%2C_thumbnailSetChange%3Afunction%20_thumbnailSetChange(thumbSet)%7Bif(thumbSet%26%26thumbSet.length%3E0)%7Bvar%20crops%3DthumbSet.split('%2C%20')%3Bvar%20crop1x1%3Dvoid%200%2Ccrop16x9%3Dvoid%200%3Bcrops.forEach(function(c)%7Bvar%20parts%3Dc.split('%20')%3Bvar%20_parts%24filter%3Dparts.filter(function(x)%7Breturn!!x%3B%7D)%2C_parts%24filter2%3D_slicedToArray(_parts%24filter%2C2)%2Curl%3D_parts%24filter2%5B0%5D%2CaspectRatio%3D_parts%24filter2%5B1%5D%3B%2F%2F%20trim%20whitespace%0Aif(aspectRatio%3D%3D%3D'1%3A1')%7Bcrop1x1%3Durl%3B%7Delse%20if(aspectRatio%3D%3D%3D'16%3A9')%7Bcrop16x9%3Durl%3B%7D%7D)%3Bif(!crop16x9)%7Bcrop16x9%3Dcrop1x1%3B%7Delse%20if(!crop1x1)%7Bcrop1x1%3Dcrop16x9%3B%7Dif(crop16x9%26%26crop1x1)%7Bthis._setThumbnailSources(crop1x1%2Ccrop16x9)%3B%7D%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpromo%2Fpromo-story-thumb-small%2Fpromo-story-thumb-small.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpromo%2Fpromo-story-thumb-small%2Fpromo-story-thumb-small.html.js%0A",
            "resourceBytes": 8131,
            "encodedBytes": 0,
            "unusedBytes": 4969,
            "children": [
              {
                "name": "elements/promo/promo-story-thumb-small/promo-story-thumb-small.html_script_0.js",
                "resourceBytes": 6733,
                "unusedBytes": 4969
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 1398
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20%60%3Cpartner-branded-content-tile%3E%60%20adds%20a%20Branded%20Content%20Tile%20Ad%20to%20your%20page.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-branded-content-tile'%2CdesignId%3A'A7'%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20DFP%20placement%20name%20for%20this%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Default%20value%20is%20for%20desktop.%20Mobile%20value%20set%20dynamically%20in%20%60slotReady%60.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A'native-front_tile'%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20border%20(automatic%20on%20high%20impact%20units)%20*%2FnoBorder%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B2%2C3%5D%2C'fluid'%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20mobile%20dynamically%20via%20intent%0Aif(this._inMobileEnvironment())%7Bthis.mobile%3Dtrue%3Bthis.placement%3D'mobileweb-native-front_tile'%3B%7D%7D%2C_afterSetupAd%3Afunction%20_afterSetupAd()%7Bthis.addTargeting(%7Bfront%3A'NA'%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-branded-content-tile%2Fpartner-branded-content-tile.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-branded-content-tile%2Fpartner-branded-content-tile.html.js%0A",
            "resourceBytes": 1281,
            "encodedBytes": 0,
            "unusedBytes": 262,
            "children": [
              {
                "name": "elements/partner/partner-branded-content-tile/partner-branded-content-tile.html_script_0.js",
                "resourceBytes": 671,
                "unusedBytes": 262
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 610
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-inline%3E%60%20Inline%20ad%20unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-inline'%2CdesignId%3A'A9'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A'inline_flex'%7D%2C%2F**%20Lazy%20Load%20*%2Flazy%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20prebid%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Conditional%20sizes%20to%20add%20when%20there%20is%20enough%20available%20width%20*%2FconditionalSizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%5B%5B728%2C90%5D%5D%3B%7D%7D%2Cgallery%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B'fluid'%2C%5B300%2C250%5D%2C%5B3%2C3%5D%5D%3B%7D%2C%2F**%20NSF%20Targeting%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B'paramount'%2C'paramount-16_9'%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Hack%20to%20make%20conditional%20size%20exceptions%20for%20gallery%20units%0A%2F%2F%20TODO%3A%20refactor%20partner-slot%20to%20avoid%20doing%20this%20here%0A%2F%2F%20OR%20remove%20when%20%60%3Cmedia-gallery-vertical%3E%60%20gets%20refactored%0Aif(this.gallery)%7Bthis.lazy%3Dfalse%3Bthis.conditionalSizes%3D%5B%5D%3B%7Dif(this._getNested(window%2C'ga_data'%2C'route'%2C'basePageType')%3D%3D%3D'vertical%20asset%20gallery'%26%26this.placement%3D%3D%3D'inline_flex')%7Bthis.placement%3D'inline_flex_gallery'%3B%7D%7D%2CrenderEnded%3Afunction%20renderEnded(event)%7Bif(event.size%26%26event.size%5B0%5D%3D%3D%3D728%26%26event.size%5B1%5D%3D%3D%3D90)%7Bthis.classList.add('partner-inline-leaderboard')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-inline%2Fpartner-inline.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-inline%2Fpartner-inline.html.js%0A",
            "resourceBytes": 1916,
            "encodedBytes": 0,
            "unusedBytes": 713,
            "children": [
              {
                "name": "elements/partner/partner-inline/partner-inline.html_script_0.js",
                "resourceBytes": 1542,
                "unusedBytes": 713
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 374
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-poster%3E%60%20adds%20a%20Poster%20Ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-poster'%2CdesignIds%3A'A8'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20This%20unit%20has%20eligable%20sizes%20for%20prebid%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligable%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligable%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20auto-refreshes%20*%2FautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A250%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B300%2C250%5D%2C%5B300%2C600%5D%2C%5B300%2C1050%5D%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7Bvar%20front%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3Breturn%20front%3F'poster_front'%3A'poster'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-poster%2Fpartner-poster.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-poster%2Fpartner-poster.html.js%0A",
            "resourceBytes": 1634,
            "encodedBytes": 0,
            "unusedBytes": 338,
            "children": [
              {
                "name": "elements/partner/partner-poster/partner-poster.html_script_0.js",
                "resourceBytes": 1163,
                "unusedBytes": 338
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 471
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'cta-atoms-container-aux'%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fcta%2Fcta-atoms-container-aux%2Fcta-atoms-container-aux.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fcta%2Fcta-atoms-container-aux%2Fcta-atoms-container-aux.html.js%0A",
            "resourceBytes": 328,
            "encodedBytes": 0,
            "children": [
              {
                "name": "elements/cta/cta-atoms-container-aux/cta-atoms-container-aux.html_script_0.js",
                "resourceBytes": 41
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 287
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-posterscroll%3E%60%20adds%20a%20Posterscroll%20ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-posterscroll'%2CdesignIds%3A'A12'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2Csticky%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cstuck%3A%7Btype%3AString%2Cvalue%3A''%7D%2CheaderOffset%3A%7Btype%3ANumber%2Cvalue%3A56%7D%2CautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2CwinHeight%3A%7Btype%3ANumber%2Cvalue%3Awindow.innerHeight%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20the%20setup%20of%20the%20posterscroll%20ad%20unit.%20Creates%20an%20additional%20container%20that%20will%20be%20used%20for%20sticking%20the%20ad.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.top%3Dthis.headerOffset%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7B%2F%2F%20Set%20top%20offset%20based%20on%20header%20size%20and%20top%20margin%0Avar%20style%3Dwindow.getComputedStyle(_this%2Cnull)%3Bvar%20topMargin%3DparseInt(style.marginTop%2C10)%3B_this.top%3D_this.headerOffset%2BtopMargin%3B%2F%2F%20Use%20%60position%3Asticky%60%20where%20supported%0Aif(_this._positionStickySupported())%7B_this.positionSticky%3Dtrue%3B_this._setupPositionSticky()%3B%7Delse%7B%2F%2F%20Otherwise%20use%20a%20scroll%20listener%0A_this._setupScrollListenerSticky()%3B%7D%7D%2C%5B%5D)%3B%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B300%2C250%5D%2C%5B300%2C600%5D%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7Bvar%20front%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3Breturn%20front%3F'poster_scroll_front'%3A'poster_scroll'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Checks%20to%20see%20if%20%60position%3A%20sticky%60%20is%20supported%20on%20current%20browser.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Stolen%20from%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fgithub.com%2Fdollarshaveclub%2Fstickybits%2Fblob%2F93b905d76b47d30b34ff75c61158e226cc4d7ae1%2Fsrc%2Fstickybits.js%23L106-L116%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_positionStickySupported%3Afunction%20_positionStickySupported()%7Bvar%20prefix%3D%5B''%2C'-o-'%2C'-webkit-'%2C'-moz-'%2C'-ms-'%5D%3Bvar%20test%3Ddocument.head.style%3Bfor(var%20i%3D0%3Bi%3Cprefix.length%3Bi%2B%3D1)%7Btest.position%3Dprefix%5Bi%5D%2B'sticky'%3B%7Dvar%20stickyProp%3D'fixed'%3Bif(typeof%20test.position!%3D%3D'undefined')stickyProp%3Dtest.position%3Btest.position%3D''%3Breturn%20stickyProp%3D%3D%3D'sticky'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20up%20our%20element%20as%20sticky%20using%20%60position%3A%20sticky%3B%60%20CSS%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_setupPositionSticky%3Afunction%20_setupPositionSticky()%7Bthis.style.position%3D'sticky'%3Bthis.style.top%3Dthis.top%2B'px'%3Bthis.style.marginBottom%3D'0px'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20up%20our%20element%20as%20sticky%20using%20scroll%20listeners%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_setupScrollListenerSticky%3Afunction%20_setupScrollListenerSticky()%7Bvar%20_this2%3Dthis%3Bvar%20slotContainer%3Dvoid%200%2Cparent%3Dthis.parentNode%3B%2F%2F%20Can't%20find%20a%20parent%2C%20or%20I'm%20inactive%0Aif(!parent%7C%7Cthis.inactive)return%3B%2F%2F%20Wrap%20this%20in%20poster-scroll%20div%0Athis.slotContainer%3DslotContainer%3Ddocument.createElement('div')%3BslotContainer.className%3D'poster-scroll'%3Bparent.insertBefore(slotContainer%2Cthis)%3BslotContainer.appendChild(this)%3B%2F%2F%20setup%20resize%20listener%0Awindow.addEventListener('ga-resize'%2Cfunction()%7Breturn%20_this2._resizeListener()%3B%7D%2Cfalse)%3Bdocument.addEventListener('DOMContentLoaded'%2Cfunction()%7B%2F%2F%20Catch%20instance%20where%20lazy%20ad%20needs%20to%20load%2C%20when%20a%20user%20loads%20the%20page%20halfway%20down%20the%20rail%0A_this2._setupSticky()%3B%7D)%3B%7D%2CslotAttached%3Afunction%20slotAttached()%7Bvar%20_this3%3Dthis%3B%2F%2F%20Adjust%20our%20ad%20request%20sizes%2C%20so%20we%20don't%20load%20anything%20taller%20than%20the%20window%20height%0Athis.sizes%3Dthis.sizes.reduce(function(arr%2Csize)%7Bif(size%5B1%5D%3C%3D_this3.winHeight-_this3.top%7C%7Csize%5B1%5D%3D%3D%3D250)arr.push(size)%3Breturn%20arr%3B%7D%2C%5B%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Listener%20function%20for%20the%20window%20resize%20event.%20Will%20reset%20the%20sticky%20ad%20after%20the%20user%20stops%20resizing%20the%20screen.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_resizeListener%3Afunction%20_resizeListener()%7Bvar%20_this4%3Dthis%3B%2F%2F%20Only%20fire%20when%20a%20users%20stops%20resizing%20for%20more%20500ms%0Aif(this._timeout)%7BPolymer.Async.timeOut.cancel(this._timeout)%3B%7Dthis._timeout%3DPolymer.Async.timeOut.after(500).run(function()%7B_this4._setupSticky()%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Called%20when%20render%20has%20finished%20for%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FrenderEnded%3Afunction%20renderEnded()%7Bif(!this.positionSticky)%7Bthis._setupSticky()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Set's%20up%20everything%20needed%20to%20make%20this%20ad%20slot%20sticky.%20Sets%20heights%2Fwidths%2C%20and%20variables%20needed%20for%20calculations%2C%20then%20starts%20observing%20if%20there%20is%20enough%20space%20for%20a%20sticky%20ad.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setupSticky%3Afunction%20_setupSticky()%7Bvar%20_this5%3Dthis%3Bthis._setHeight()%3Bif(this.sticky%26%26this.lastPosition%3D%3D%3Dundefined)%7Bthis.lastPosition%3D0%3Bwindow.addEventListener('ga-scroll'%2Cfunction()%7Breturn%20_this5._scrollListener()%3B%7D%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Alternative%20for%20when%20%60position%3Asticky%60%20is%20not%20supported.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_scrollListener%3Afunction%20_scrollListener()%7Bvar%20slotContainerPos%3Dthis.slotContainer.getBoundingClientRect()%2CcurrentPosition%3DslotContainerPos.top%2Ctype%3DcurrentPosition%3Ethis.lastPosition%3F'ceil'%3A'floor'%3Bthis._setPosition(type%2CslotContainerPos)%3Bthis.lastPosition%3DcurrentPosition%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Checks%20where%20the%20ad%20slot%20container%20is%20on%20the%20page%2C%20and%20fixes%20the%20ad%20slot%20accordingly%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20type%20%20%20%20%20%20%20%20%20%20%20%20%20%20Type%20of%20listener%20calling%20the%20function%20('ceil'%2C%20'floor')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20slotContainerPos%20%20Bounding%20Client%20Rectangle%20object%20for%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setPosition%3Afunction%20_setPosition(type%2CslotContainerPos)%7Bvar%20topOffset%3Dthis.stuck%3D%3D%3D'top'%26%26type%3D%3D%3D'ceil'%3Fthis.headerOffset%3Athis.headerOffset%2Bthis.topMargin%3Bif(slotContainerPos.top%3CtopOffset%7C%7Ctype%3D%3D%3D'ceil'%26%26this.stuck%3D%3D%3D'none'%26%26slotContainerPos.top%3D%3D%3DtopOffset)%7Bif(slotContainerPos.bottom%3E%3Dthis.slotHeight%2BtopOffset)%7Bthis._fixToTop()%3B%7Delse%7Bthis._fixToFloor()%3B%7D%7Delse%7Bthis._unFix()%3B%7Dif(this.lazy)%7Bthis.lazyRenderCheck()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Fixes%20the%20ad%20slot%20to%20the%20floor%20of%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_fixToFloor%3Afunction%20_fixToFloor()%7Bif(this.stuck!%3D%3D'floor')%7Bthis.stuck%3D'floor'%3Bthis.style.bottom%3D'0px'%3Bthis.style.top%3Dnull%3Bthis.style.position%3D'absolute'%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Fixes%20the%20ad%20slot%20to%20the%20top%20of%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_fixToTop%3Afunction%20_fixToTop()%7Bif(this.stuck!%3D%3D'top')%7Bthis.stuck%3D'top'%3Bthis.style.bottom%3D0%3Bthis.style.position%3D'fixed'%3Bthis.style.top%3Dthis.headerOffset%2B'px'%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Un-fixes%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_unFix%3Afunction%20_unFix()%7Bif(this.stuck!%3D%3D'none')%7Bthis.stuck%3D'none'%3Bthis.style.bottom%3Dnull%3Bthis.style.position%3D'relative'%3Bthis.style.top%3Dnull%3Bthis.style.width%3Dnull%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20the%20height%20of%20the%20ad%20slot%2C%20ad%20slot%20container%2C%20and%20sets%20variables%20used%20for%20calculating%20where%20to%20fix%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setHeight%3Afunction%20_setHeight()%7Bvar%20offset%3Dvoid%200%2CslotContainerHeight%3Dvoid%200%2CparentHeight%3Dvoid%200%2CslotContainer%3Dthis.slotContainer%2Cparent%3DslotContainer.parentNode%2Cad%3Dthis.querySelector('%5Bid%24%3D__container__%5D')%7C%7Cthis%2CadHeight%3Dad.clientHeight%2CslotStyles%3Dwindow.getComputedStyle(this%2Cnull)%3B%2F%2Freset%20values%20before%20we%20attempt%20to%20get%20them%20again%0Athis.style.width%3Dnull%3BslotContainer.style.height%3Dnull%3BparentHeight%3Dthis._getNonZeroAttr(parent%2C'clientHeight')%3Boffset%3Dthis._getCoords(parent).top-this._getCoords(slotContainer).top%3BslotContainerHeight%3DparentHeight%2Boffset%3Bthis.slotHeight%3DadHeight%2BparseInt(slotStyles.paddingTop%2C10)%2BparseInt(slotStyles.paddingBottom%2C10)%3Bthis.topMargin%3DparseInt(slotStyles.marginTop%2C10)%3Bthis.winHeight%3Dwindow.innerHeight%3B%2F%2F%20adjust%20the%20width%2Fheight%20of%20the%20ad%0Athis.style.height%3DadHeight%2B'px'%3Bif(this.stuck%3D%3D%3D'top'%7C%7Cthis.stuck%3D%3D%3D'floor')%7Bthis.style.width%3Dthis._getNonZeroAttr(this.parentNode%2C'clientWidth')%2B'px'%3B%7D%2F%2F%20Check%20to%20see%20if%20the%20slot%20container%20is%20large%20enough%20to%20make%20this%20sticky%0Athis.sticky%3Dthis.slotHeight%3CslotContainerHeight%3Bif(this.sticky)%7BslotContainer.style.height%3DslotContainerHeight%2B'px'%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-posterscroll%2Fpartner-posterscroll.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-posterscroll%2Fpartner-posterscroll.html.js%0A",
            "resourceBytes": 8719,
            "encodedBytes": 0,
            "unusedBytes": 5354,
            "children": [
              {
                "name": "elements/partner/partner-posterscroll/partner-posterscroll.html_script_0.js",
                "resourceBytes": 6408,
                "unusedBytes": 5354
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 2311
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-leaderboard%3E%60%20adds%20a%20Leaderboard%20ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-leaderboard'%2CdesignIds%3A'A11'%2Cproperties%3A%7B%2F**%20DFP%20Placement%20Name%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A'leaderboard_atf'%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A90%7D%2C%2F**%20Render%20Behavior%20*%2FrenderBehavior%3A%7Btype%3AString%2Cvalue%3A'load'%7D%2C%2F**%20Fetch%20Behavior%20*%2FfetchBehavior%3A%7Btype%3AString%2Cvalue%3A'load'%7D%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Bvar%20sizes%3D%5B%5B728%2C90%5D%5D%3Bif(this._getNested(window%2C'ga_data'%2C'route'%2C'useParamount'))%7Bsizes.push(%5B'fluid'%5D)%3B%7Dreturn%20sizes%3B%7D%2C%2F**%20NSF%20Targeting%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Bif(this._getNested(window%2C'ga_data'%2C'route'%2C'useParamount'))%7Bthis.nsfTargeting%3D%5B'paramount'%2C'paramount-21_9'%5D%3B%7D%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-leaderboard%2Fpartner-leaderboard.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-leaderboard%2Fpartner-leaderboard.html.js%0A",
            "resourceBytes": 1537,
            "encodedBytes": 0,
            "unusedBytes": 285,
            "children": [
              {
                "name": "elements/partner/partner-leaderboard/partner-leaderboard.html_script_0.js",
                "resourceBytes": 1165,
                "unusedBytes": 285
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 372
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7DPolymer(%7Bis%3A'alerts-atoms'%2Cproperties%3A%7Benabled%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cenvironment%3A%7Btype%3AString%2Cvalue%3A'prod'%7D%7D%2Cbehaviors%3A%5Bga_data.behaviors.GalliumElement%5D%2C%2F**%20Called%20once%20the%20GalliumElement%20and%20framework%20has%20finished%20initializing.%20*%2FframeworkReady%3Afunction%20frameworkReady()%7Bvar%20_this%3Dthis%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7Bvar%20isPianoEnabled%3Dga_data.utils.getNested(window%2C'ga_data'%2C'site'%2C'piano'%2C'enabled')%7C%7Cfalse%3Bif(_this.enabled%26%26!isPianoEnabled)%7BGallium.user.then(function(user)%7B_this._setupAtoms(user)%3B%7D).catch(function(e)%7B%2F%2F%20previously%20newrelic%0A_this._setupAtoms(Gallium.userLocalData)%3B%7D)%3B%7D%7D%2C%5B%5D)%3B%7D%2C%2F**%20Initializes%20the%20required%20data%20and%20requests%20ATOMS%20scripts%20**%2F_setupAtoms%3Afunction%20_setupAtoms(user)%7Bvar%20env%3Dthis.environment.toLowerCase()%3Bvar%20_ref%3Dthis._getUserFireflyState()%7C%7C%7B%7D%2CviewCount%3D_ref.viewCount%2CviewThreshold%3D_ref.viewThreshold%3Bwindow.gannett%3Dwindow.gannett%7C%7C%7B%7D%3Bwindow.gannett.atoms%3D%7Bsetup%3A%7Benvironment%3Aenv%2Cplatform%3A'UW'%2CsiteCode%3Aga_data.site.uaid%2CcamId%3AGallium.userCamExperienceId%2CcamEnabled%3Aga_data.route.cam.enabled%2CcamTriggered%3Aga_data.route.cam.enabled%26%26Gallium.isCAMMeterIncrement%2CprotectionState%3Aga_data.route.cam.contentProtectionState%2Croadblock%3Aga_data.route.cam.restrictContent%7C%7Cfalse%2Cuser%3Auser%2CviewCount%3AviewCount%2CviewThreshold%3AviewThreshold%2Cssts%3Aga_data.route.ssts%2Ctaxonomy%3Aga_data.route.keywords%2CpageType%3Aga_data.route.basePageType%2Cmobile%3Aga_data.intents.indexOf('device-type%3Amobile')%3E-1%2Canalytics%3Adocument.createElement('util-analytics')%2CcustomModal%3Afunction%20customModal(elem)%7Breturn%20new%20Modal(elem)%3B%7D%2Ccomment%3Anew%20Comment().open()%7D%7D%3Bga_data.utils.loadScript('https%3A%2F%2Fatoms.'%2Bga_data.site.baseName%2B'.com%2Fatoms-library%2F'%2Benv%2B'%2Fdist%2Fgannett-atoms-library.js'%2C'gannett-atoms-library')%3B%7D%7D)%3Bvar%20Modal%3Dfunction()%7Bfunction%20Modal(elem)%7B_classCallCheck(this%2CModal)%3Bthis.elem%3Delem%3B%7D_createClass(Modal%2C%5B%7Bkey%3A'open'%2Cvalue%3Afunction%20open()%7Bdocument.getElementById('ga-modal-slot').showElement(this.elem)%3B%7D%7D%2C%7Bkey%3A'close'%2Cvalue%3Afunction%20close()%7Bdocument.getElementById('ga-modal-slot').closeAll()%3B%7D%7D%5D)%3Breturn%20Modal%3B%7D()%3Bvar%20Comment%3Dfunction()%7Bfunction%20Comment()%7B_classCallCheck(this%2CComment)%3Bvar%20disabled%3D(ga_data.site.comments%7C%7C%7B%7D)%5B'disabled'%5D%3D%3D%3Dtrue%3Bvar%20isCoral%3D(ga_data.site.comments%7C%7C%7B%7D)%5B'coralTalkEnabled'%5D%3D%3D%3Dtrue%3Bif(!disabled)%7Bthis.elem%3Ddocument.querySelector(isCoral%3F'labs-comments-coral-talk'%3A'story-comments')%3Bthis.method%3DisCoral%3F'openCoralComments'%3A'createCommentsAndScroll'%3B%7D%7D_createClass(Comment%2C%5B%7Bkey%3A'open'%2Cvalue%3Afunction%20open()%7Bvar%20_this2%3Dthis%3Breturn%20this.elem%3Ffunction()%7Breturn%20_this2._importAndOpen()%3B%7D%3Anull%3B%7D%7D%2C%7Bkey%3A'_importAndOpen'%2Cvalue%3Afunction%20_importAndOpen()%7Bvar%20_this3%3Dthis%3Bif(!this.elem%5Bthis.method%5D)%7BGallium.importModuleForNode(this.elem%2Cfunction()%7Breturn%20_this3.elem%5B_this3.method%5D()%3B%7D)%3B%7Delse%7Bthis.elem%5Bthis.method%5D()%3B%7D%7D%7D%5D)%3Breturn%20Comment%3B%7D()%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Falerts%2Falerts-atoms%2Falerts-atoms.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Falerts%2Falerts-atoms%2Falerts-atoms.html.js%0A",
            "resourceBytes": 3711,
            "encodedBytes": 0,
            "unusedBytes": 2447,
            "children": [
              {
                "name": "elements/alerts/alerts-atoms/alerts-atoms.html_script_0.js",
                "resourceBytes": 2532,
                "unusedBytes": 2187
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 1179,
                "unusedBytes": 260
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-page-reload'%2Cproperties%3A%7B%2F**%20Time%20in%20seconds%20until%20page%20is%20refreshed%2C%20defaults%20to%207%20minutes%20*%2FrefreshInterval%3A%7Btype%3ANumber%2Cvalue%3A7*60%2Cobserver%3A'_intervalChanged'%7D%7D%2Canalytics%3Adocument.createElement('util-analytics')%2CtimerId%3A-1%2C%2F**%20Reset%20reload%20countdown%20*%2Freset%3Afunction%20reset()%7Bthis._intervalChanged(this.refreshInterval)%3B%7D%2Cdisable%3Afunction%20disable()%7Bif(this.timerId%3E0)%7BclearTimeout(this.timerId)%3B%7D%7D%2C_intervalChanged%3Afunction%20_intervalChanged(interval)%7Bvar%20_this%3Dthis%3Bthis.disable()%3B%2F%2F%20stop%20the%20existing%20timer.%0Athis.timerId%3DsetTimeout(function()%7B_this.analytics.fireEvent('refresh%3A'%2Bwindow.ga_data.route.sectionName%2Cnull%2Ctrue)%3Bga_data.utils.writeCookie('page_refresh'%2C1%2C0)%3Blocation.reload()%3B%7D%2Cinterval*1000)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-page-reload%2Futil-page-reload.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-page-reload%2Futil-page-reload.html.js%0A",
            "resourceBytes": 992,
            "encodedBytes": 0,
            "unusedBytes": 421,
            "children": [
              {
                "name": "elements/util/util-page-reload/util-page-reload.html_script_0.js",
                "resourceBytes": 731,
                "unusedBytes": 421
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 261
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-user-subscription-manager'%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%5D%2Cproperties%3A%7BadFreeExperience%3ABoolean%2CccDeclineModal%3ABoolean%7D%2CframeworkReady%3Afunction%20frameworkReady()%7Bvar%20_this%3Dthis%3BGallium.user.then(function(user)%7B%2F%2F%20check%20if%20adFree%20reload%20modal%20should%20be%20shown%0Aif(_this.adFreeExperience%26%26window.ga_data.utils.getNested(window.ga_data%2C'flags'%2C'reloadPage'))%7Breturn%20_this._loadReloadModal()%3B%7D%2F%2F%20check%20if%20cc%20decline%20modal%20should%20be%20shown%0Aif(_this.ccDeclineModal)%7Bvar%20showCTA%3Duser.response.user.hasMarketAccess%26%26!(new%20Date().getTime()%3CparseInt(localStorage.getItem('expired-credit-card'))%2B259200000)%3Bif(showCTA)%7B_this._verifyExpiredLicense(user.response.user.licensePaymentHistory%5B0%5D%7C%7C%7B%7D)%3B%7D%7D%7D).catch(function(e)%7B%2F%2F%20previously%20newrelic%0A%7D)%3B%7D%2C_loadReloadModal%3Afunction%20_loadReloadModal()%7Bvar%20_this2%3Dthis%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2Falerts%2Falerts-modals%2Falerts-ad-free-modal%2Falerts-ad-free-modal.html'%2Cfunction()%7Bif(!_this2._adFreeModal)%7B_this2._adFreeModal%3Ddocument.createElement('alerts-ad-free-modal')%3B_this2._adFreeModal.openModal()%3B%7D%7D%2Cnull%2Ctrue)%3B%7D%2C_verifyExpiredLicense%3Afunction%20_verifyExpiredLicense(_ref)%7Bvar%20_ref%24lastPaymentFaile%3D_ref.lastPaymentFailed%2ClastPaymentFailed%3D_ref%24lastPaymentFaile%3D%3D%3Dundefined%3Ffalse%3A_ref%24lastPaymentFaile%2C_ref%24licenseId%3D_ref.licenseId%2ClicenseId%3D_ref%24licenseId%3D%3D%3Dundefined%3F''%3A_ref%24licenseId%2C_ref%24ccExpirationYear%3D_ref.ccExpirationYear%2CccExpirationYear%3D_ref%24ccExpirationYear%3D%3D%3Dundefined%3F''%3A_ref%24ccExpirationYear%2C_ref%24ccExpirationMont%3D_ref.ccExpirationMonth%2CccExpirationMonth%3D_ref%24ccExpirationMont%3D%3D%3Dundefined%3F''%3A_ref%24ccExpirationMont%3Bif(!lastPaymentFailed)%7Bvar%20date%3Dnew%20Date()%3Bvar%20currYear%3Ddate.getFullYear()%3Bvar%20currMonth%3Ddate.getMonth()%2B1%3Bvar%20expYear%3DparseInt(ccExpirationYear%2C10)%3Bvar%20expMonth%3DparseInt(ccExpirationMonth%2C10)%3Bif(currYear%3D%3D%3DexpYear)%7Bif(currMonth%3D%3D%3DexpMonth)%7Bthis._loadCCDeclineModal(licenseId%2Cfalse)%3B%7Delse%20if(currMonth%3EexpMonth)%7Bthis._loadCCDeclineModal(licenseId%2Ctrue)%3B%7D%7Delse%20if(currYear%3EexpYear)%7Bthis._loadCCDeclineModal(licenseId%2Ctrue)%3B%7Delse%7BlocalStorage.removeItem('expired-credit-card')%3B%7D%7Delse%7Bthis._loadCCDeclineModal(licenseId%2Ctrue)%3B%7D%7D%2C_loadCCDeclineModal%3Afunction%20_loadCCDeclineModal(licenseId%2CisExpiredNow)%7Bvar%20_this3%3Dthis%3BPolymer.Base.importHref(''%2Bga_data.site.hosts.clientStatic%2Bga_data.server.clientRoot%2B'elements%2Falerts%2Falerts-modals%2Falerts-cc-decline-modal%2Falerts-cc-decline-modal.html'%2Cfunction()%7Bif(!_this3._ccDeclineModal)%7B_this3._ccDeclineModal%3Ddocument.createElement('alerts-cc-decline-modal')%3B_this3._ccDeclineModal.openModal(licenseId%2CisExpiredNow)%3B%7D%7D%2Cnull%2Ctrue)%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-user-subscription-manager%2Futil-user-subscription-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-user-subscription-manager%2Futil-user-subscription-manager.html.js%0A",
            "resourceBytes": 2951,
            "encodedBytes": 0,
            "unusedBytes": 2395,
            "children": [
              {
                "name": "elements/util/util-user-subscription-manager/util-user-subscription-manager.html_script_0.js",
                "resourceBytes": 2634,
                "unusedBytes": 2395
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 317
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.AnalyticsElementBehavior%20*%2Fwindow.ga_data.behaviors.AnalyticsElementBehavior%3D%7B_flattenSsts%3Afunction%20_flattenSsts(acc%2Ccur)%7Breturn%20acc%2B(cur!%3D%3D''%3F'%3A'%2Bcur%3A'')%3B%7D%2C_getTypeValue%3Afunction%20_getTypeValue(route)%7Bvar%20contentType%3Droute.contentType%3Bswitch(route.contentType)%7Bcase'generic'%3AcontentType%3D'interactive'%3Bbreak%3Bcase'story'%3AcontentType%3D'article'%3Bbreak%3B%2F%2F%20TODO%3A%20Add%20support%20for%20standalone%20video%20%2F%20gallery%0A%7Dreturn%20contentType%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20current%20time%20rounded%20to%20nearest%20half%20hour....%0A%20%20%20%20%20%20%20%20%20*%2F_getRoundedTimestamp%3Afunction%20_getRoundedTimestamp(date)%7Bif(!this._toLocaleStringSupportsLocales())return''%3Bvar%20realMin%3Ddate.getMinutes()%3Bif(realMin%3E45)%7Bdate.setMinutes(0)%3Bdate.setHours(date.getHours()%2B1)%3B%2F%2F%20Increment%2C%20will%20roll%20over%20(at%20least%20in%20chrome)%0A%7Delse%20if(realMin%3C15)%7Bdate.setMinutes(0)%3B%7Delse%7Bdate.setMinutes(30)%3B%7Dreturn%20date.toLocaleTimeString('en-US'%2C%7Bhour%3A'numeric'%2Cminute%3A'numeric'%7D).toLowerCase()%3B%7D%2C_getRoundedTimestampAndDayOfWeek%3Afunction%20_getRoundedTimestampAndDayOfWeek(date)%7Breturn%20this._getRoundedTimestamp(date)%2B'%7C'%2Bdate.toLocaleString('en-US'%2C%7Bweekday%3A'long'%7D)%3B%7D%2C%2F%2F%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FDate%2FtoLocaleString%23Checking_for_support_for_locales_and_options_arguments%0A_toLocaleStringSupportsLocales%3Afunction%20_toLocaleStringSupportsLocales()%7Btry%7Bnew%20Date().toLocaleString('i')%3B%7Dcatch(e)%7Breturn%20e%20instanceof%20RangeError%3B%7Dreturn%20false%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20user's%20meter%20state%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FANALYTICS%2FUser%2BStatus%0A%20%20%20%20%20%20%20%20*%2F_getUserStatus%3Afunction%20_getUserStatus()%7Bvar%20user%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3Afalse%3Bvar%20isAuthenticated%3Dvoid%200%2CmarketAccess%3Dvoid%200%2ClicenseType%3Dvoid%200%2Cguid%3Dvoid%200%2CuserStatus%3D'none'%3Bif(user)%7Bif(typeof%20user.meta!%3D%3D'undefined')%7BisAuthenticated%3Duser.meta.isAuthenticatedInCurrentContext%3B%7Dif(typeof%20user.response!%3D%3D'undefined')%7BmarketAccess%3Duser.response.user.hasMarketAccess%3BlicenseType%3Duser.response.user.userLicenseType%3Bguid%3Duser.response.user.userGuid%3B%7Dif(isAuthenticated%26%26marketAccess)%7BuserStatus%3DlicenseType%3B%7Delse%20if(isAuthenticated)%7BuserStatus%3D'authenticated'%3B%7Delse%20if(guid!%3D%3Dundefined)%7BuserStatus%3D'newsletter_guid'%3B%7D%7Dreturn%20userStatus%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20user's%20meter%20state%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FDATACOLLECTION%2FUser%2BMeter%2BState%0A%20%20%20%20%20%20%20%20*%2F_getUserMeterState%3Afunction%20_getUserMeterState()%7Bvar%20userAuthenticated%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3Afalse%3Bvar%20state%3D'nothitpaywall'%3Bvar%20fireflyValue%3Dthis._getUserFireflyState()%3Bif(fireflyValue)%7Bvar%20remaining%3DfireflyValue.viewThreshold-fireflyValue.viewCount%3Bif(userAuthenticated)%7Bstate%3D'authorized'%3B%7Delse%20if(remaining%3E0)%7Bstate%3Dremaining%3B%7Delse%7Bstate%3D'nofreearticlesremaining'%3B%7D%7Dreturn%20state%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20user's%20type%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FDS%2FUser%2BType%0A%20%20%20%20%20%20%20%20*%2F_getUserType%3Afunction%20_getUserType()%7Bvar%20user%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3Afalse%3Bvar%20userType%3D'anonymous'%3Bif(user)%7Bif(ga_data.utils.getNested(user%2C'response'%2C'user'%2C'hasMarketAccess'))%7BuserType%3D'subscriber'%3B%7Delse%20if(!ga_data.utils.getNested(user%2C'meta'%2C'isAnonymous'))%7BuserType%3D'registered'%3B%7D%7Dreturn%20userType%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20the%20identifier%20for%20the%20tag%20manager%20being%20used%0A%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fconfluence.gannett.com%2Fdisplay%2FDS%2FPage%2BAnalytics%2BImplementation%0A%20%20%20%20%20%20%20%20*%2F_getPageAnalyticsImplementation%3Afunction%20_getPageAnalyticsImplementation()%7Breturn'UW%3A'%2Bga_data.server.clientVersion%2B'%3A'%2Bga_data.site.uaid%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20create%20a%20UUID%0A%20%20%20%20%20%20%20%20*%20Borrowed%20from%20https%3A%2F%2Fgithub.com%2FGannettDigital%2Fgupui%2Fblob%2Frelease%2Fgupui%2Fcore%2Fjs%2Fmath_uuid.js%0A%20%20%20%20%20%20%20%20*%2F_generateUuid%3Afunction%20_generateUuid(len%2Cradix)%7Bvar%20chars%3D'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')%2Cuuid%3D%5B%5D%2Ci%3Bradix%3Dradix%7C%7Cchars.length%3Bif(len)%7B%2F%2F%20Compact%20form%0Afor(i%3D0%3Bi%3Clen%3Bi%2B%2B)%7Buuid%5Bi%5D%3Dchars%5B0%7CMath.random()*radix%5D%3B%7D%7Delse%7B%2F%2F%20rfc4122%2C%20version%204%20form%0Avar%20r%3B%2F%2F%20rfc4122%20requires%20these%20characters%0Auuid%5B8%5D%3Duuid%5B13%5D%3Duuid%5B18%5D%3Duuid%5B23%5D%3D'-'%3Buuid%5B14%5D%3D'4'%3B%2F%2F%20Fill%20in%20random%20data.%20%20At%20i%3D%3D19%20set%20the%20high%20bits%20of%20clock%20sequence%20as%0A%2F%2F%20per%20rfc4122%2C%20sec.%204.1.5%0Afor(i%3D0%3Bi%3C36%3Bi%2B%2B)%7Bif(!uuid%5Bi%5D)%7Br%3D0%7CMath.random()*16%3Buuid%5Bi%5D%3Dchars%5Bi%3D%3D19%3Fr%260x3%7C0x8%3Ar%5D%3B%7D%7D%7Dreturn%20uuid.join('')%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Helper%20to%20get%20GUP%20Dynamic%20paywall%0A%20%20%20%20%20%20%20%20*%2F_getPaywallSegment%3Afunction%20_getPaywallSegment()%7Bvar%20gupInsights%3D%7B%7D%3Btry%7BgupInsights%3DJSON.parse(window.localStorage.getItem('user_insights'))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7Dif(gupInsights)%7Breturn%20ga_data.utils.getNested(gupInsights%2C'cam-experience'%2C'id')%7C%7C''%3B%7Delse%7Breturn''%3B%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fanalytics-element-behavior.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fanalytics-element-behavior.html.js%0A",
            "resourceBytes": 4961,
            "encodedBytes": 0,
            "unusedBytes": 3295,
            "children": [
              {
                "name": "gallium/behaviors/analytics-element-behavior.html_script_0.js",
                "resourceBytes": 3897,
                "unusedBytes": 3295
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 1064
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3Bwindow.gciAnalyticsUAID%3Dwindow.ga_data.site.uaid%2B'-TEALIUM-UW'%3Bvar%20tealiumScriptEl%3Ddocument.createElement('script')%3Bvar%20tealiumScriptSource%3Dga_data.site.gciAnalytics.scriptUrl%3Bif(tealiumScriptSource.indexOf('gcdn%2F')%3E-1)%7Bif(location.hostname.substr(0%2C3)%3D%3D%3D'eu.')%7BtealiumScriptSource%3DtealiumScriptSource.replace('www'%2C'eu')%3B%7Delse%20if(location.hostname.substr(0%2C9)%3D%3D%3D'uw-media.')%7BtealiumScriptSource%3DtealiumScriptSource.replace('www'%2C'uw-media')%3B%7D%7DtealiumScriptEl.src%3DtealiumScriptSource%3Bdocument.body.appendChild(tealiumScriptEl)%3BPolymer(%7Bis%3A'partner-gci-analytics'%2Cproperties%3A%7BcurrentUser%3A%7Btype%3AObject%2CreadOnly%3Atrue%7D%2CtrackPageView%3ABoolean%7D%2Cbehaviors%3A%5Bwindow.ga_data.behaviors.GalliumElement%2Cwindow.ga_data.behaviors.AnalyticsElementBehavior%5D%2CORIGINATING_MARKET_TABLE%3A%7B'independentmail'%3A'Anderson%20SC'%2C%2F%2FPAIM%0A'thetowntalk'%3A'Alexandria%20LA'%2C%2F%2FPALE%0A'postcrescent'%3A'Appleton%20WI'%2C%2F%2FPAPN%0A'reporternews'%3A'Abilene%20TX'%2C%2F%2FPARN%0A'citizen-times'%3A'Asheville%20NC'%2C%2F%2FPASH%0A'battlecreekenquirer'%3A'Battle%20Creek%20MI'%2C%2F%2FPBAC%0A'pressconnects'%3A'Binghamton%20MY'%2C%2F%2FPBIN%0A'kitsapsun'%3A'Bremerton%20WA'%2C%2F%2FPBKS%0A'blackmountainnews'%3A'Black%20Mountain%20NC'%2C%2F%2FPBMN%0A'floridatoday'%3A'Melbourne%20FL'%2C%2F%2FPBRE%0A'ucyrustelegraphforum'%3A'Bucyrus%20OH'%2C%2F%2FPBUC%0A'burlingtonfreepress'%3A'Burlington%20VT'%2C%2F%2FPBUR%0A'caller'%3A'Corpus%20Christi%20TX'%2C%2F%2FPCCT%0A'centralfloridafuture'%3A'Orlando%20FL'%2C%2F%2FPCFF%0A'courierpostonline'%3A'Cherry%20Hill%20NJ'%2C%2F%2FPCHH%0A'chillicothegazette'%3A'Chillicothe%20OH'%2C%2F%2FPCHI%0A'cincinnati'%3A'Cincinnati%20OH'%2C%2F%2FPCIN%0A'theleafchronicle'%3A'Clarksville%20TN'%2C%2F%2FPCLA%0A'mycentraljersey'%3A'Somerville%20NJ'%2C%2F%2FPCNJ%0A'coshoctontribune'%3A'Coshocton%20OH'%2C%2F%2FPCOS%0A'desmoinesregister'%3A'Des%20Moines%20IA'%2C%2F%2FPDEM%0A'dmjuice'%3A'Des%20Moines%20IA'%2C%2F%2FPDMJ%0A'freep'%3A'Detroit%20MI%20(Free%20Press)'%2C%2F%2FPDTF%0A'detroitnews'%3A'Detroit%20MI%20(Detroit%20News)'%2C%2F%2FPDTN%0A'stargazette'%3A'Elmira%20NY'%2C%2F%2FPELM%0A'courierpress'%3A'Camden%20MI'%2C%2F%2FPEVC%0A'fdlreporter'%3A'Fond%20du%20Lac%20WI'%2C%2F%2FPFDL%0A'thenews-messenger'%3A'Fremont%20OH'%2C%2F%2FPFRE%0A'fsunews'%3A'Tallahassee%20FL'%2C%2F%2FPFSU%0A'coloradoan'%3A'Fort%20Collins%20CO'%2C%2F%2FPFTC%0A'news-press'%3A'Fort%20Myers%20FL'%2C%2F%2FPFTM%0A'greenbaypressgazette'%3A'Green%20Bay%20WI'%2C%2F%2FPGRB%0A'greenvilleonline'%3A'Greenville%20SC'%2C%2F%2FPGRE%0A'greatfallstribune'%3A'Great%20Falls%20MT'%2C%2F%2FPGRF%0A'guampdn'%3A'Guam%20GU'%2C%2F%2FPGUA%0A'thehammontonnews'%3A'Hammonton%20NJ'%2C%2F%2FPHAM%0A'hattiesburgamerican'%3A'Hattiesburg%20MS'%2C%2F%2FPHAT%0A'thegleaner'%3A'Henderson%20KY'%2C%2F%2FPHGL%0A'hawkcentral'%3A'Iowa%20City%20IA'%2C%2F%2FPIHC%0A'indystar'%3A'Indianapolis%20IN'%2C%2F%2FPIND%0A'press-citizen'%3A'Iowa%20City%20IA'%2C%2F%2FPIOC%0A'ithacajournal'%3A'Ithaca%20NY'%2C%2F%2FPITH%0A'clarionledger'%3A'Jackson%20MS'%2C%2F%2FPJAM%0A'jacksonsun'%3A'Jackson%20TN'%2C%2F%2FPJAT%0A'knoxnews'%3A'Knoxville%20TN'%2C%2F%2FPKNS%0A'jconline'%3A'Lafayette%20IN'%2C%2F%2FPLAI%0A'theadvertiser'%3A'Lafayette%20LA'%2C%2F%2FPLAL%0A'lancastereaglegazette'%3A'Lancaster%20OH'%2C%2F%2FPLAN%0A'livingstondaily'%3A'Howell%20MI'%2C%2F%2FPLID%0A'courier-journal'%3A'Louisville%20KY'%2C%2F%2FPLOU%0A'lansingstatejournal'%3A'Lansing%20MI'%2C%2F%2FPLSJ%0A'htrnews'%3A'Manitowoc%20WI'%2C%2F%2FPMAC%0A'marshfieldnewsherald'%3A'Marshfield%20WI'%2C%2F%2FPMAD%0A'mansfieldnewsjournal'%3A'Mansfield%20OH'%2C%2F%2FPMAN%0A'marionstar'%3A'Marion%20OH'%2C%2F%2FPMAR%0A'commercialappeal'%3A'Memphis%20TN'%2C%2F%2FPMCA%0A'marconews'%3A'Marco%20Island%20FL'%2C%2F%2FPMIF%0A'jsonline'%3A'Milwaukee%20WI'%2C%2F%2FPMJS%0A'baxterbulletin'%3A'Mountain%20Home%20AR'%2C%2F%2FPMOH%0A'thenewsstar'%3A'Monroe%20LA'%2C%2F%2FPMON%0A'dailyrecord'%3A'Parsippany%20NJ'%2C%2F%2FPMOR%0A'montgomeryadvertiser'%3A'Montgomery%20AL'%2C%2F%2FPMOY%0A'thestarpress'%3A'Muncie%20IN'%2C%2F%2FPMUN%0A'dnj'%3A'Murfreesboro%20TN'%2C%2F%2FPMUR%0A'tennessean'%3A'Nashville%20TN'%2C%2F%2FPNAS%0A'naplesnews'%3A'Naples%20FL'%2C%2F%2FPNDN%0A'newarkadvocate'%3A'Newark%20OH'%2C%2F%2FPNEW%0A'northjersey'%3A'Woodland%20Park%20NM'%2C%2F%2FPNJM%0A'demingheadlight'%3A'Deming%20NM'%2C%2F%2FPNM1%0A'lcsun-news'%3A'Las%20Cruces%20NM'%2C%2F%2FPNM2%0A'scsun-news'%3A'Silver%20City%20NM'%2C%2F%2FPNM3%0A'currentargus'%3A'Carlsbad%20NM'%2C%2F%2FPNM5%0A'alamogordonews'%3A'Alamogordo%20NM'%2C%2F%2FPNM6%0A'daily-times'%3A'Farmington%20NM'%2C%2F%2FPNM7%0A'ruidosonews'%3A'Ruidoso%20NM'%2C%2F%2FPNM8%0A'hometownlife'%3A'Detroit%20MI%20(Detroit%20News)'%2C%2F%2FPOEN%0A'dailyworld'%3A'Opelousas%20LA'%2C%2F%2FPOPE%0A'thenorthwestern'%3A'Oshkosh%20WI'%2C%2F%2FPOSH%0A'packersnews'%3A'Green%20Bay%20WI'%2C%2F%2FPPAN%0A'desertsun'%3A'Palm%20Springs%20CA'%2C%2F%2FPPAS%0A'pnj'%3A'Pensacola%20FL'%2C%2F%2FPPEN%0A'eveningsun'%3A'Hanover%20PA'%2C%2F%2FPPES%0A'flipsidepa'%3A'York%20PA'%2C%2F%2FPPFS%0A'gametimepa'%3A'York%20PA'%2C%2F%2FPPGT%0A'azcentral'%3A'Phoenix%20AZ'%2C%2F%2FPPHX%0A'lavozarizona'%3A'Phoenix%20AZ'%2C%2F%2FPPHXS%0A'inyork'%3A'York%20PA'%2C%2F%2FPPIY%0A'ldnews'%3A'Lebanon%20PA'%2C%2F%2FPPLD%0A'portclintonnewsherald'%3A'Fremont%20OH'%2C%2F%2FPPOC%0A'thetimesherald'%3A'Port%20Huron%20MI'%2C%2F%2FPPOH%0A'poughkeepsiejournal'%3A'Poughkeepsie%20NY'%2C%2F%2FPPOU%0A'publicopiniononline'%3A'Chambersburg%20PA'%2C%2F%2FPPPO%0A'yorkdispatch'%3A'York%20PA%20(dispatch)'%2C%2F%2FPPYD%0A'ydr'%3A'York%20PA%20(daily%20record)'%2C%2F%2FPPYR%0A'rgj'%3A'Reno%20NV'%2C%2F%2FPREN%0A'pal-item'%3A'Richmond%20IN'%2C%2F%2FPRIC%0A'democratandchronicle'%3A'Rochester%20NY'%2C%2F%2FPROC%0A'redding'%3A'Redding%20CA'%2C%2F%2FPRRS%0A'reno'%3A'Reno%20NV'%2C%2F%2FPRTH%0A'statesmanjournal'%3A'Salem%20OR'%2C%2F%2FPSAL%0A'thecalifornian'%3A'Salinas%20CA'%2C%2F%2FPSAS%0A'gosanangelo'%3A'San%20Angelo%20TX'%2C%2F%2FPSAT%0A'delmarvanow'%3A'Salisbury%20MD'%2C%2F%2FPSAY%0A'sheboyganpress'%3A'Sheboygan%20WI'%2C%2F%2FPSHE%0A'shreveporttimes'%3A'Shreveport%20LA'%2C%2F%2FPSHR%0A'argusleader'%3A'Sioux%20Falls%20SD'%2C%2F%2FPSIF%0A'elsoldesalinas'%3A'Salinas%20CA'%2C%2F%2FPSOL%0A'news-leader'%3A'Springfield%20MO'%2C%2F%2FPSPR%0A'newsleader'%3A'Staunton%20VA'%2C%2F%2FPSTA%0A'sctimes'%3A'St.%20Cloud%20MN'%2C%2F%2FPSTC%0A'thespectrum'%3A'St.%20George%20UT'%2C%2F%2FPSTG%0A'stevenspointjournal'%3A'Stevens%20Point%20WI'%2C%2F%2FPSTP%0A'tallahassee'%3A'Tallahassee%20FL'%2C%2F%2FPTAL%0A'tcpalm'%3A'Stuart%20FL'%2C%2F%2FPTCN%0A'elpasotimes'%3A'El%20Paso%20TX'%2C%2F%2FPTX1%0A'elpasoymas'%3A'El%20Paso%20TX'%2C%2F%2FPTX2%0A'upstateparent'%3A'Greenville%20SC'%2C%2F%2FPUPP%0A'vcstar'%3A'Camarillo%20CA'%2C%2F%2FPVCS%0A'thedailyjournal'%3A'Vineland%20NJ'%2C%2F%2FPVIN%0A'visaliatimesdelta'%3A'Vistalia%20CA'%2C%2F%2FPVIT%0A'wausaudailyherald'%3A'Wausau%20WI'%2C%2F%2FPWAU%0A'delawarebeaches'%3A'Rehoboth%20Beach%20DE'%2C%2F%2FPWBC%0A'lohud'%3A'White%20Plains%20NY'%2C%2F%2FPWES%0A'delawareonline'%3A'Wilmington%20DE'%2C%2F%2FPWIL%0A'wisconsinrapidstribune'%3A'Wisconsin%20Rapids%20WI'%2C%2F%2FPWIR%0A'timesrecordnews'%3A'Wichita%20Falls%20TX'%2C%2F%2FPWTR%0A'wisfarmer'%3A'Stevens%20Point%20WI'%2C%2F%2FPWWF%0A'zanesvilletimesrecorder'%3A'Zanesville%20OH'%2C%2F%2FPZAN%0A'usatoday'%3A'USA%20TODAY'%2C%2F%2FUSAT%0A'usatnetwork'%3A'USA%20TODAY'%2F%2FUSNK%0A%7D%2Cready%3Afunction%20ready()%7Bdocument.addEventListener('gciAnalyticsReady'%2Cfunction(event)%7Bvar%20_this%3Dthis%3Bvar%20util%3Ddocument.createElement('util-analytics')%3Bif(this.trackPageView)%7Bthis.firePageView(util.getBaseRoute())%3B%7Dutil.getPageViewHistory().forEach(function(event)%7B_this.firePageView(event.route)%3B%7D)%3Butil.getEventHistory().forEach(function(event)%7B_this.fireCustomEvent(event.route%2Cevent.action)%3B%7D)%3Bwindow.addEventListener('ga-page-view'%2Cfunction(event)%7B_this.firePageView(event.detail.route)%3B%7D)%3Bwindow.addEventListener('ga-event'%2Cfunction(event)%7B_this.fireCustomEvent(event.detail.route%2Cevent.detail.action)%3B%7D)%3B%7D.bind(this))%3B%7D%2CfirePageView%3Afunction%20firePageView(route%2Caction)%7Bthis._fireEvent('pageview'%2Croute%2Caction)%3B%7D%2CfireCustomEvent%3Afunction%20fireCustomEvent(route%2Caction)%7Bthis._fireEvent('custom'%2Croute%2Caction)%3B%7D%2C_fireEvent%3Afunction%20_fireEvent(eventAlias%2Croute%2Caction)%7Bvar%20_this2%3Dthis%3Bvar%20trackMethod%3DeventAlias%3D%3D%3D'custom'%3F'link'%3A'view'%2CgciData%3Dthis._buildDataLayer(eventAlias%2Croute%2Caction)%3Bvar%20success%3Dfunction%20success(user)%7B_this2._setCurrentUser(user)%3Bwindow.gciAnalytics.user%3D_this2.currentUser%3Bwindow.gciAnalytics%5BtrackMethod%5D(gciData)%3B%7D%3Bvar%20failure%3Dfunction%20failure(error)%7Bwindow.gciAnalytics%5BtrackMethod%5D(gciData)%3B%2F%2F%20previously%20newrelic%0A%7D%3Bif(window.Gallium)%7BGallium.user.then(success%2Cfailure)%3B%7Delse%7Bwindow.addEventListener('ga-init'%2Cfunction()%7BGallium.user.then(success%2Cfailure)%3B%7D)%3B%7D%7D%2C_buildDataLayer%3Afunction%20_buildDataLayer(eventType%2Croute%2Caction)%7Bvar%20_action%3Daction%7C%7Croute.action%2Cssts%3Droute.ssts.split('%2F')%2Ccst%3Droute.cst.split('%2F')%2CvirtualPath%3Dvoid%200%2Creferrer%3D%7B%7D%2CinNetworkSites%3Dwindow.ga_data.site.contentSharingPattern%3Fwindow.ga_data.site.contentSharingPattern.slice(1%2C-1).split('%7C')%3A%5B%5D%2CcameFromInNetworkSite%3D!!inNetworkSites.find(function(s)%7Breturn%20s.indexOf(referrer.host)%3B%7D)%2CsessionStartUrl%3DsessionStorage.getItem('landingUrl')%2CdatePublished%3Dnew%20Date(route.datePublished)%3Bif(route.basePageType.indexOf('asset%20gallery')%3E-1%26%26route.galleryIndex%3E0)%7BeventType%3D'slideview'%3B%7Delse%20if(route.basePageType.indexOf('video-asset')%3E-1)%7BeventType%3D'videoview'%3B%7Dtry%7Bvar%20url%3Dnew%20URL(route.url)%3BvirtualPath%3Durl.pathname%3B%7Dcatch(e)%7BvirtualPath%3Dwindow.location.pathname%3B%7Dtry%7Breferrer%3Dnew%20URL(sessionStorage.getItem('prevUrl')%7C%7Cdocument.referrer)%3B%7Dcatch(e)%7Breferrer.pathname%3D'%2F'%2Bdocument.referrer.split('%2F').slice(3).join('%2F')%3Breferrer.host%3Ddocument.referrer.split('%2F')%5B2%5D%7C%7C''%3B%7Dvar%20dataLayer%3D%7B'client-action'%3A_action%2C'client-user-intents'%3Aga_data.intents%3Fga_data.intents.join('%2C')%3A''%2C'content-byline'%3Aroute.author%26%26route.author.length%3E0%3Froute.author.map(function(x)%7Breturn%20x.name.toLowerCase()%3B%7D).join('%2C')%3A''%2C'content-contributor-names'%3Aroute.author%26%26route.author.length%3E0%3Froute.author.map(function(x)%7Breturn%20x.name.toLowerCase()%3B%7D).join('%2C')%3A''%2C'content-cst-category'%3Acst%5B0%5D%2C%2F%2F%20CST%20Category%0A'content-cst-subcategory'%3Acst%5B1%5D%2C%2F%2F%20CST%20Subcategory%0A'content-cst-topic'%3Acst%5B2%5D%2C%2F%2F%20CST%20Topic%0A'content-headline'%3Aroute.headline%2C'content-id'%3Aroute.contentId%2C'content-keywords'%3Aroute.keywords%3Froute.keywords.join()%3Aroute.seoKeywords%2C'content-name'%3AvirtualPath%2C'content-photo-gallery-name'%3Aroute.galleryName%2C'content-photo-gallery-index'%3Aroute.galleryIndex%2C'content-ssts-section'%3Assts%5B0%5D%2C%2F%2F%20SSTS%20section%0A'content-ssts-subsection'%3Assts.slice(0%2C2).reduce(this._flattenSsts)%7C%7C''%2C%2F%2F%20SSTS%20sub-section%0A'content-ssts-topic'%3Assts.slice(0%2C3).reduce(this._flattenSsts)%7C%7C''%2C%2F%2F%20SSTS%20topic%0A'content-ssts-subtopic'%3Assts.reduce(this._flattenSsts)%7C%7C''%2C%2F%2F%20SSTS%20sub-topic%0A'content-story-highlights'%3Adocument.querySelector('story-highlights')%3F'story%20highlights%7Cnumheadlines%3D'%2Bdocument.querySelector('story-highlights%20%3E%20ul').children.length%3A'no%20story%20highlights'%2C'content-title'%3Aroute.name%2C'content-type'%3Aroute.basePageType%2C'event-type'%3AeventType%2C'event-universal-application-instance-identifier'%3A''%2Bwindow.ga_data.site.uaid%2C'event-paywall-state'%3Afunction()%7Bvar%20contentName%3Dwindow.location.pathname%2CeventPaywallState%3D''%3Bif(contentName.indexOf('restricted')%3E-1)%7BeventPaywallState%3D'premium'%3B%7Delse%20if(contentName.indexOf('get-access')%3E-1)%7BeventPaywallState%3D'metered'%3B%7Dif(eventPaywallState.length%3E0)%7BeventPaywallState%3D'iframe_'%2BeventPaywallState%2B'_roadblock'%3B%7Dreturn%20eventPaywallState%3B%7D()%2C'page-domain'%3Awindow.location.host%2C'page-experience-type'%3Awindow.Gallium.isMobile%3F'mobileweb'%3A'desktop'%2C'page-experience-version'%3Aga_data.utils.getUrlParamValue('sitelabel')%7C%7Cga_data.intents.indexOf('variant-group%3Astreamlined')%3E-1%3F'universal-streamlined'%3A'universal'%2C'page-full-url'%3Adocument.location.href%2C'page-has-video'%3Aroute.includesVideo%3F'yes'%3A'no'%2C'page-previous-content-name'%3AsessionStartUrl%7C%7CcameFromInNetworkSite%3Freferrer.pathname%3A''%2C'page-previous-full-url'%3Aroute.actionUrl%7C%7C''%7D%3Bif(!isNaN(datePublished.getMonth()))%7BdataLayer%5B'content-date-published'%5D%3DdatePublished.getFullYear()%2B'-'%2B('0'%2B(datePublished.getMonth()%2B1)).slice(-2)%2B'-'%2B('0'%2BdatePublished.getDate()).slice(-2)%2B'%20'%2B('0'%2BdatePublished.getHours()).slice(-2)%2B'%3A'%2B('0'%2BdatePublished.getMinutes()).slice(-2)%3B%7Dif(ga_data.route.cam)%7BdataLayer%5B'content-protection-state'%5D%3Dga_data.route.cam.contentProtectionState%3B%7Dif(ga_data.route.sourceOrganization%26%26ga_data.route.sourceOrganization.name)%7BdataLayer%5B'content-source'%5D%3Dga_data.route.sourceOrganization.name%3B%7Delse%7BdataLayer%5B'content-source'%5D%3Droute.url%26%26route.url.length%3Fthis._getOriginatingMarket(route.url)%3A''%3B%2F%2FOriginating%20Market%20from%20table%20lookup%20by%20canonical%20url%20domain%0A%7DdataLayer%5B'page-oembed'%5D%3Dthis._getOembedAnalyticsValue(ga_data)%3Bif(_action)%7BdataLayer%5B'page-refreshed'%5D%3D_action.indexOf('refresh%3A')%3D%3D0%3F_action%3A''%3B%7Dreturn%20dataLayer%3B%7D%2C_getOembedAnalyticsValue%3Afunction%20_getOembedAnalyticsValue(ga_data)%7Bvar%20oembedCount%3D0%3Bvar%20oembedValue%3D''%3Bif(ga_data.oembed%26%26ga_data.oembed.length)%7BoembedCount%3Dga_data.oembed.length%3BoembedValue%3D''%2Bga_data.oembed.map(function(o%2Ck)%7Breturn%20k%2B1%2B'%2C'%2Bo%3B%7D).join('%7C')%3B%7Dif(ga_data.route.thingsToDoPresent)%7BoembedCount%2B%2B%3B%2F%2F%20this%20assumes%20ThingsToDoModule%20will%20be%20at%20the%20end%20of%20the%20evar%20string.%20If%20that%20is%20no%20longer%20the%20case%20then%20it'll%20need%20to%20be%20adjusted%0AoembedValue%3D''%2BoembedValue%2B(oembedValue.length%3E0%3F'%7C'%3A'')%2BoembedCount%2B'%2CThingsToDoModule'%3B%7Dif(oembedCount%3E0)return%20oembedCount%2B'%7C'%2BoembedValue%3B%7D%2C_getOriginatingMarket%3Afunction%20_getOriginatingMarket(url)%7Bvar%20domain%3Durl.match(%2F%5E((http%5Bs%5D%3F%7Cftp)%3A%5C%2F)%3F%5C%2F%3F(%5B%5E%3A%5C%2F%5Cs%5D%2B)((%5C%2F%5Cw%2B)*%5C%2F)(%5B%5Cw%5C-%5C.%5D%2B%5B%5E%23%3F%5Cs%5D%2B)(.*)%3F(%23%5B%5Cw%5C-%5D%2B)%3F%24%2Fi)%5B3%5D.split('.')%5B1%5D%3Breturn%20domain.length%26%26this.ORIGINATING_MARKET_TABLE%5Bdomain%5D%26%26this.ORIGINATING_MARKET_TABLE%5Bdomain%5D.length%3Fthis.ORIGINATING_MARKET_TABLE%5Bdomain%5D%3A''%3B%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-gci-analytics%2Fpartner-gci-analytics.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-gci-analytics%2Fpartner-gci-analytics.html.js%0A",
            "resourceBytes": 12383,
            "encodedBytes": 0,
            "unusedBytes": 6301,
            "children": [
              {
                "name": "elements/partner/partner-gci-analytics/partner-gci-analytics.html_script_0.js",
                "resourceBytes": 12096,
                "unusedBytes": 6301
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 287
              }
            ]
          },
          {
            "name": "data:text/javascript;charset=utf-8,'use%20strict'%3BPolymer(%7Bis%3A'util-section-color'%2Cproperties%3A%7B_activeSection%3A%7Btype%3AString%2Cvalue%3A''%7D%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this%3Dthis%3B%2F%2F%20pull%20the%20section%20color%20map%20from%20config%0Athis._siteSectionsMapped%3Dthis._mapSectionColors(window.ga_data.site.sectionColors)%3B%2F%2F%20If%20we%20have%20a%20config'd%20section%20color%20map%3A%20then%20we'll%20do%20the%20new%20way%20of%20handling%20them%0Aif(Object.keys(this._siteSectionsMapped).length)%7Bthis.setCssVariableBasedOnDynamicSectionMap()%3B%2F%2F%20If%20we%20don't%20have%20that%20section%20color%20map%20then%20we%20need%20to%20maybe%20handle%20it%20the%20old%20way%20(if%20USAT)%0A%7Delse%7Bif(window.ga_data.site.siteId%3D%3D%3D1)%7Bthis.setCssVariableBasedOnSection()%3B%2F%2F%20listen%20for%20further%20page%20changes%0Awindow.addEventListener('ga-page-view'%2Cfunction(event)%7B_this.setCssVariableBasedOnSection()%3B%7D)%3B%7D%7D%7D%2C_mapSectionColors%3Afunction%20_mapSectionColors(sectionColorConfigString)%7Bvar%20sectionsMapped%3D%7B%7D%3Bif(sectionColorConfigString)%7Bvar%20splitSections%3DsectionColorConfigString.split('%2C')%3Bfor(var%20i%3D0%3Bi%3CsplitSections.length%3Bi%2B%2B)%7Bif(splitSections%5Bi%5D.indexOf('%3A')%3E-1)%7Bvar%20sectionAndColor%3DsplitSections%5Bi%5D.split('%3A')%3Bif(sectionAndColor%5B0%5D.length%26%26sectionAndColor%5B1%5D.length)%7BsectionsMapped%5BsectionAndColor%5B0%5D.trim().toLowerCase()%5D%3DsectionAndColor%5B1%5D.trim()%3B%7D%7D%7D%7Dreturn%20sectionsMapped%3B%7D%2C%2F*%20New%20method%20of%20setting%20dynamic%20section%20colors%20*%2FsetCssVariableBasedOnDynamicSectionMap%3Afunction%20setCssVariableBasedOnDynamicSectionMap()%7Bvar%20section%3Dga_data.route.sectionName.toLowerCase()%3Bif(section!%3D%3Dthis._activeSection)%7Bthis._activeSection%3Dsection%3Bvar%20themeColor%3Dthis._siteSectionsMapped%5Bsection%5D%3B%2F%2F%20if%20no%20theme%20color%20exists%20for%20section%20or%20if%20the%20value%20is%20not%20a%20hex%20color%20then%20we%20go%20to%20a%20default%20grey%0Aif(!themeColor%7C%7CthemeColor.indexOf('%23')%3D%3D-1)%7Bvar%20elementStyles%3Dwindow.getComputedStyle(this)%3BthemeColor%3DelementStyles.getPropertyValue('--color-current-site')%3B%7DPolymer.updateStyles(%7B'--color-active-section'%3AthemeColor%7D)%3B%7D%7D%2C%2F*%20Handle%20changing%20color%20when%20user%20navigates%20to%20a%20new%20section.%20THIS%20IS%20AN%20OLD%20METHOD%20THAT%20WILL%20BE%20DEPRECATED%20*%2FsetCssVariableBasedOnSection%3Afunction%20setCssVariableBasedOnSection()%7Bvar%20section%3Dga_data.route.sectionName.toLowerCase()%3Bif(section!%3D%3Dthis._activeSection)%7Bthis._activeSection%3Dsection%3Bvar%20cssVar%3D'--color-'%2Bsection%2CelementStyles%3Dwindow.getComputedStyle(this)%2CthemeColor%3DelementStyles.getPropertyValue(cssVar)%3B%2F%2F%20if%20no%20theme%20color%20exists%20for%20section%20then%20we%20go%20to%20the%20current%20site%20color%0Aif(themeColor%26%26themeColor.length%3C%3D0)%7BthemeColor%3DelementStyles.getPropertyValue('--color-current-site')%3B%7DPolymer.updateStyles(%7B'--color-active-section'%3AthemeColor%7D)%3B%7D%7D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-section-color%2Futil-section-color.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-section-color%2Futil-section-color.html.js%0A",
            "resourceBytes": 2774,
            "encodedBytes": 0,
            "unusedBytes": 2158,
            "children": [
              {
                "name": "elements/util/util-section-color/util-section-color.html_script_0.js",
                "resourceBytes": 2505,
                "unusedBytes": 2158
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 269
              }
            ]
          },
          {
            "name": "https://eu.palmbeachpost.com/gcdn/dcjs/prod/main.js",
            "resourceBytes": 54103,
            "encodedBytes": 17601,
            "unusedBytes": 43385
          }
        ]
      }
    },
    "accesskeys": {
      "id": "accesskeys",
      "title": "`[accesskey]` values are unique",
      "description": "Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more about access keys](https://dequeuniversity.com/rules/axe/4.11/accesskeys).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-allowed-attr": {
      "id": "aria-allowed-attr",
      "title": "`[aria-*]` attributes match their roles",
      "description": "Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn how to match ARIA attributes to their roles](https://dequeuniversity.com/rules/axe/4.11/aria-allowed-attr).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-allowed-role": {
      "id": "aria-allowed-role",
      "title": "Uses ARIA roles only on compatible elements",
      "description": "Many HTML elements can only be assigned certain ARIA roles. Using ARIA roles where they are not allowed can interfere with the accessibility of the web page. [Learn more about ARIA roles](https://dequeuniversity.com/rules/axe/4.11/aria-allowed-role).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-command-name": {
      "id": "aria-command-name",
      "title": "`button`, `link`, and `menuitem` elements have accessible names",
      "description": "When an element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to make command elements more accessible](https://dequeuniversity.com/rules/axe/4.11/aria-command-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-conditional-attr": {
      "id": "aria-conditional-attr",
      "title": "ARIA attributes are used as specified for the element's role",
      "description": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.11/aria-conditional-attr).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-deprecated-role": {
      "id": "aria-deprecated-role",
      "title": "Deprecated ARIA roles were not used",
      "description": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.11/aria-deprecated-role).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-dialog-name": {
      "id": "aria-dialog-name",
      "title": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names.",
      "description": "ARIA dialog elements without accessible names may prevent screen readers users from discerning the purpose of these elements. [Learn how to make ARIA dialog elements more accessible](https://dequeuniversity.com/rules/axe/4.11/aria-dialog-name).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-hidden-body": {
      "id": "aria-hidden-body",
      "title": "`[aria-hidden=\"true\"]` is not present on the document `<body>`",
      "description": "Assistive technologies, like screen readers, work inconsistently when `aria-hidden=\"true\"` is set on the document `<body>`. [Learn how `aria-hidden` affects the document body](https://dequeuniversity.com/rules/axe/4.11/aria-hidden-body).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-hidden-focus": {
      "id": "aria-hidden-focus",
      "title": "`[aria-hidden=\"true\"]` elements do not contain focusable descendents",
      "description": "Focusable descendents within an `[aria-hidden=\"true\"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn how `aria-hidden` affects focusable elements](https://dequeuniversity.com/rules/axe/4.11/aria-hidden-focus).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-input-field-name": {
      "id": "aria-input-field-name",
      "title": "ARIA input fields have accessible names",
      "description": "When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about input field labels](https://dequeuniversity.com/rules/axe/4.11/aria-input-field-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-meter-name": {
      "id": "aria-meter-name",
      "title": "ARIA `meter` elements have accessible names",
      "description": "When a meter element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `meter` elements](https://dequeuniversity.com/rules/axe/4.11/aria-meter-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-progressbar-name": {
      "id": "aria-progressbar-name",
      "title": "ARIA `progressbar` elements have accessible names",
      "description": "When a `progressbar` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to label `progressbar` elements](https://dequeuniversity.com/rules/axe/4.11/aria-progressbar-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-prohibited-attr": {
      "id": "aria-prohibited-attr",
      "title": "Elements use only permitted ARIA attributes",
      "description": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.11/aria-prohibited-attr).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-required-attr": {
      "id": "aria-required-attr",
      "title": "`[role]`s have all required `[aria-*]` attributes",
      "description": "Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more about roles and required attributes](https://dequeuniversity.com/rules/axe/4.11/aria-required-attr).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-required-children": {
      "id": "aria-required-children",
      "title": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children.",
      "description": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more about roles and required children elements](https://dequeuniversity.com/rules/axe/4.11/aria-required-children).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-required-parent": {
      "id": "aria-required-parent",
      "title": "`[role]`s are contained by their required parent element",
      "description": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more about ARIA roles and required parent element](https://dequeuniversity.com/rules/axe/4.11/aria-required-parent).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-roles": {
      "id": "aria-roles",
      "title": "`[role]` values are valid",
      "description": "ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more about valid ARIA roles](https://dequeuniversity.com/rules/axe/4.11/aria-roles).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-text": {
      "id": "aria-text",
      "title": "Elements with the `role=text` attribute do not have focusable descendents.",
      "description": "Adding `role=text` around a text node split by markup enables VoiceOver to treat it as one phrase, but the element's focusable descendents will not be announced. [Learn more about the `role=text` attribute](https://dequeuniversity.com/rules/axe/4.11/aria-text).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-toggle-field-name": {
      "id": "aria-toggle-field-name",
      "title": "ARIA toggle fields have accessible names",
      "description": "When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about toggle fields](https://dequeuniversity.com/rules/axe/4.11/aria-toggle-field-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-tooltip-name": {
      "id": "aria-tooltip-name",
      "title": "ARIA `tooltip` elements have accessible names",
      "description": "When a tooltip element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `tooltip` elements](https://dequeuniversity.com/rules/axe/4.11/aria-tooltip-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-treeitem-name": {
      "id": "aria-treeitem-name",
      "title": "ARIA `treeitem` elements have accessible names",
      "description": "When a `treeitem` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about labeling `treeitem` elements](https://dequeuniversity.com/rules/axe/4.11/aria-treeitem-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "aria-valid-attr-value": {
      "id": "aria-valid-attr-value",
      "title": "`[aria-*]` attributes have valid values",
      "description": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more about valid values for ARIA attributes](https://dequeuniversity.com/rules/axe/4.11/aria-valid-attr-value).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "aria-valid-attr": {
      "id": "aria-valid-attr",
      "title": "`[aria-*]` attributes are valid and not misspelled",
      "description": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more about valid ARIA attributes](https://dequeuniversity.com/rules/axe/4.11/aria-valid-attr).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "button-name": {
      "id": "button-name",
      "title": "Buttons have an accessible name",
      "description": "When a button doesn't have an accessible name, screen readers announce it as \"button\", making it unusable for users who rely on screen readers. [Learn how to make buttons more accessible](https://dequeuniversity.com/rules/axe/4.11/button-name).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "bypass": {
      "id": "bypass",
      "title": "The page contains a heading, skip link, or landmark region",
      "description": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more about bypass blocks](https://dequeuniversity.com/rules/axe/4.11/bypass).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "color-contrast": {
      "id": "color-contrast",
      "title": "Background and foreground colors have a sufficient contrast ratio",
      "description": "Low-contrast text is difficult or impossible for many users to read. [Learn how to provide sufficient color contrast](https://dequeuniversity.com/rules/axe/4.11/color-contrast).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "definition-list": {
      "id": "definition-list",
      "title": "`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.",
      "description": "When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.11/definition-list).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "dlitem": {
      "id": "dlitem",
      "title": "Definition list items are wrapped in `<dl>` elements",
      "description": "Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn how to structure definition lists correctly](https://dequeuniversity.com/rules/axe/4.11/dlitem).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "document-title": {
      "id": "document-title",
      "title": "Document has a `<title>` element",
      "description": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more about document titles](https://dequeuniversity.com/rules/axe/4.11/document-title).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "duplicate-id-aria": {
      "id": "duplicate-id-aria",
      "title": "ARIA IDs are unique",
      "description": "The value of an ARIA ID must be unique to prevent other instances from being overlooked by assistive technologies. [Learn how to fix duplicate ARIA IDs](https://dequeuniversity.com/rules/axe/4.11/duplicate-id-aria).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "empty-heading": {
      "id": "empty-heading",
      "title": "All heading elements contain content.",
      "description": "A heading with no content or inaccessible text prevent screen reader users from accessing information on the page's structure. [Learn more about headings](https://dequeuniversity.com/rules/axe/4.11/empty-heading).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "form-field-multiple-labels": {
      "id": "form-field-multiple-labels",
      "title": "No form fields have multiple labels",
      "description": "Form fields with multiple labels can be confusingly announced by assistive technologies like screen readers which use either the first, the last, or all of the labels. [Learn how to use form labels](https://dequeuniversity.com/rules/axe/4.11/form-field-multiple-labels).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "frame-title": {
      "id": "frame-title",
      "title": "`<frame>` or `<iframe>` elements have a title",
      "description": "Screen reader users rely on frame titles to describe the contents of frames. [Learn more about frame titles](https://dequeuniversity.com/rules/axe/4.11/frame-title).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "heading-order": {
      "id": "heading-order",
      "title": "Heading elements are not in a sequentially-descending order",
      "description": "Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. [Learn more about heading order](https://dequeuniversity.com/rules/axe/4.11/heading-order).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "1-0-H5",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,1,DIV,0,UI-LABEL-BUCKET,a,#document-fragment,1,DIV,0,A,0,H5",
              "selector": "div#container > a.has-padding > h5.label-news",
              "boundingRect": {
                "top": 1416,
                "bottom": 1436,
                "left": 0,
                "right": 193,
                "width": 193,
                "height": 20
              },
              "snippet": "<h5 class=\"label-news\">",
              "nodeLabel": "Most Recent Videos",
              "explanation": "Fix any of the following:\n  Heading order invalid"
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "impact": "moderate",
          "tags": [
            "cat.semantics",
            "best-practice"
          ]
        }
      }
    },
    "html-has-lang": {
      "id": "html-has-lang",
      "title": "`<html>` element has a `[lang]` attribute",
      "description": "If a page doesn't specify a `lang` attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.11/html-has-lang).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "html-lang-valid": {
      "id": "html-lang-valid",
      "title": "`<html>` element has a valid value for its `[lang]` attribute",
      "description": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.11/html-lang-valid).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "html-xml-lang-mismatch": {
      "id": "html-xml-lang-mismatch",
      "title": "`<html>` element has an `[xml:lang]` attribute with the same base language as the `[lang]` attribute.",
      "description": "If the webpage does not specify a consistent language, then the screen reader might not announce the page's text correctly. [Learn more about the `lang` attribute](https://dequeuniversity.com/rules/axe/4.11/html-xml-lang-mismatch).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "identical-links-same-purpose": {
      "id": "identical-links-same-purpose",
      "title": "Identical links have the same purpose.",
      "description": "Links with the same destination should have the same description, to help users understand the link's purpose and decide whether to follow it. [Learn more about identical links](https://dequeuniversity.com/rules/axe/4.11/identical-links-same-purpose).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "image-alt": {
      "id": "image-alt",
      "title": "Image elements do not have `[alt]` attributes",
      "description": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.11/image-alt).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "1-1-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1766,
                "bottom": 1836,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8973752100…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-2-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1766,
                "bottom": 1836,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-3-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1766,
                "bottom": 1836,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8973358900…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-4-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1995,
                "bottom": 2065,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8973025300…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-5-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1995,
                "bottom": 2065,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8973041700…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-6-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1995,
                "bottom": 2065,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/06/NGAG/890…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-7-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,6,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1999,
                "bottom": 2069,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8971891300…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-8-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,6,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1999,
                "bottom": 2069,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8971947700…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-9-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,6,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1999,
                "bottom": 2069,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/wochit/thumbnails/89714825007…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-10-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2418,
                "bottom": 2488,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-11-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2418,
                "bottom": 2488,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/NPPP/896…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-12-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2418,
                "bottom": 2488,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/21/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-13-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2647,
                "bottom": 2717,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/10/17/PNAS/867…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-14-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2647,
                "bottom": 2717,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/NPPP/896…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-15-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2647,
                "bottom": 2717,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/2019/05/23/NPPP/ghows_image-LK-9971f…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-16-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,6,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2651,
                "bottom": 2721,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/NPPP/896…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-17-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,6,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2651,
                "bottom": 2721,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/21/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-18-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,6,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2651,
                "bottom": 2721,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2023/10/17/NPPP/712…\">",
              "nodeLabel": "a.container-link > div.container > img",
              "explanation": "Fix any of the following:\n  Element does not have an alt attribute\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Element has no title attribute\n  Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "impact": "critical",
          "tags": [
            "cat.text-alternatives",
            "wcag2a",
            "wcag111",
            "section508",
            "section508.22.a",
            "TTv5",
            "TT7.a",
            "TT7.b",
            "EN-301-549",
            "EN-9.1.1.1",
            "ACT",
            "RGAAv4",
            "RGAA-1.1.1"
          ]
        }
      }
    },
    "image-redundant-alt": {
      "id": "image-redundant-alt",
      "title": "Image elements do not have `[alt]` attributes that are redundant text.",
      "description": "Informative elements should aim for short, descriptive alternative text. Alternative text that is exactly the same as the text adjacent to the link or image is potentially confusing for screen reader users, because the text will be read twice. [Learn more about the `alt` attribute](https://dequeuniversity.com/rules/axe/4.11/image-redundant-alt).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "input-button-name": {
      "id": "input-button-name",
      "title": "Input buttons have discernible text.",
      "description": "Adding discernable and accessible text to input buttons may help screen reader users understand the purpose of the input button. [Learn more about input buttons](https://dequeuniversity.com/rules/axe/4.11/input-button-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "input-image-alt": {
      "id": "input-image-alt",
      "title": "`<input type=\"image\">` elements have `[alt]` text",
      "description": "When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn about input image alt text](https://dequeuniversity.com/rules/axe/4.11/input-image-alt).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "label-content-name-mismatch": {
      "id": "label-content-name-mismatch",
      "title": "Elements with visible text labels do not have matching accessible names.",
      "description": "Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. [Learn more about accessible names](https://dequeuniversity.com/rules/axe/4.11/label-content-name-mismatch).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "1-19-A",
              "path": "1,HTML,1,BODY,12,DIV,1,DIV,0,DIV,0,DIV,0,DIV,0,DIV,3,DIV,3,A",
              "selector": "div#onetrust-group-container > div#onetrust-policy > div#onetrust-policy-text > a.ot-cookie-policy-link",
              "boundingRect": {
                "top": 346,
                "bottom": 399,
                "left": 32,
                "right": 351,
                "width": 318,
                "height": 53
              },
              "snippet": "<a class=\"ot-cookie-policy-link\" href=\"/privacy\" aria-label=\"More information about your privacy, opens in a new tab\" rel=\"noopener noreferrer\" target=\"_blank\">",
              "nodeLabel": "For more information about how we use your data visit our Privacy Policy.",
              "explanation": "Fix any of the following:\n  Text inside the element is not included in the accessible name"
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "impact": "serious",
          "tags": [
            "cat.semantics",
            "wcag21a",
            "wcag253",
            "EN-301-549",
            "EN-9.2.5.3",
            "RGAAv4",
            "RGAA-6.1.5",
            "experimental"
          ]
        }
      }
    },
    "label": {
      "id": "label",
      "title": "Form elements have associated labels",
      "description": "Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more about form element labels](https://dequeuniversity.com/rules/axe/4.11/label).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "landmark-one-main": {
      "id": "landmark-one-main",
      "title": "Document has a main landmark.",
      "description": "One main landmark helps screen reader users navigate a web page. [Learn more about landmarks](https://dequeuniversity.com/rules/axe/4.11/landmark-one-main).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "link-name": {
      "id": "link-name",
      "title": "Links have a discernible name",
      "description": "Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn how to make links accessible](https://dequeuniversity.com/rules/axe/4.11/link-name).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "link-in-text-block": {
      "id": "link-in-text-block",
      "title": "Links are distinguishable without relying on color.",
      "description": "Low-contrast text is difficult or impossible for many users to read. Link text that is discernible improves the experience for users with low vision. [Learn how to make links distinguishable](https://dequeuniversity.com/rules/axe/4.11/link-in-text-block).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "list": {
      "id": "list",
      "title": "Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).",
      "description": "Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.11/list).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "listitem": {
      "id": "listitem",
      "title": "List items (`<li>`) are contained within `<ul>`, `<ol>` or `<menu>` parent elements",
      "description": "Screen readers require list items (`<li>`) to be contained within a parent `<ul>`, `<ol>` or `<menu>` to be announced properly. [Learn more about proper list structure](https://dequeuniversity.com/rules/axe/4.11/listitem).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "meta-refresh": {
      "id": "meta-refresh",
      "title": "The document does not use `<meta http-equiv=\"refresh\">`",
      "description": "Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more about the refresh meta tag](https://dequeuniversity.com/rules/axe/4.11/meta-refresh).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "meta-viewport": {
      "id": "meta-viewport",
      "title": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5.",
      "description": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more about the viewport meta tag](https://dequeuniversity.com/rules/axe/4.11/meta-viewport).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "object-alt": {
      "id": "object-alt",
      "title": "`<object>` elements have alternate text",
      "description": "Screen readers cannot translate non-text content. Adding alternate text to `<object>` elements helps screen readers convey meaning to users. [Learn more about alt text for `object` elements](https://dequeuniversity.com/rules/axe/4.11/object-alt).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "select-name": {
      "id": "select-name",
      "title": "Select elements have associated label elements.",
      "description": "Form elements without effective labels can create frustrating experiences for screen reader users. [Learn more about the `select` element](https://dequeuniversity.com/rules/axe/4.11/select-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "skip-link": {
      "id": "skip-link",
      "title": "Skip links are not focusable.",
      "description": "Including a skip link can help users skip to the main content to save time. [Learn more about skip links](https://dequeuniversity.com/rules/axe/4.11/skip-link).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "1-20-A",
              "path": "1,HTML,1,BODY,1,A",
              "selector": "body.partner-placements-inactive > a#skipToMain",
              "boundingRect": {
                "top": 10,
                "bottom": 30,
                "left": -999,
                "right": -843,
                "width": 156,
                "height": 20
              },
              "snippet": "<a id=\"skipToMain\" href=\"#mainContentSection\">",
              "nodeLabel": "Skip to main content",
              "explanation": "Fix any of the following:\n  No skip link target"
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "impact": "moderate",
          "tags": [
            "cat.keyboard",
            "best-practice",
            "RGAAv4",
            "RGAA-12.7.1"
          ]
        }
      }
    },
    "tabindex": {
      "id": "tabindex",
      "title": "No element has a `[tabindex]` value greater than 0",
      "description": "A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more about the `tabindex` attribute](https://dequeuniversity.com/rules/axe/4.11/tabindex).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "table-duplicate-name": {
      "id": "table-duplicate-name",
      "title": "Tables have different content in the summary attribute and `<caption>`.",
      "description": "The summary attribute should describe the table structure, while `<caption>` should have the onscreen title. Accurate table mark-up helps users of screen readers. [Learn more about summary and caption](https://dequeuniversity.com/rules/axe/4.11/table-duplicate-name).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "table-fake-caption": {
      "id": "table-fake-caption",
      "title": "Tables use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption.",
      "description": "Screen readers have features to make navigating tables easier. Ensuring that tables use the actual caption element instead of cells with the `[colspan]` attribute may improve the experience for screen reader users. [Learn more about captions](https://dequeuniversity.com/rules/axe/4.11/table-fake-caption).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "target-size": {
      "id": "target-size",
      "title": "Touch targets have sufficient size and spacing.",
      "description": "Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. [Learn more about touch targets](https://dequeuniversity.com/rules/axe/4.11/target-size).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "td-has-header": {
      "id": "td-has-header",
      "title": "`<td>` elements in a large `<table>` have one or more table headers.",
      "description": "Screen readers have features to make navigating tables easier. Ensuring that `<td>` elements in a large table (3 or more cells in width and height) have an associated table header may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.11/td-has-header).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "td-headers-attr": {
      "id": "td-headers-attr",
      "title": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table.",
      "description": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more about the `headers` attribute](https://dequeuniversity.com/rules/axe/4.11/td-headers-attr).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "th-has-data-cells": {
      "id": "th-has-data-cells",
      "title": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` have data cells they describe.",
      "description": "Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more about table headers](https://dequeuniversity.com/rules/axe/4.11/th-has-data-cells).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "valid-lang": {
      "id": "valid-lang",
      "title": "`[lang]` attributes have a valid value",
      "description": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn how to use the `lang` attribute](https://dequeuniversity.com/rules/axe/4.11/valid-lang).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "video-caption": {
      "id": "video-caption",
      "title": "`<video>` elements contain a `<track>` element with `[kind=\"captions\"]`",
      "description": "When a video provides a caption it is easier for deaf and hearing impaired users to access its information. [Learn more about video captions](https://dequeuniversity.com/rules/axe/4.11/video-caption).",
      "score": null,
      "scoreDisplayMode": "notApplicable"
    },
    "custom-controls-labels": {
      "id": "custom-controls-labels",
      "title": "Custom controls have associated labels",
      "description": "Custom interactive controls have associated labels, provided by aria-label or aria-labelledby. [Learn more about custom controls and labels](https://developer.chrome.com/docs/lighthouse/accessibility/custom-controls-labels/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "custom-controls-roles": {
      "id": "custom-controls-roles",
      "title": "Custom controls have ARIA roles",
      "description": "Custom interactive controls have appropriate ARIA roles. [Learn how to add roles to custom controls](https://developer.chrome.com/docs/lighthouse/accessibility/custom-control-roles/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "focus-traps": {
      "id": "focus-traps",
      "title": "User focus is not accidentally trapped in a region",
      "description": "A user can tab into and out of any control or region without accidentally trapping their focus. [Learn how to avoid focus traps](https://developer.chrome.com/docs/lighthouse/accessibility/focus-traps/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "focusable-controls": {
      "id": "focusable-controls",
      "title": "Interactive controls are keyboard focusable",
      "description": "Custom interactive controls are keyboard focusable and display a focus indicator. [Learn how to make custom controls focusable](https://developer.chrome.com/docs/lighthouse/accessibility/focusable-controls/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "interactive-element-affordance": {
      "id": "interactive-element-affordance",
      "title": "Interactive elements indicate their purpose and state",
      "description": "Interactive elements, such as links and buttons, should indicate their state and be distinguishable from non-interactive elements. [Learn how to decorate interactive elements with affordance hints](https://developer.chrome.com/docs/lighthouse/accessibility/interactive-element-affordance/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "logical-tab-order": {
      "id": "logical-tab-order",
      "title": "The page has a logical tab order",
      "description": "Tabbing through the page follows the visual layout. Users cannot focus elements that are offscreen. [Learn more about logical tab ordering](https://developer.chrome.com/docs/lighthouse/accessibility/logical-tab-order/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "managed-focus": {
      "id": "managed-focus",
      "title": "The user's focus is directed to new content added to the page",
      "description": "If new content, such as a dialog, is added to the page, the user's focus is directed to it. [Learn how to direct focus to new content](https://developer.chrome.com/docs/lighthouse/accessibility/managed-focus/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "offscreen-content-hidden": {
      "id": "offscreen-content-hidden",
      "title": "Offscreen content is hidden from assistive technology",
      "description": "Offscreen content is hidden with display: none or aria-hidden=true. [Learn how to properly hide offscreen content](https://developer.chrome.com/docs/lighthouse/accessibility/offscreen-content-hidden/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "use-landmarks": {
      "id": "use-landmarks",
      "title": "HTML5 landmark elements are used to improve navigation",
      "description": "Landmark elements (`<main>`, `<nav>`, etc.) are used to improve the keyboard navigation of the page for assistive technology. [Learn more about landmark elements](https://developer.chrome.com/docs/lighthouse/accessibility/use-landmarks/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "visual-order-follows-dom": {
      "id": "visual-order-follows-dom",
      "title": "Visual order on the page follows DOM order",
      "description": "DOM order matches the visual order, improving navigation for assistive technology. [Learn more about DOM and visual ordering](https://developer.chrome.com/docs/lighthouse/accessibility/visual-order-follows-dom/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "total-byte-weight": {
      "id": "total-byte-weight",
      "title": "Avoids enormous network payloads",
      "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
      "score": 1,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 1468095,
      "numericUnit": "byte",
      "displayValue": "Total size was 1,434 KiB",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "label": "Transfer Size"
          }
        ],
        "items": [
          {
            "url": "https://eu.palmbeachpost.com/?width=420&quality=50",
            "totalBytes": 165839
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "totalBytes": 131454
          },
          {
            "url": "https://cdn.cookielaw.org/vendorlist/iab2V2Data.json",
            "totalBytes": 88924
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "totalBytes": 83901
          },
          {
            "url": "https://cdn.cookielaw.org/consent/86365fa6-32e8-4b61-a335-fa2c38958d67/019c9ea5-4e14-78f7-b0c9-51d04d1fbc99/en.json",
            "totalBytes": 41109
          },
          {
            "url": "https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2",
            "totalBytes": 37552
          },
          {
            "url": "https://eu.palmbeachpost.com/",
            "totalBytes": 33242
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/polymer/lib/mixins/property-effects.html",
            "totalBytes": 25963
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "totalBytes": 20884
          },
          {
            "url": "https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff-9f66cbeea2d1-Wpb_102820_Daily_CLO_13.JPG?crop=5999,3375,x0,y0&width=420&quality=50",
            "totalBytes": 19523
          }
        ],
        "sortedBy": [
          "totalBytes"
        ]
      },
      "guidanceLevel": 1
    },
    "unminified-css": {
      "id": "unminified-css",
      "title": "Minify CSS",
      "description": "Minifying CSS files can reduce network payload sizes. [Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/).",
      "score": 1,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 0,
      "numericUnit": "millisecond",
      "displayValue": "",
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0,
        "sortedBy": [
          "wastedBytes"
        ],
        "debugData": {
          "type": "debugdata",
          "metricSavings": {
            "FCP": 0,
            "LCP": 0
          }
        }
      },
      "guidanceLevel": 3
    },
    "unminified-javascript": {
      "id": "unminified-javascript",
      "title": "Minify JavaScript",
      "description": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn how to minify JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/).",
      "score": 0.5,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 0,
      "numericUnit": "millisecond",
      "displayValue": "Est savings of 374 KiB",
      "warnings": [],
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "opportunity",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "label": "Transfer Size"
          },
          {
            "key": "wastedBytes",
            "valueType": "bytes",
            "label": "Est Savings"
          }
        ],
        "items": [
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%20%40const%20%7BObject%7D%20*%2Fvar%20CaseMap%3DPolymer.CaseMap%3B%2F%2F%20Monotonically%20increasing%20unique%20ID%20used%20for%20de-duping%20effects%20triggered%0A%2F%2F%20from%20multiple%20properties%20in%20the%20same%20turn%0Avar%20dedupeId%3D0%3B%2F**%0A%20%20%20*%20Property%20effect%20types%3B%20effects%20are%20stored%20on%20the%20prototype%20using%20these%20keys%0A%20%20%20*%20%40enum%20%7Bstring%7D%0A%20%20%20*%2Fvar%20TYPES%3D%7BCOMPUTE%3A'__computeEffects'%2CREFLECT%3A'__reflectEffects'%2CNOTIFY%3A'__notifyEffects'%2CPROPAGATE%3A'__propagateEffects'%2COBSERVE%3A'__observeEffects'%2CREAD_ONLY%3A'__readOnly'%7D%3B%2F**%20%40const%20%7BRegExp%7D%20*%2Fvar%20capitalAttributeRegex%3D%2F%5BA-Z%5D%2F%3B%2F**%0A%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20*%20name%3A%20(string%20%7C%20undefined)%2C%0A%20%20%20*%20structured%3A%20(boolean%20%7C%20undefined)%2C%0A%20%20%20*%20wildcard%3A%20(boolean%20%7C%20undefined)%0A%20%20%20*%20%7D%7D%0A%20%20%20*%2Fvar%20DataTrigger%3Dvoid%200%3B%2F%2Feslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20*%20info%3A%20%3F%2C%0A%20%20%20*%20trigger%3A%20(!DataTrigger%20%7C%20undefined)%2C%0A%20%20%20*%20fn%3A%20(!Function%20%7C%20undefined)%0A%20%20%20*%20%7D%7D%0A%20%20%20*%2Fvar%20DataEffect%3Dvoid%200%3B%2F%2Feslint-disable-line%20no-unused-vars%0Avar%20PropertyEffectsType%3Dvoid%200%3B%2F%2Feslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20*%20Ensures%20that%20the%20model%20has%20an%20own-property%20map%20of%20effects%20for%20the%20given%20type.%0A%20%20%20*%20The%20model%20may%20be%20a%20prototype%20or%20an%20instance.%0A%20%20%20*%0A%20%20%20*%20Property%20effects%20are%20stored%20as%20arrays%20of%20effects%20by%20property%20in%20a%20map%2C%0A%20%20%20*%20by%20named%20type%20on%20the%20model.%20e.g.%0A%20%20%20*%0A%20%20%20*%20%20%20__computeEffects%3A%20%7B%0A%20%20%20*%20%20%20%20%20foo%3A%20%5B%20...%20%5D%2C%0A%20%20%20*%20%20%20%20%20bar%3A%20%5B%20...%20%5D%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20If%20the%20model%20does%20not%20yet%20have%20an%20effect%20map%20for%20the%20type%2C%20one%20is%20created%0A%20%20%20*%20and%20returned.%20%20If%20it%20does%2C%20but%20it%20is%20not%20an%20own%20property%20(i.e.%20the%0A%20%20%20*%20prototype%20had%20effects)%2C%20the%20the%20map%20is%20deeply%20cloned%20and%20the%20copy%20is%0A%20%20%20*%20set%20on%20the%20model%20and%20returned%2C%20ready%20for%20new%20effects%20to%20be%20added.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7Bstring%7D%20type%20Property%20effect%20type%0A%20%20%20*%20%40return%20%7BObject%7D%20The%20own-property%20map%20of%20effects%20for%20the%20given%20type%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20ensureOwnEffectMap(model%2Ctype)%7Bvar%20effects%3Dmodel%5Btype%5D%3Bif(!effects)%7Beffects%3Dmodel%5Btype%5D%3D%7B%7D%3B%7Delse%20if(!model.hasOwnProperty(type))%7Beffects%3Dmodel%5Btype%5D%3DObject.create(model%5Btype%5D)%3Bfor(var%20p%20in%20effects)%7Bvar%20protoFx%3Deffects%5Bp%5D%3Bvar%20instFx%3Deffects%5Bp%5D%3DArray(protoFx.length)%3Bfor(var%20i%3D0%3Bi%3CprotoFx.length%3Bi%2B%2B)%7BinstFx%5Bi%5D%3DprotoFx%5Bi%5D%3B%7D%7D%7Dreturn%20effects%3B%7D%2F%2F%20--%20effects%20----------------------------------------------%0A%2F**%0A%20%20%20*%20Runs%20all%20effects%20of%20a%20given%20type%20for%20the%20given%20set%20of%20property%20changes%0A%20%20%20*%20on%20an%20instance.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20effects%20Object%20map%20of%20property-to-Array%20of%20effects%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%3D%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7B*%3D%7D%20extraArgs%20Additional%20metadata%20to%20pass%20to%20effect%20function%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20effect%20ran%20for%20this%20property%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runEffects(inst%2Ceffects%2Cprops%2ColdProps%2ChasPaths%2CextraArgs)%7Bif(effects)%7Bvar%20ran%3Dfalse%3Bvar%20id%3DdedupeId%2B%2B%3Bfor(var%20prop%20in%20props)%7Bif(runEffectsForProperty(inst%2Ceffects%2Cid%2Cprop%2Cprops%2ColdProps%2ChasPaths%2CextraArgs))%7Bran%3Dtrue%3B%7D%7Dreturn%20ran%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20*%20Runs%20a%20list%20of%20effects%20for%20a%20given%20property.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20effects%20Object%20map%20of%20property-to-Array%20of%20effects%0A%20%20%20*%20%40param%20%7Bnumber%7D%20dedupeId%20Counter%20used%20for%20de-duping%20effects%0A%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Name%20of%20changed%20property%0A%20%20%20*%20%40param%20%7B*%7D%20props%20Changed%20properties%0A%20%20%20*%20%40param%20%7B*%7D%20oldProps%20Old%20properties%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7B*%3D%7D%20extraArgs%20Additional%20metadata%20to%20pass%20to%20effect%20function%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20effect%20ran%20for%20this%20property%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runEffectsForProperty(inst%2Ceffects%2CdedupeId%2Cprop%2Cprops%2ColdProps%2ChasPaths%2CextraArgs)%7Bvar%20ran%3Dfalse%3Bvar%20rootProperty%3DhasPaths%3FPolymer.Path.root(prop)%3Aprop%3Bvar%20fxs%3Deffects%5BrootProperty%5D%3Bif(fxs)%7Bfor(var%20i%3D0%2Cl%3Dfxs.length%2Cfx%3Bi%3Cl%26%26(fx%3Dfxs%5Bi%5D)%3Bi%2B%2B)%7Bif((!fx.info%7C%7Cfx.info.lastRun!%3D%3DdedupeId)%26%26(!hasPaths%7C%7CpathMatchesTrigger(prop%2Cfx.trigger)))%7Bif(fx.info)%7Bfx.info.lastRun%3DdedupeId%3B%7Dfx.fn(inst%2Cprop%2Cprops%2ColdProps%2Cfx.info%2ChasPaths%2CextraArgs)%3Bran%3Dtrue%3B%7D%7D%7Dreturn%20ran%3B%7D%2F**%0A%20%20%20*%20Determines%20whether%20a%20property%2Fpath%20that%20has%20changed%20matches%20the%20trigger%0A%20%20%20*%20criteria%20for%20an%20effect.%20%20A%20trigger%20is%20a%20descriptor%20with%20the%20following%0A%20%20%20*%20structure%2C%20which%20matches%20the%20descriptors%20returned%20from%20%60parseArg%60.%0A%20%20%20*%20e.g.%20for%20%60foo.bar.*%60%3A%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20trigger%3A%20%7B%0A%20%20%20*%20%20%20name%3A%20'a.b'%2C%0A%20%20%20*%20%20%20structured%3A%20true%2C%0A%20%20%20*%20%20%20wildcard%3A%20true%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20If%20no%20trigger%20is%20given%2C%20the%20path%20is%20deemed%20to%20match.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20or%20property%20that%20changed%0A%20%20%20*%20%40param%20%7BDataTrigger%7D%20trigger%20Descriptor%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20path%20matched%20the%20trigger%0A%20%20%20*%2Ffunction%20pathMatchesTrigger(path%2Ctrigger)%7Bif(trigger)%7Bvar%20triggerPath%3Dtrigger.name%3Breturn%20triggerPath%3D%3Dpath%7C%7Ctrigger.structured%26%26Polymer.Path.isAncestor(triggerPath%2Cpath)%7C%7Ctrigger.wildcard%26%26Polymer.Path.isDescendant(triggerPath%2Cpath)%3B%7Delse%7Breturn%20true%3B%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22observer%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Calls%20the%20method%20with%20%60info.methodName%60%20on%20the%20instance%2C%20passing%20the%0A%20%20%20*%20new%20and%20old%20values.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runObserverEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7Bvar%20fn%3Dtypeof%20info.method%3D%3D%3D%22string%22%3Finst%5Binfo.method%5D%3Ainfo.method%3Bvar%20changedProp%3Dinfo.property%3Bif(fn)%7Bfn.call(inst%2Cinst.__data%5BchangedProp%5D%2ColdProps%5BchangedProp%5D)%3B%7Delse%20if(!info.dynamicFn)%7Bconsole.warn('observer%20method%20%60'%2Binfo.method%2B'%60%20not%20defined')%3B%7D%7D%2F**%0A%20%20%20*%20Runs%20%22notify%22%20effects%20for%20a%20set%20of%20changed%20properties.%0A%20%20%20*%0A%20%20%20*%20This%20method%20differs%20from%20the%20generic%20%60runEffects%60%20method%20in%20that%20it%0A%20%20%20*%20will%20dispatch%20path%20notification%20events%20in%20the%20case%20that%20the%20property%0A%20%20%20*%20changed%20was%20a%20path%20and%20the%20root%20property%20for%20that%20path%20didn't%20have%20a%0A%20%20%20*%20%22notify%22%20effect.%20%20This%20is%20to%20maintain%201.0%20behavior%20that%20did%20not%20require%0A%20%20%20*%20%60notify%3A%20true%60%20to%20ensure%20object%20sub-property%20notifications%20were%0A%20%20%20*%20sent.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20notifyProps%20Bag%20of%20properties%20to%20notify%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runNotifyEffects(inst%2CnotifyProps%2Cprops%2ColdProps%2ChasPaths)%7B%2F%2F%20Notify%0Avar%20fxs%3Dinst%5BTYPES.NOTIFY%5D%3Bvar%20notified%3Dvoid%200%3Bvar%20id%3DdedupeId%2B%2B%3B%2F%2F%20Try%20normal%20notify%20effects%3B%20if%20none%2C%20fall%20back%20to%20try%20path%20notification%0Afor(var%20prop%20in%20notifyProps)%7Bif(notifyProps%5Bprop%5D)%7Bif(fxs%26%26runEffectsForProperty(inst%2Cfxs%2Cid%2Cprop%2Cprops%2ColdProps%2ChasPaths))%7Bnotified%3Dtrue%3B%7Delse%20if(hasPaths%26%26notifyPath(inst%2Cprop%2Cprops))%7Bnotified%3Dtrue%3B%7D%7D%7D%2F%2F%20Flush%20host%20if%20we%20actually%20notified%20and%20host%20was%20batching%0A%2F%2F%20And%20the%20host%20has%20already%20initialized%20clients%3B%20this%20prevents%0A%2F%2F%20an%20issue%20with%20a%20host%20observing%20data%20changes%20before%20clients%20are%20ready.%0Avar%20host%3Dvoid%200%3Bif(notified%26%26(host%3Dinst.__dataHost)%26%26host._invalidateProperties)%7Bhost._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20*%20Dispatches%20%7Bproperty%7D-changed%20events%20with%20path%20information%20in%20the%20detail%0A%20%20%20*%20object%20to%20indicate%20a%20sub-path%20of%20the%20property%20was%20changed.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20element%20from%20which%20to%20fire%20the%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20that%20was%20changed%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20path%20was%20notified%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20notifyPath(inst%2Cpath%2Cprops)%7Bvar%20rootProperty%3DPolymer.Path.root(path)%3Bif(rootProperty!%3D%3Dpath)%7Bvar%20eventName%3DPolymer.CaseMap.camelToDashCase(rootProperty)%2B'-changed'%3BdispatchNotifyEvent(inst%2CeventName%2Cprops%5Bpath%5D%2Cpath)%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20*%20Dispatches%20%7Bproperty%7D-changed%20events%20to%20indicate%20a%20property%20(or%20path)%0A%20%20%20*%20changed.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20element%20from%20which%20to%20fire%20the%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20The%20name%20of%20the%20event%20to%20send%20('%7Bproperty%7D-changed')%0A%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20of%20the%20changed%20property%0A%20%20%20*%20%40param%20%7Bstring%20%7C%20null%20%7C%20undefined%7D%20path%20If%20a%20sub-path%20of%20this%20property%20changed%2C%20the%20path%0A%20%20%20*%20%20%20that%20changed%20(optional).%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20*%2Ffunction%20dispatchNotifyEvent(inst%2CeventName%2Cvalue%2Cpath)%7Bvar%20detail%3D%7Bvalue%3Avalue%2CqueueProperty%3Atrue%7D%3Bif(path)%7Bdetail.path%3Dpath%3B%7D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Finst.dispatchEvent(new%20CustomEvent(eventName%2C%7Bdetail%3Adetail%7D))%3B%7D%2F**%0A%20%20%20*%20Implements%20the%20%22notify%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Dispatches%20a%20non-bubbling%20event%20named%20%60info.eventName%60%20on%20the%20instance%0A%20%20%20*%20with%20a%20detail%20object%20containing%20the%20new%20%60value%60.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runNotifyEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo%2ChasPaths)%7Bvar%20rootProperty%3DhasPaths%3FPolymer.Path.root(property)%3Aproperty%3Bvar%20path%3DrootProperty!%3Dproperty%3Fproperty%3Anull%3Bvar%20value%3Dpath%3FPolymer.Path.get(inst%2Cpath)%3Ainst.__data%5Bproperty%5D%3Bif(path%26%26value%3D%3D%3Dundefined)%7Bvalue%3Dprops%5Bproperty%5D%3B%2F%2F%20specifically%20for%20.splices%0A%7DdispatchNotifyEvent(inst%2Cinfo.eventName%2Cvalue%2Cpath)%3B%7D%2F**%0A%20%20%20*%20Handler%20function%20for%202-way%20notification%20events.%20Receives%20context%0A%20%20%20*%20information%20captured%20in%20the%20%60addNotifyListener%60%20closure%20from%20the%0A%20%20%20*%20%60__notifyListeners%60%20metadata.%0A%20%20%20*%0A%20%20%20*%20Sets%20the%20value%20of%20the%20notified%20property%20to%20the%20host%20property%20or%20path.%20%20If%0A%20%20%20*%20the%20event%20contained%20path%20information%2C%20translate%20that%20path%20to%20the%20host%0A%20%20%20*%20scope's%20name%20for%20that%20path%20first.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BCustomEvent%7D%20event%20Notification%20event%20(e.g.%20'%3Cproperty%3E-changed')%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Host%20element%20instance%20handling%20the%20notification%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20fromProp%20Child%20element%20property%20that%20was%20bound%0A%20%20%20*%20%40param%20%7Bstring%7D%20toPath%20Host%20property%2Fpath%20that%20was%20bound%0A%20%20%20*%20%40param%20%7Bboolean%7D%20negate%20Whether%20the%20binding%20was%20negated%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20handleNotification(event%2Cinst%2CfromProp%2CtoPath%2Cnegate)%7Bvar%20value%3Dvoid%200%3Bvar%20detail%3D%2F**%20%40type%20%7BObject%7D%20*%2Fevent.detail%3Bvar%20fromPath%3Ddetail%26%26detail.path%3Bif(fromPath)%7BtoPath%3DPolymer.Path.translate(fromProp%2CtoPath%2CfromPath)%3Bvalue%3Ddetail%26%26detail.value%3B%7Delse%7Bvalue%3Devent.currentTarget%5BfromProp%5D%3B%7Dvalue%3Dnegate%3F!value%3Avalue%3Bif(!inst%5BTYPES.READ_ONLY%5D%7C%7C!inst%5BTYPES.READ_ONLY%5D%5BtoPath%5D)%7Bif(inst._setPendingPropertyOrPath(toPath%2Cvalue%2Ctrue%2CBoolean(fromPath))%26%26(!detail%7C%7C!detail.queueProperty))%7Binst._invalidateProperties()%3B%7D%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22reflect%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Sets%20the%20attribute%20named%20%60info.attrName%60%20to%20the%20given%20property%20value.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runReflectEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7Bvar%20value%3Dinst.__data%5Bproperty%5D%3Bif(Polymer.sanitizeDOMValue)%7Bvalue%3DPolymer.sanitizeDOMValue(value%2Cinfo.attrName%2C'attribute'%2C%2F**%20%40type%20%7BNode%7D%20*%2Finst)%3B%7Dinst._propertyToAttribute(property%2Cinfo.attrName%2Cvalue)%3B%7D%2F**%0A%20%20%20*%20Runs%20%22computed%22%20effects%20for%20a%20set%20of%20changed%20properties.%0A%20%20%20*%0A%20%20%20*%20This%20method%20differs%20from%20the%20generic%20%60runEffects%60%20method%20in%20that%20it%0A%20%20%20*%20continues%20to%20run%20computed%20effects%20based%20on%20the%20output%20of%20each%20pass%20until%0A%20%20%20*%20there%20are%20no%20more%20newly%20computed%20properties.%20%20This%20ensures%20that%20all%0A%20%20%20*%20properties%20that%20will%20be%20computed%20by%20the%20initial%20set%20of%20changes%20are%0A%20%20%20*%20computed%20before%20other%20effects%20(binding%20propagation%2C%20observers%2C%20and%20notify)%0A%20%20%20*%20run.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20changed%20properties%0A%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runComputedEffects(inst%2CchangedProps%2ColdProps%2ChasPaths)%7Bvar%20computeEffects%3Dinst%5BTYPES.COMPUTE%5D%3Bif(computeEffects)%7Bvar%20inputProps%3DchangedProps%3Bwhile(runEffects(inst%2CcomputeEffects%2CinputProps%2ColdProps%2ChasPaths))%7BObject.assign(oldProps%2Cinst.__dataOld)%3BObject.assign(changedProps%2Cinst.__dataPending)%3BinputProps%3Dinst.__dataPending%3Binst.__dataPending%3Dnull%3B%7D%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22computed%20property%22%20effect%20by%20running%20the%20method%20with%20the%0A%20%20%20*%20values%20of%20the%20arguments%20specified%20in%20the%20%60info%60%20object%20and%20setting%20the%0A%20%20%20*%20return%20value%20to%20the%20computed%20property%20specified.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runComputedEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7Bvar%20result%3DrunMethodEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%3Bvar%20computedProp%3Dinfo.methodInfo%3Bif(inst.__dataHasAccessor%26%26inst.__dataHasAccessor%5BcomputedProp%5D)%7Binst._setPendingProperty(computedProp%2Cresult%2Ctrue)%3B%7Delse%7Binst%5BcomputedProp%5D%3Dresult%3B%7D%7D%2F**%0A%20%20%20*%20Computes%20path%20changes%20based%20on%20path%20links%20set%20up%20using%20the%20%60linkPaths%60%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20whose%20props%20are%20changing%0A%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3C(string%7Cnumber)%3E%7D%20path%20Path%20that%20has%20changed%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20changed%20path%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20computeLinkedPaths(inst%2Cpath%2Cvalue)%7Bvar%20links%3Dinst.__dataLinkedPaths%3Bif(links)%7Bvar%20link%3Dvoid%200%3Bfor(var%20a%20in%20links)%7Bvar%20b%3Dlinks%5Ba%5D%3Bif(Polymer.Path.isDescendant(a%2Cpath))%7Blink%3DPolymer.Path.translate(a%2Cb%2Cpath)%3Binst._setPendingPropertyOrPath(link%2Cvalue%2Ctrue%2Ctrue)%3B%7Delse%20if(Polymer.Path.isDescendant(b%2Cpath))%7Blink%3DPolymer.Path.translate(b%2Ca%2Cpath)%3Binst._setPendingPropertyOrPath(link%2Cvalue%2Ctrue%2Ctrue)%3B%7D%7D%7D%7D%2F%2F%20--%20bindings%20----------------------------------------------%0A%2F**%0A%20%20%20*%20Adds%20binding%20metadata%20to%20the%20current%20%60nodeInfo%60%2C%20and%20binding%20effects%0A%20%20%20*%20for%20all%20part%20dependencies%20to%20%60templateInfo%60.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BFunction%7D%20constructor%20Class%20that%20%60_parseTemplate%60%20is%20currently%0A%20%20%20*%20%20%20running%20on%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20*%20%40param%20%7Bstring%7D%20kind%20Binding%20kind%2C%20either%20'property'%2C%20'attribute'%2C%20or%20'text'%0A%20%20%20*%20%40param%20%7Bstring%7D%20target%20Target%20property%20name%0A%20%20%20*%20%40param%20%7B!Array%3C!BindingPart%3E%7D%20parts%20Array%20of%20binding%20part%20metadata%0A%20%20%20*%20%40param%20%7Bstring%3D%7D%20literal%20Literal%20text%20surrounding%20binding%20parts%20(specified%0A%20%20%20*%20%20%20only%20for%20'property'%20bindings%2C%20since%20these%20must%20be%20initialized%20as%20part%0A%20%20%20*%20%20%20of%20boot-up)%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20addBinding(constructor%2CtemplateInfo%2CnodeInfo%2Ckind%2Ctarget%2Cparts%2Cliteral)%7B%2F%2F%20Create%20binding%20metadata%20and%20add%20to%20nodeInfo%0AnodeInfo.bindings%3DnodeInfo.bindings%7C%7C%5B%5D%3Bvar%2F**%20Binding%20*%2Fbinding%3D%7Bkind%3Akind%2Ctarget%3Atarget%2Cparts%3Aparts%2Cliteral%3Aliteral%2CisCompound%3Aparts.length!%3D%3D1%7D%3BnodeInfo.bindings.push(binding)%3B%2F%2F%20Add%20listener%20info%20to%20binding%20metadata%0Aif(shouldAddListener(binding))%7Bvar%20_binding%24parts%24%3Dbinding.parts%5B0%5D%2Cevent%3D_binding%24parts%24.event%2Cnegate%3D_binding%24parts%24.negate%3Bbinding.listenerEvent%3Devent%7C%7CCaseMap.camelToDashCase(target)%2B'-changed'%3Bbinding.listenerNegate%3Dnegate%3B%7D%2F%2F%20Add%20%22propagate%22%20property%20effects%20to%20templateInfo%0Avar%20index%3DtemplateInfo.nodeInfoList.length%3Bfor(var%20i%3D0%3Bi%3Cbinding.parts.length%3Bi%2B%2B)%7Bvar%20part%3Dbinding.parts%5Bi%5D%3Bpart.compoundIndex%3Di%3BaddEffectForBindingPart(constructor%2CtemplateInfo%2Cbinding%2Cpart%2Cindex)%3B%7D%7D%2F**%0A%20%20%20*%20Adds%20property%20effects%20to%20the%20given%20%60templateInfo%60%20for%20the%20given%20binding%0A%20%20%20*%20part.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BFunction%7D%20constructor%20Class%20that%20%60_parseTemplate%60%20is%20currently%0A%20%20%20*%20%20%20running%20on%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40param%20%7Bnumber%7D%20index%20Index%20into%20%60nodeInfoList%60%20for%20this%20node%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2Ffunction%20addEffectForBindingPart(constructor%2CtemplateInfo%2Cbinding%2Cpart%2Cindex)%7Bif(!part.literal)%7Bif(binding.kind%3D%3D%3D'attribute'%26%26binding.target%5B0%5D%3D%3D%3D'-')%7Bconsole.warn('Cannot%20set%20attribute%20'%2Bbinding.target%2B'%20because%20%22-%22%20is%20not%20a%20valid%20attribute%20starting%20character')%3B%7Delse%7Bvar%20dependencies%3Dpart.dependencies%3Bvar%20info%3D%7Bindex%3Aindex%2Cbinding%3Abinding%2Cpart%3Apart%2Cevaluator%3Aconstructor%7D%3Bfor(var%20j%3D0%3Bj%3Cdependencies.length%3Bj%2B%2B)%7Bvar%20trigger%3Ddependencies%5Bj%5D%3Bif(typeof%20trigger%3D%3D'string')%7Btrigger%3DparseArg(trigger)%3Btrigger.wildcard%3Dtrue%3B%7Dconstructor._addTemplatePropertyEffect(templateInfo%2Ctrigger.rootProperty%2C%7Bfn%3ArunBindingEffect%2Cinfo%3Ainfo%2Ctrigger%3Atrigger%7D)%3B%7D%7D%7D%7D%2F**%0A%20%20%20*%20Implements%20the%20%22binding%22%20(property%2Fpath%20binding)%20effect.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20binding%20syntax%20is%20overridable%20via%20%60_parseBindings%60%20and%0A%20%20%20*%20%60_evaluateBinding%60.%20%20This%20method%20will%20call%20%60_evaluateBinding%60%20for%20any%0A%20%20%20*%20non-literal%20parts%20returned%20from%20%60_parseBindings%60.%20%20However%2C%0A%20%20%20*%20there%20is%20no%20support%20for%20_path_%20bindings%20via%20custom%20binding%20parts%2C%0A%20%20%20*%20as%20this%20is%20specific%20to%20Polymer's%20path%20binding%20syntax.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7BArray%7D%20nodeList%20List%20of%20nodes%20associated%20with%20%60nodeInfoList%60%20template%0A%20%20%20*%20%20%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runBindingEffect(inst%2Cpath%2Cprops%2ColdProps%2Cinfo%2ChasPaths%2CnodeList)%7Bvar%20node%3DnodeList%5Binfo.index%5D%3Bvar%20binding%3Dinfo.binding%3Bvar%20part%3Dinfo.part%3B%2F%2F%20Subpath%20notification%3A%20transform%20path%20and%20set%20to%20client%0A%2F%2F%20e.g.%3A%20foo%3D%22%7B%7Bobj.sub%7D%7D%22%2C%20path%3A%20'obj.sub.prop'%2C%20set%20'foo.prop'%3Dobj.sub.prop%0Aif(hasPaths%26%26part.source%26%26path.length%3Epart.source.length%26%26binding.kind%3D%3D'property'%26%26!binding.isCompound%26%26node.__isPropertyEffectsClient%26%26node.__dataHasAccessor%26%26node.__dataHasAccessor%5Bbinding.target%5D)%7Bvar%20value%3Dprops%5Bpath%5D%3Bpath%3DPolymer.Path.translate(part.source%2Cbinding.target%2Cpath)%3Bif(node._setPendingPropertyOrPath(path%2Cvalue%2Cfalse%2Ctrue))%7Binst._enqueueClient(node)%3B%7D%7Delse%7Bvar%20_value%3Dinfo.evaluator._evaluateBinding(inst%2Cpart%2Cpath%2Cprops%2ColdProps%2ChasPaths)%3B%2F%2F%20Propagate%20value%20to%20child%0AapplyBindingValue(inst%2Cnode%2Cbinding%2Cpart%2C_value)%3B%7D%7D%2F**%0A%20%20%20*%20Sets%20the%20value%20for%20an%20%22binding%22%20(binding)%20effect%20to%20a%20node%2C%0A%20%20%20*%20either%20as%20a%20property%20or%20attribute.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20owning%20the%20binding%20effect%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Target%20node%20for%20binding%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20applyBindingValue(inst%2Cnode%2Cbinding%2Cpart%2Cvalue)%7Bvalue%3DcomputeBindingValue(node%2Cvalue%2Cbinding%2Cpart)%3Bif(Polymer.sanitizeDOMValue)%7Bvalue%3DPolymer.sanitizeDOMValue(value%2Cbinding.target%2Cbinding.kind%2Cnode)%3B%7Dif(binding.kind%3D%3D'attribute')%7B%2F%2F%20Attribute%20binding%0Ainst._valueToNodeAttribute(%2F**%20%40type%20%7BElement%7D%20*%2Fnode%2Cvalue%2Cbinding.target)%3B%7Delse%7B%2F%2F%20Property%20binding%0Avar%20prop%3Dbinding.target%3Bif(node.__isPropertyEffectsClient%26%26node.__dataHasAccessor%26%26node.__dataHasAccessor%5Bprop%5D)%7Bif(!node%5BTYPES.READ_ONLY%5D%7C%7C!node%5BTYPES.READ_ONLY%5D%5Bprop%5D)%7Bif(node._setPendingProperty(prop%2Cvalue))%7Binst._enqueueClient(node)%3B%7D%7D%7Delse%7Binst._setUnmanagedPropertyToNode(node%2Cprop%2Cvalue)%3B%7D%7D%7D%2F**%0A%20%20%20*%20Transforms%20an%20%22binding%22%20effect%20value%20based%20on%20compound%20%26%20negation%0A%20%20%20*%20effect%20metadata%2C%20as%20well%20as%20handling%20for%20special-case%20properties%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20the%20value%20will%20be%20set%20to%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40return%20%7B*%7D%20Transformed%20value%20to%20set%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20computeBindingValue(node%2Cvalue%2Cbinding%2Cpart)%7Bif(binding.isCompound)%7Bvar%20storage%3Dnode.__dataCompoundStorage%5Bbinding.target%5D%3Bstorage%5Bpart.compoundIndex%5D%3Dvalue%3Bvalue%3Dstorage.join('')%3B%7Dif(binding.kind!%3D%3D'attribute')%7B%2F%2F%20Some%20browsers%20serialize%20%60undefined%60%20to%20%60%22undefined%22%60%0Aif(binding.target%3D%3D%3D'textContent'%7C%7Cbinding.target%3D%3D%3D'value'%26%26(node.localName%3D%3D%3D'input'%7C%7Cnode.localName%3D%3D%3D'textarea'))%7Bvalue%3Dvalue%3D%3Dundefined%3F''%3Avalue%3B%7D%7Dreturn%20value%3B%7D%2F**%0A%20%20%20*%20Returns%20true%20if%20a%20binding's%20metadata%20meets%20all%20the%20requirements%20to%20allow%0A%20%20%20*%202-way%20binding%2C%20and%20therefore%20a%20%60%3Cproperty%3E-changed%60%20event%20listener%20should%20be%0A%20%20%20*%20added%3A%0A%20%20%20*%20-%20used%20curly%20braces%0A%20%20%20*%20-%20is%20a%20property%20(not%20attribute)%20binding%0A%20%20%20*%20-%20is%20not%20a%20textContent%20binding%0A%20%20%20*%20-%20is%20not%20compound%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%202-way%20listener%20should%20be%20added%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20shouldAddListener(binding)%7Breturn%20Boolean(binding.target)%26%26binding.kind!%3D'attribute'%26%26binding.kind!%3D'text'%26%26!binding.isCompound%26%26binding.parts%5B0%5D.mode%3D%3D%3D'%7B'%3B%7D%2F**%0A%20%20%20*%20Setup%20compound%20binding%20storage%20structures%2C%20notify%20listeners%2C%20and%20dataHost%0A%20%20%20*%20references%20onto%20the%20bound%20nodeList.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20that%20bas%20been%20previously%20bound%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20setupBindings(inst%2CtemplateInfo)%7B%2F%2F%20Setup%20compound%20storage%2C%20dataHost%2C%20and%20notify%20listeners%0Avar%20nodeList%3DtemplateInfo.nodeList%2CnodeInfoList%3DtemplateInfo.nodeInfoList%3Bif(nodeInfoList.length)%7Bfor(var%20i%3D0%3Bi%3CnodeInfoList.length%3Bi%2B%2B)%7Bvar%20info%3DnodeInfoList%5Bi%5D%3Bvar%20node%3DnodeList%5Bi%5D%3Bvar%20bindings%3Dinfo.bindings%3Bif(bindings)%7Bfor(var%20_i%3D0%3B_i%3Cbindings.length%3B_i%2B%2B)%7Bvar%20binding%3Dbindings%5B_i%5D%3BsetupCompoundStorage(node%2Cbinding)%3BaddNotifyListener(node%2Cinst%2Cbinding)%3B%7D%7Dnode.__dataHost%3Dinst%3B%7D%7D%7D%2F**%0A%20%20%20*%20Initializes%20%60__dataCompoundStorage%60%20local%20storage%20on%20a%20bound%20node%20with%0A%20%20%20*%20initial%20literal%20data%20for%20compound%20bindings%2C%20and%20sets%20the%20joined%0A%20%20%20*%20literal%20parts%20to%20the%20bound%20property.%0A%20%20%20*%0A%20%20%20*%20When%20changes%20to%20compound%20parts%20occur%2C%20they%20are%20first%20set%20into%20the%20compound%0A%20%20%20*%20storage%20array%20for%20that%20property%2C%20and%20then%20the%20array%20is%20joined%20to%20result%20in%0A%20%20%20*%20the%20final%20value%20set%20to%20the%20property%2Fattribute.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Bound%20node%20to%20initialize%0A%20%20%20*%20%40param%20%7BBinding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20setupCompoundStorage(node%2Cbinding)%7Bif(binding.isCompound)%7B%2F%2F%20Create%20compound%20storage%20map%0Avar%20storage%3Dnode.__dataCompoundStorage%7C%7C(node.__dataCompoundStorage%3D%7B%7D)%3Bvar%20parts%3Dbinding.parts%3B%2F%2F%20Copy%20literals%20from%20parts%20into%20storage%20for%20this%20binding%0Avar%20literals%3Dnew%20Array(parts.length)%3Bfor(var%20j%3D0%3Bj%3Cparts.length%3Bj%2B%2B)%7Bliterals%5Bj%5D%3Dparts%5Bj%5D.literal%3B%7Dvar%20target%3Dbinding.target%3Bstorage%5Btarget%5D%3Dliterals%3B%2F%2F%20Configure%20properties%20with%20their%20literal%20parts%0Aif(binding.literal%26%26binding.kind%3D%3D'property')%7Bnode%5Btarget%5D%3Dbinding.literal%3B%7D%7D%7D%2F**%0A%20%20%20*%20Adds%20a%202-way%20binding%20notification%20event%20listener%20to%20the%20node%20specified%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20node%20Child%20element%20to%20add%20listener%20to%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Host%20element%20instance%20to%20handle%20notification%20event%0A%20%20%20*%20%40param%20%7BBinding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20addNotifyListener(node%2Cinst%2Cbinding)%7Bif(binding.listenerEvent)%7Bvar%20part%3Dbinding.parts%5B0%5D%3Bnode.addEventListener(binding.listenerEvent%2Cfunction(e)%7BhandleNotification(e%2Cinst%2Cbinding.target%2Cpart.source%2Cpart.negate)%3B%7D)%3B%7D%7D%2F%2F%20--%20for%20method-based%20effects%20(complexObserver%20%26%20computed)%20--------------%0A%2F**%0A%20%20%20*%20Adds%20property%20effects%20for%20each%20argument%20in%20the%20method%20signature%20(and%0A%20%20%20*%20optionally%2C%20for%20the%20method%20name%20if%20%60dynamic%60%20is%20true)%20that%20calls%20the%0A%20%20%20*%20provided%20effect%20function.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BElement%20%7C%20Object%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7B!MethodSignature%7D%20sig%20Method%20signature%20metadata%0A%20%20%20*%20%40param%20%7Bstring%7D%20type%20Type%20of%20property%20effect%20to%20add%0A%20%20%20*%20%40param%20%7BFunction%7D%20effectFn%20Function%20to%20run%20when%20arguments%20change%0A%20%20%20*%20%40param%20%7B*%3D%7D%20methodInfo%20Effect-specific%20information%20to%20be%20included%20in%0A%20%20%20*%20%20%20method%20effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%20whether%0A%20%20%20*%20%20%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%20Note%2C%0A%20%20%20*%20%20%20defaults%20to%20true%20if%20the%20signature%20is%20static%20(sig.static%20is%20true).%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20createMethodEffect(model%2Csig%2Ctype%2CeffectFn%2CmethodInfo%2CdynamicFn)%7BdynamicFn%3Dsig.static%7C%7CdynamicFn%26%26((typeof%20dynamicFn%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(dynamicFn))!%3D%3D'object'%7C%7CdynamicFn%5Bsig.methodName%5D)%3Bvar%20info%3D%7BmethodName%3Asig.methodName%2Cargs%3Asig.args%2CmethodInfo%3AmethodInfo%2CdynamicFn%3AdynamicFn%7D%3Bfor(var%20i%3D0%2Carg%3Bi%3Csig.args.length%26%26(arg%3Dsig.args%5Bi%5D)%3Bi%2B%2B)%7Bif(!arg.literal)%7Bmodel._addPropertyEffect(arg.rootProperty%2Ctype%2C%7Bfn%3AeffectFn%2Cinfo%3Ainfo%2Ctrigger%3Aarg%7D)%3B%7D%7Dif(dynamicFn)%7Bmodel._addPropertyEffect(sig.methodName%2Ctype%2C%7Bfn%3AeffectFn%2Cinfo%3Ainfo%7D)%3B%7D%7D%2F**%0A%20%20%20*%20Calls%20a%20method%20with%20arguments%20marshaled%20from%20properties%20on%20the%20instance%0A%20%20%20*%20based%20on%20the%20method%20signature%20contained%20in%20the%20effect%20metadata.%0A%20%20%20*%0A%20%20%20*%20Multi-property%20observers%2C%20computed%20properties%2C%20and%20inline%20computing%0A%20%20%20*%20functions%20call%20this%20function%20to%20invoke%20the%20method%2C%20then%20use%20the%20return%0A%20%20%20*%20value%20accordingly.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7B*%7D%20Returns%20the%20return%20value%20from%20the%20method%20invocation%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20runMethodEffect(inst%2Cproperty%2Cprops%2ColdProps%2Cinfo)%7B%2F%2F%20Instances%20can%20optionally%20have%20a%20_methodHost%20which%20allows%20redirecting%20where%0A%2F%2F%20to%20find%20methods.%20Currently%20used%20by%20%60templatize%60.%0Avar%20context%3Dinst._methodHost%7C%7Cinst%3Bvar%20fn%3Dcontext%5Binfo.methodName%5D%3Bif(fn)%7Bvar%20args%3Dinst._marshalArgs(info.args%2Cproperty%2Cprops)%3Breturn%20fn.apply(context%2Cargs)%3B%7Delse%20if(!info.dynamicFn)%7Bconsole.warn('method%20%60'%2Binfo.methodName%2B'%60%20not%20defined')%3B%7D%7Dvar%20emptyArray%3D%5B%5D%3B%2F%2F%20Regular%20expressions%20used%20for%20binding%0Avar%20IDENT%3D'(%3F%3A'%2B'%5Ba-zA-Z_%24%5D%5B%5C%5Cw.%3A%24%5C%5C-*%5D*'%2B')'%3Bvar%20NUMBER%3D'(%3F%3A'%2B'%5B-%2B%5D%3F%5B0-9%5D*%5C%5C.%3F%5B0-9%5D%2B(%3F%3A%5BeE%5D%5B-%2B%5D%3F%5B0-9%5D%2B)%3F'%2B')'%3Bvar%20SQUOTE_STRING%3D'(%3F%3A'%2B'%5C'(%3F%3A%5B%5E%5C'%5C%5C%5C%5C%5D%7C%5C%5C%5C%5C.)*%5C''%2B')'%3Bvar%20DQUOTE_STRING%3D'(%3F%3A'%2B'%22(%3F%3A%5B%5E%22%5C%5C%5C%5C%5D%7C%5C%5C%5C%5C.)*%22'%2B')'%3Bvar%20STRING%3D'(%3F%3A'%2BSQUOTE_STRING%2B'%7C'%2BDQUOTE_STRING%2B')'%3Bvar%20ARGUMENT%3D'(%3F%3A('%2BIDENT%2B'%7C'%2BNUMBER%2B'%7C'%2BSTRING%2B')%5C%5Cs*'%2B')'%3Bvar%20ARGUMENTS%3D'(%3F%3A'%2BARGUMENT%2B'(%3F%3A%2C%5C%5Cs*'%2BARGUMENT%2B')*'%2B')'%3Bvar%20ARGUMENT_LIST%3D'(%3F%3A'%2B'%5C%5C(%5C%5Cs*'%2B'(%3F%3A'%2BARGUMENTS%2B'%3F'%2B')'%2B'%5C%5C)%5C%5Cs*'%2B')'%3Bvar%20BINDING%3D'('%2BIDENT%2B'%5C%5Cs*'%2BARGUMENT_LIST%2B'%3F'%2B')'%3B%2F%2F%20Group%203%0Avar%20OPEN_BRACKET%3D'(%5C%5C%5B%5C%5C%5B%7C%7B%7B)'%2B'%5C%5Cs*'%3Bvar%20CLOSE_BRACKET%3D'(%3F%3A%5D%5D%7C%7D%7D)'%3Bvar%20NEGATE%3D'(%3F%3A(!)%5C%5Cs*)%3F'%3B%2F%2F%20Group%202%0Avar%20EXPRESSION%3DOPEN_BRACKET%2BNEGATE%2BBINDING%2BCLOSE_BRACKET%3Bvar%20bindingRegex%3Dnew%20RegExp(EXPRESSION%2C%22g%22)%3B%2F**%0A%20%20%20*%20Create%20a%20string%20from%20binding%20parts%20of%20all%20the%20literal%20parts%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%3CBindingPart%3E%7D%20parts%20All%20parts%20to%20stringify%0A%20%20%20*%20%40return%20%7Bstring%7D%20String%20made%20from%20the%20literal%20parts%0A%20%20%20*%2Ffunction%20literalFromParts(parts)%7Bvar%20s%3D''%3Bfor(var%20i%3D0%3Bi%3Cparts.length%3Bi%2B%2B)%7Bvar%20literal%3Dparts%5Bi%5D.literal%3Bs%2B%3Dliteral%7C%7C''%3B%7Dreturn%20s%3B%7D%2F**%0A%20%20%20*%20Parses%20an%20expression%20string%20for%20a%20method%20signature%2C%20and%20returns%20a%20metadata%0A%20%20%20*%20describing%20the%20method%20in%20terms%20of%20%60methodName%60%2C%20%60static%60%20(whether%20all%20the%0A%20%20%20*%20arguments%20are%20literals)%2C%20and%20an%20array%20of%20%60args%60%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20expression%20The%20expression%20to%20parse%0A%20%20%20*%20%40return%20%7B%3FMethodSignature%7D%20The%20method%20metadata%20object%20if%20a%20method%20expression%20was%0A%20%20%20*%20%20%20found%2C%20otherwise%20%60undefined%60%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20parseMethod(expression)%7B%2F%2F%20tries%20to%20match%20valid%20javascript%20property%20names%0Avar%20m%3Dexpression.match(%2F(%5B%5E%5Cs%5D%2B%3F)%5C((%5B%5Cs%5CS%5D*)%5C)%2F)%3Bif(m)%7Bvar%20methodName%3Dm%5B1%5D%3Bvar%20sig%3D%7BmethodName%3AmethodName%2Cstatic%3Atrue%2Cargs%3AemptyArray%7D%3Bif(m%5B2%5D.trim())%7B%2F%2F%20replace%20escaped%20commas%20with%20comma%20entity%2C%20split%20on%20un-escaped%20commas%0Avar%20args%3Dm%5B2%5D.replace(%2F%5C%5C%2C%2Fg%2C'%26comma%3B').split('%2C')%3Breturn%20parseArgs(args%2Csig)%3B%7Delse%7Breturn%20sig%3B%7D%7Dreturn%20null%3B%7D%2F**%0A%20%20%20*%20Parses%20an%20array%20of%20arguments%20and%20sets%20the%20%60args%60%20property%20of%20the%20supplied%0A%20%20%20*%20signature%20metadata%20object.%20Sets%20the%20%60static%60%20property%20to%20false%20if%20any%0A%20%20%20*%20argument%20is%20a%20non-literal.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%3Cstring%3E%7D%20argList%20Array%20of%20argument%20names%0A%20%20%20*%20%40param%20%7B!MethodSignature%7D%20sig%20Method%20signature%20metadata%20object%0A%20%20%20*%20%40return%20%7B!MethodSignature%7D%20The%20updated%20signature%20metadata%20object%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20parseArgs(argList%2Csig)%7Bsig.args%3DargList.map(function(rawArg)%7Bvar%20arg%3DparseArg(rawArg)%3Bif(!arg.literal)%7Bsig.static%3Dfalse%3B%7Dreturn%20arg%3B%7D%2Cthis)%3Breturn%20sig%3B%7D%2F**%0A%20%20%20*%20Parses%20an%20individual%20argument%2C%20and%20returns%20an%20argument%20metadata%20object%0A%20%20%20*%20with%20the%20following%20fields%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%7B%0A%20%20%20*%20%20%20%20%20value%3A%20'prop'%2C%20%20%20%20%20%20%20%20%2F%2F%20property%2Fpath%20or%20literal%20value%0A%20%20%20*%20%20%20%20%20literal%3A%20false%2C%20%20%20%20%20%20%20%2F%2F%20whether%20argument%20is%20a%20literal%0A%20%20%20*%20%20%20%20%20structured%3A%20false%2C%20%20%20%20%2F%2F%20whether%20the%20property%20is%20a%20path%0A%20%20%20*%20%20%20%20%20rootProperty%3A%20'prop'%2C%20%2F%2F%20the%20root%20property%20of%20the%20path%0A%20%20%20*%20%20%20%20%20wildcard%3A%20false%20%20%20%20%20%20%20%2F%2F%20whether%20the%20argument%20was%20a%20wildcard%20'.*'%20path%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20rawArg%20The%20string%20value%20of%20the%20argument%0A%20%20%20*%20%40return%20%7B!MethodArg%7D%20Argument%20metadata%20object%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20parseArg(rawArg)%7B%2F%2F%20clean%20up%20whitespace%0Avar%20arg%3DrawArg.trim()%2F%2F%20replace%20comma%20entity%20with%20comma%0A.replace(%2F%26comma%3B%2Fg%2C'%2C')%2F%2F%20repair%20extra%20escape%20sequences%3B%20note%20only%20commas%20strictly%20need%0A%2F%2F%20escaping%2C%20but%20we%20allow%20any%20other%20char%20to%20be%20escaped%20since%20its%0A%2F%2F%20likely%20users%20will%20do%20this%0A.replace(%2F%5C%5C(.)%2Fg%2C'%5C%241')%3B%2F%2F%20basic%20argument%20descriptor%0Avar%20a%3D%7Bname%3Aarg%2Cvalue%3A''%2Cliteral%3Afalse%7D%3B%2F%2F%20detect%20literal%20value%20(must%20be%20String%20or%20Number)%0Avar%20fc%3Darg%5B0%5D%3Bif(fc%3D%3D%3D'-')%7Bfc%3Darg%5B1%5D%3B%7Dif(fc%3E%3D'0'%26%26fc%3C%3D'9')%7Bfc%3D'%23'%3B%7Dswitch(fc)%7Bcase%22'%22%3Acase'%22'%3Aa.value%3Darg.slice(1%2C-1)%3Ba.literal%3Dtrue%3Bbreak%3Bcase'%23'%3Aa.value%3DNumber(arg)%3Ba.literal%3Dtrue%3Bbreak%3B%7D%2F%2F%20if%20not%20literal%2C%20look%20for%20structured%20path%0Aif(!a.literal)%7Ba.rootProperty%3DPolymer.Path.root(arg)%3B%2F%2F%20detect%20structured%20path%20(has%20dots)%0Aa.structured%3DPolymer.Path.isPath(arg)%3Bif(a.structured)%7Ba.wildcard%3Darg.slice(-2)%3D%3D'.*'%3Bif(a.wildcard)%7Ba.name%3Darg.slice(0%2C-2)%3B%7D%7D%7Dreturn%20a%3B%7D%2F%2F%20data%20api%0A%2F**%0A%20%20%20*%20Sends%20array%20splice%20notifications%20(%60.splices%60%20and%20%60.length%60)%0A%20%20%20*%0A%20%20%20*%20Note%3A%20this%20implementation%20only%20accepts%20normalized%20paths%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20to%20send%20notifications%20to%0A%20%20%20*%20%40param%20%7BArray%7D%20array%20The%20array%20the%20mutations%20occurred%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20to%20the%20array%20that%20was%20mutated%0A%20%20%20*%20%40param%20%7BArray%7D%20splices%20Array%20of%20splice%20records%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20_notifySplices(inst%2Carray%2Cpath%2Csplices)%7Bvar%20splicesPath%3Dpath%2B'.splices'%3Binst.notifyPath(splicesPath%2C%7BindexSplices%3Asplices%7D)%3Binst.notifyPath(path%2B'.length'%2Carray.length)%3B%2F%2F%20Null%20here%20to%20allow%20potentially%20large%20splice%20records%20to%20be%20GC'ed.%0Ainst.__data%5BsplicesPath%5D%3D%7BindexSplices%3Anull%7D%3B%7D%2F**%0A%20%20%20*%20Creates%20a%20splice%20record%20and%20sends%20an%20array%20splice%20notification%20for%0A%20%20%20*%20the%20described%20mutation%0A%20%20%20*%0A%20%20%20*%20Note%3A%20this%20implementation%20only%20accepts%20normalized%20paths%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20to%20send%20notifications%20to%0A%20%20%20*%20%40param%20%7BArray%7D%20array%20The%20array%20the%20mutations%20occurred%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20to%20the%20array%20that%20was%20mutated%0A%20%20%20*%20%40param%20%7Bnumber%7D%20index%20Index%20at%20which%20the%20array%20mutation%20occurred%0A%20%20%20*%20%40param%20%7Bnumber%7D%20addedCount%20Number%20of%20added%20items%0A%20%20%20*%20%40param%20%7BArray%7D%20removed%20Array%20of%20removed%20items%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20notifySplice(inst%2Carray%2Cpath%2Cindex%2CaddedCount%2Cremoved)%7B_notifySplices(inst%2Carray%2Cpath%2C%5B%7Bindex%3Aindex%2CaddedCount%3AaddedCount%2Cremoved%3Aremoved%2Cobject%3Aarray%2Ctype%3A'splice'%7D%5D)%3B%7D%2F**%0A%20%20%20*%20Returns%20an%20upper-cased%20version%20of%20the%20string.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%20String%20to%20uppercase%0A%20%20%20*%20%40return%20%7Bstring%7D%20Uppercased%20string%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20upper(name)%7Breturn%20name%5B0%5D.toUpperCase()%2Bname.substring(1)%3B%7D%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20meta-programming%20for%20Polymer's%20template%0A%20%20%20*%20binding%20and%20data%20observation%20(collectively%2C%20%22property%20effects%22)%20system.%0A%20%20%20*%0A%20%20%20*%20This%20mixin%20uses%20provides%20the%20following%20key%20static%20methods%20for%20adding%0A%20%20%20*%20property%20effects%20to%20an%20element%20class%3A%0A%20%20%20*%20-%20%60addPropertyEffect%60%0A%20%20%20*%20-%20%60createPropertyObserver%60%0A%20%20%20*%20-%20%60createMethodObserver%60%0A%20%20%20*%20-%20%60createNotifyingProperty%60%0A%20%20%20*%20-%20%60createReadOnlyProperty%60%0A%20%20%20*%20-%20%60createReflectedProperty%60%0A%20%20%20*%20-%20%60createComputedProperty%60%0A%20%20%20*%20-%20%60bindTemplate%60%0A%20%20%20*%0A%20%20%20*%20Each%20method%20creates%20one%20or%20more%20property%20accessors%2C%20along%20with%20metadata%0A%20%20%20*%20used%20by%20this%20mixin's%20implementation%20of%20%60_propertiesChanged%60%20to%20perform%0A%20%20%20*%20the%20property%20effects.%0A%20%20%20*%0A%20%20%20*%20Underscored%20versions%20of%20the%20above%20methods%20also%20exist%20on%20the%20element%0A%20%20%20*%20prototype%20for%20adding%20property%20effects%20on%20instances%20at%20runtime.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20this%20mixin%20overrides%20several%20%60PropertyAccessors%60%20methods%2C%20in%0A%20%20%20*%20many%20cases%20to%20maintain%20guarantees%20provided%20by%20the%20Polymer%201.x%20features%3B%0A%20%20%20*%20notably%20it%20changes%20property%20accessors%20to%20be%20synchronous%20by%20default%0A%20%20%20*%20whereas%20the%20default%20when%20using%20%60PropertyAccessors%60%20standalone%20is%20to%20be%0A%20%20%20*%20async%20by%20default.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.TemplateStamp%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertyAccessors%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20meta-programming%20for%20Polymer's%0A%20%20%20*%20template%20binding%20and%20data%20observation%20system.%0A%20%20%20*%2FPolymer.PropertyEffects%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_TemplateStamp%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20propertyEffectsBase%3DPolymer.TemplateStamp(Polymer.PropertyAccessors(superClass))%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40extends%20%7BpropertyEffectsBase%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20PropertyEffects%3Dfunction(_propertyEffectsBase)%7B_inherits(PropertyEffects%2C_propertyEffectsBase)%3Bfunction%20PropertyEffects()%7B_classCallCheck(this%2CPropertyEffects)%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F%2F%2F%20Used%20to%20identify%20users%20of%20this%20mixin%2C%20ala%20instanceof%0Avar%20_this%3D_possibleConstructorReturn(this%2C(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)).call(this))%3B_this.__isPropertyEffectsClient%3Dtrue%3B%2F**%20%40type%20%7Bnumber%7D%20*%2F%2F%2F%20NOTE%3A%20used%20to%20track%20re-entrant%20calls%20to%20%60_flushProperties%60%0A%2F%2F%20path%20changes%20dirty%20check%20against%20%60__dataTemp%60%20only%20during%20one%20%22turn%22%0A%2F%2F%20and%20are%20cleared%20when%20%60__dataCounter%60%20returns%20to%200.%0A_this.__dataCounter%3D0%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F_this.__dataClientsReady%3B%2F**%20%40type%20%7BArray%7D%20*%2F_this.__dataPendingClients%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__dataToNotify%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__dataLinkedPaths%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F_this.__dataHasPaths%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__dataCompoundStorage%3B%2F**%20%40type%20%7BPolymer_PropertyEffects%7D%20*%2F_this.__dataHost%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__dataTemp%3B%2F**%20%40type%20%7Bboolean%7D%20*%2F_this.__dataClientsInitialized%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__data%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__dataPending%3B%2F**%20%40type%20%7B!Object%7D%20*%2F_this.__dataOld%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__computeEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__reflectEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__notifyEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__propagateEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__observeEffects%3B%2F**%20%40type%20%7BObject%7D%20*%2F_this.__readOnly%3B%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2F_this.__templateInfo%3Breturn%20_this%3B%7D_createClass(PropertyEffects%2C%5B%7Bkey%3A'_initializeProperties'%2C%2F**%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_initializeProperties()%7B_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3BhostStack.registerHost(this)%3Bthis.__dataClientsReady%3Dfalse%3Bthis.__dataPendingClients%3Dnull%3Bthis.__dataToNotify%3Dnull%3Bthis.__dataLinkedPaths%3Dnull%3Bthis.__dataHasPaths%3Dfalse%3B%2F%2F%20May%20be%20set%20on%20instance%20prior%20to%20upgrade%0Athis.__dataCompoundStorage%3Dthis.__dataCompoundStorage%7C%7Cnull%3Bthis.__dataHost%3Dthis.__dataHost%7C%7Cnull%3Bthis.__dataTemp%3D%7B%7D%3Bthis.__dataClientsInitialized%3Dfalse%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyAccessors%60%20implementation%20to%20provide%20a%0A%20%20%20%20%20%20%20*%20more%20efficient%20implementation%20of%20initializing%20properties%20from%0A%20%20%20%20%20%20%20*%20the%20prototype%20on%20the%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20initialize%20on%20the%20prototype%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProtoProperties'%2Cvalue%3Afunction%20_initializeProtoProperties(props)%7Bthis.__data%3DObject.create(props)%3Bthis.__dataPending%3DObject.create(props)%3Bthis.__dataOld%3D%7B%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyAccessors%60%20implementation%20to%20avoid%20setting%0A%20%20%20%20%20%20%20*%20%60_setProperty%60's%20%60shouldNotify%3A%20true%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20initialize%20on%20the%20instance%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeInstanceProperties'%2Cvalue%3Afunction%20_initializeInstanceProperties(props)%7Bvar%20readOnly%3Dthis%5BTYPES.READ_ONLY%5D%3Bfor(var%20prop%20in%20props)%7Bif(!readOnly%7C%7C!readOnly%5Bprop%5D)%7Bthis.__dataPending%3Dthis.__dataPending%7C%7C%7B%7D%3Bthis.__dataOld%3Dthis.__dataOld%7C%7C%7B%7D%3Bthis.__data%5Bprop%5D%3Dthis.__dataPending%5Bprop%5D%3Dprops%5Bprop%5D%3B%7D%7D%7D%2F%2F%20Prototype%20setup%20----------------------------------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60addPropertyEffect%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addPropertyEffect'%2Cvalue%3Afunction%20_addPropertyEffect(property%2Ctype%2Ceffect)%7Bthis._createPropertyAccessor(property%2Ctype%3D%3DTYPES.READ_ONLY)%3B%2F%2F%20effects%20are%20accumulated%20into%20arrays%20per%20property%20based%20on%20type%0Avar%20effects%3DensureOwnEffectMap(this%2Ctype)%5Bproperty%5D%3Bif(!effects)%7Beffects%3Dthis%5Btype%5D%5Bproperty%5D%3D%5B%5D%3B%7Deffects.push(effect)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20the%20given%20property%20effect.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20the%20effect%20was%20associated%20with%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%20to%20remove%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removePropertyEffect'%2Cvalue%3Afunction%20_removePropertyEffect(property%2Ctype%2Ceffect)%7Bvar%20effects%3DensureOwnEffectMap(this%2Ctype)%5Bproperty%5D%3Bvar%20idx%3Deffects.indexOf(effect)%3Bif(idx%3E%3D0)%7Beffects.splice(idx%2C1)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20property%20effect%0A%20%20%20%20%20%20%20*%20of%20a%20certain%20type.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasPropertyEffect'%2Cvalue%3Afunction%20_hasPropertyEffect(property%2Ctype)%7Bvar%20effects%3Dthis%5Btype%5D%3Breturn%20Boolean(effects%26%26effects%5Bproperty%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22read%20only%22%0A%20%20%20%20%20%20%20*%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasReadOnlyEffect'%2Cvalue%3Afunction%20_hasReadOnlyEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.READ_ONLY)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22notify%22%0A%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasNotifyEffect'%2Cvalue%3Afunction%20_hasNotifyEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.NOTIFY)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22reflect%20to%20attribute%22%0A%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasReflectEffect'%2Cvalue%3Afunction%20_hasReflectEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.REFLECT)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22computed%22%0A%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasComputedEffect'%2Cvalue%3Afunction%20_hasComputedEffect(property)%7Breturn%20this._hasPropertyEffect(property%2CTYPES.COMPUTE)%3B%7D%2F%2F%20Runtime%20----------------------------------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Sets%20a%20pending%20property%20or%20path.%20%20If%20the%20root%20property%20of%20the%20path%20in%0A%20%20%20%20%20%20%20*%20question%20had%20no%20accessor%2C%20the%20path%20is%20set%2C%20otherwise%20it%20is%20enqueued%0A%20%20%20%20%20%20%20*%20via%20%60_setPendingProperty%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20function%20isolates%20relatively%20expensive%20functionality%20necessary%0A%20%20%20%20%20%20%20*%20for%20the%20public%20API%20(%60set%60%2C%20%60setProperties%60%2C%20%60notifyPath%60%2C%20and%20property%0A%20%20%20%20%20%20%20*%20change%20listeners%20via%20%7B%7B...%7D%7D%20bindings)%2C%20such%20that%20it%20is%20only%20done%0A%20%20%20%20%20%20%20*%20when%20paths%20enter%20the%20system%2C%20and%20not%20at%20every%20propagation%20step.%20%20It%0A%20%20%20%20%20%20%20*%20also%20sets%20a%20%60__dataHasPaths%60%20flag%20on%20the%20instance%20which%20is%20used%20to%0A%20%20%20%20%20%20%20*%20fast-path%20slower%20path-matching%20code%20in%20the%20property%20effects%20host%20paths.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60path%60%20can%20be%20a%20path%20string%20or%20array%20of%20path%20parts%20as%20accepted%20by%20the%0A%20%20%20%20%20%20%20*%20public%20API.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cnumber%7Cstring%3E%7D%20path%20Path%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20shouldNotify%20Set%20to%20true%20if%20this%20change%20should%0A%20%20%20%20%20%20%20*%20%20cause%20a%20property%20notification%20event%20dispatch%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20isPathNotification%20If%20the%20path%20being%20set%20is%20a%20path%0A%20%20%20%20%20%20%20*%20%20%20notification%20of%20an%20already%20changed%20value%2C%20as%20opposed%20to%20a%20request%0A%20%20%20%20%20%20%20*%20%20%20to%20set%20and%20notify%20the%20change.%20%20In%20the%20latter%20%60false%60%20case%2C%20a%20dirty%0A%20%20%20%20%20%20%20*%20%20%20check%20is%20performed%20and%20then%20the%20value%20is%20set%20to%20the%20path%20before%0A%20%20%20%20%20%20%20*%20%20%20enqueuing%20the%20pending%20property%20change.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%2Fpath%20was%20enqueued%20in%0A%20%20%20%20%20%20%20*%20%20%20the%20pending%20changes%20bag.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setPendingPropertyOrPath'%2Cvalue%3Afunction%20_setPendingPropertyOrPath(path%2Cvalue%2CshouldNotify%2CisPathNotification)%7Bif(isPathNotification%7C%7CPolymer.Path.root(Array.isArray(path)%3Fpath%5B0%5D%3Apath)!%3D%3Dpath)%7B%2F%2F%20Dirty%20check%20changes%20being%20set%20to%20a%20path%20against%20the%20actual%20object%2C%0A%2F%2F%20since%20this%20is%20the%20entry%20point%20for%20paths%20into%20the%20system%3B%20from%20here%0A%2F%2F%20the%20only%20dirty%20checks%20are%20against%20the%20%60__dataTemp%60%20cache%20to%20prevent%0A%2F%2F%20duplicate%20work%20in%20the%20same%20turn%20only.%20Note%2C%20if%20this%20was%20a%20notification%0A%2F%2F%20of%20a%20change%20already%20set%20to%20a%20path%20(isPathNotification%3A%20true)%2C%0A%2F%2F%20we%20always%20let%20the%20change%20through%20and%20skip%20the%20%60set%60%20since%20it%20was%0A%2F%2F%20already%20dirty%20checked%20at%20the%20point%20of%20entry%20and%20the%20underlying%0A%2F%2F%20object%20has%20already%20been%20updated%0Aif(!isPathNotification)%7Bvar%20old%3DPolymer.Path.get(this%2Cpath)%3Bpath%3D%2F**%20%40type%20%7Bstring%7D%20*%2FPolymer.Path.set(this%2Cpath%2Cvalue)%3B%2F%2F%20Use%20property-accessor's%20simpler%20dirty%20check%0Aif(!path%7C%7C!_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_shouldPropertyChange'%2Cthis).call(this%2Cpath%2Cvalue%2Cold))%7Breturn%20false%3B%7D%7Dthis.__dataHasPaths%3Dtrue%3Bif(this._setPendingProperty(%2F**%40type%7Bstring%7D*%2Fpath%2Cvalue%2CshouldNotify))%7BcomputeLinkedPaths(this%2Cpath%2Cvalue)%3Breturn%20true%3B%7D%7Delse%7Bif(this.__dataHasAccessor%26%26this.__dataHasAccessor%5Bpath%5D)%7Breturn%20this._setPendingProperty(%2F**%40type%7Bstring%7D*%2Fpath%2Cvalue%2CshouldNotify)%3B%7Delse%7Bthis%5Bpath%5D%3Dvalue%3B%7D%7Dreturn%20false%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Applies%20a%20value%20to%20a%20non-Polymer%20element%2Fnode's%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20implementation%20makes%20a%20best-effort%20at%20binding%20interop%3A%0A%20%20%20%20%20%20%20*%20Some%20native%20element%20properties%20have%20side-effects%20when%0A%20%20%20%20%20%20%20*%20re-setting%20the%20same%20value%20(e.g.%20setting%20%60%3Cinput%3E.value%60%20resets%20the%0A%20%20%20%20%20%20%20*%20cursor%20position)%2C%20so%20we%20do%20a%20dirty-check%20before%20setting%20the%20value.%0A%20%20%20%20%20%20%20*%20However%2C%20for%20better%20interop%20with%20non-Polymer%20custom%20elements%20that%0A%20%20%20%20%20%20%20*%20accept%20objects%2C%20we%20explicitly%20re-set%20object%20changes%20coming%20from%20the%0A%20%20%20%20%20%20%20*%20Polymer%20world%20(which%20may%20include%20deep%20object%20changes%20without%20the%0A%20%20%20%20%20%20%20*%20top%20reference%20changing)%2C%20erring%20on%20the%20side%20of%20providing%20more%0A%20%20%20%20%20%20%20*%20information.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20method%20to%20provide%20alternate%20approaches.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20The%20node%20to%20set%20a%20property%20on%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20The%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20to%20set%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setUnmanagedPropertyToNode'%2Cvalue%3Afunction%20_setUnmanagedPropertyToNode(node%2Cprop%2Cvalue)%7B%2F%2F%20It%20is%20a%20judgment%20call%20that%20resetting%20primitives%20is%0A%2F%2F%20%22bad%22%20and%20resettings%20objects%20is%20also%20%22good%22%3B%20alternatively%20we%20could%0A%2F%2F%20implement%20a%20whitelist%20of%20tag%20%26%20property%20values%20that%20should%20never%0A%2F%2F%20be%20reset%20(e.g.%20%3Cinput%3E.value%20%26%26%20%3Cselect%3E.value)%0Aif(value!%3D%3Dnode%5Bprop%5D%7C%7C(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%3D%3D'object')%7Bnode%5Bprop%5D%3Dvalue%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20%60PropertiesChanged%60%20implementation%20to%20introduce%20special%0A%20%20%20%20%20%20%20*%20dirty%20check%20logic%20depending%20on%20the%20property%20%26%20value%20being%20set%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%201.%20Any%20value%20set%20to%20a%20path%20(e.g.%20'obj.prop'%3A%2042%20or%20'obj.prop'%3A%20%7B...%7D)%0A%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__dataTemp%60%2C%20dirty%20checked%20against%20%60__dataTemp%60%0A%20%20%20%20%20%20%20*%202.%20Object%20set%20to%20simple%20property%20(e.g.%20'prop'%3A%20%7B...%7D)%0A%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__dataTemp%60%20and%20%60__data%60%2C%20dirty%20checked%20against%0A%20%20%20%20%20%20%20*%20%20%20%20%60__dataTemp%60%20by%20default%20implementation%20of%20%60_shouldPropertyChange%60%0A%20%20%20%20%20%20%20*%203.%20Primitive%20value%20set%20to%20simple%20property%20(e.g.%20'prop'%3A%2042)%0A%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__data%60%2C%20dirty%20checked%20against%20%60__data%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20dirty-check%20is%20important%20to%20prevent%20cycles%20due%20to%20two-way%0A%20%20%20%20%20%20%20*%20notification%2C%20but%20paths%20and%20objects%20are%20only%20dirty%20checked%20against%20any%0A%20%20%20%20%20%20%20*%20previous%20value%20set%20during%20this%20turn%20via%20a%20%22temporary%20cache%22%20that%20is%0A%20%20%20%20%20%20%20*%20cleared%20when%20the%20last%20%60_propertiesChanged%60%20exits.%20This%20is%20so%3A%0A%20%20%20%20%20%20%20*%20a.%20any%20cached%20array%20paths%20(e.g.%20'array.3.prop')%20may%20be%20invalidated%0A%20%20%20%20%20%20%20*%20%20%20%20due%20to%20array%20mutations%20like%20shift%2Funshift%2Fsplice%3B%20this%20is%20fine%0A%20%20%20%20%20%20%20*%20%20%20%20since%20path%20changes%20are%20dirty-checked%20at%20user%20entry%20points%20like%20%60set%60%0A%20%20%20%20%20%20%20*%20b.%20dirty-checking%20for%20objects%20only%20lasts%20one%20turn%20to%20allow%20the%20user%0A%20%20%20%20%20%20%20*%20%20%20%20to%20mutate%20the%20object%20in-place%20and%20re-set%20it%20with%20the%20same%20identity%0A%20%20%20%20%20%20%20*%20%20%20%20and%20have%20all%20sub-properties%20re-propagated%20in%20a%20subsequent%20turn.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20temp%20cache%20is%20not%20necessarily%20sufficient%20to%20prevent%20invalid%20array%0A%20%20%20%20%20%20%20*%20paths%2C%20since%20a%20splice%20can%20happen%20during%20the%20same%20turn%20(with%20pathological%0A%20%20%20%20%20%20%20*%20user%20code)%3B%20we%20could%20introduce%20a%20%22fixup%22%20for%20temporarily%20cached%20array%0A%20%20%20%20%20%20%20*%20paths%20if%20needed%3A%20https%3A%2F%2Fgithub.com%2FPolymer%2Fpolymer%2Fissues%2F4227%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20shouldNotify%20True%20if%20property%20should%20fire%20notification%0A%20%20%20%20%20%20%20*%20%20%20event%20(applies%20only%20for%20%60notify%3A%20true%60%20properties)%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%20changed%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setPendingProperty'%2Cvalue%3Afunction%20_setPendingProperty(property%2Cvalue%2CshouldNotify)%7Bvar%20isPath%3Dthis.__dataHasPaths%26%26Polymer.Path.isPath(property)%3Bvar%20prevProps%3DisPath%3Fthis.__dataTemp%3Athis.__data%3Bif(this._shouldPropertyChange(property%2Cvalue%2CprevProps%5Bproperty%5D))%7Bif(!this.__dataPending)%7Bthis.__dataPending%3D%7B%7D%3Bthis.__dataOld%3D%7B%7D%3B%7D%2F%2F%20Ensure%20old%20is%20captured%20from%20the%20last%20turn%0Aif(!(property%20in%20this.__dataOld))%7Bthis.__dataOld%5Bproperty%5D%3Dthis.__data%5Bproperty%5D%3B%7D%2F%2F%20Paths%20are%20stored%20in%20temporary%20cache%20(cleared%20at%20end%20of%20turn)%2C%0A%2F%2F%20which%20is%20used%20for%20dirty-checking%2C%20all%20others%20stored%20in%20__data%0Aif(isPath)%7Bthis.__dataTemp%5Bproperty%5D%3Dvalue%3B%7Delse%7Bthis.__data%5Bproperty%5D%3Dvalue%3B%7D%2F%2F%20All%20changes%20go%20into%20pending%20property%20bag%2C%20passed%20to%20_propertiesChanged%0Athis.__dataPending%5Bproperty%5D%3Dvalue%3B%2F%2F%20Track%20properties%20that%20should%20notify%20separately%0Aif(isPath%7C%7Cthis%5BTYPES.NOTIFY%5D%26%26this%5BTYPES.NOTIFY%5D%5Bproperty%5D)%7Bthis.__dataToNotify%3Dthis.__dataToNotify%7C%7C%7B%7D%3Bthis.__dataToNotify%5Bproperty%5D%3DshouldNotify%3B%7Dreturn%20true%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20base%20implementation%20to%20ensure%20all%20accessors%20set%20%60shouldNotify%60%0A%20%20%20%20%20%20%20*%20to%20true%2C%20for%20per-property%20notification%20tracking.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setProperty'%2Cvalue%3Afunction%20_setProperty(property%2Cvalue)%7Bif(this._setPendingProperty(property%2Cvalue%2Ctrue))%7Bthis._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessor%60's%20default%20async%20queuing%20of%0A%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%3A%20if%20%60__dataReady%60%20is%20false%20(has%20not%20yet%20been%0A%20%20%20%20%20%20%20*%20manually%20flushed)%2C%20the%20function%20no-ops%3B%20otherwise%20flushes%0A%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20synchronously.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_invalidateProperties'%2Cvalue%3Afunction%20_invalidateProperties()%7Bif(this.__dataReady)%7Bthis._flushProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20the%20given%20client%20on%20a%20list%20of%20pending%20clients%2C%20whose%0A%20%20%20%20%20%20%20*%20pending%20property%20changes%20can%20later%20be%20flushed%20via%20a%20call%20to%0A%20%20%20%20%20%20%20*%20%60_flushClients%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20client%20PropertyEffects%20client%20to%20enqueue%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_enqueueClient'%2Cvalue%3Afunction%20_enqueueClient(client)%7Bthis.__dataPendingClients%3Dthis.__dataPendingClients%7C%7C%5B%5D%3Bif(client!%3D%3Dthis)%7Bthis.__dataPendingClients.push(client)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20superclass%20implementation.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_flushProperties'%2Cvalue%3Afunction%20_flushProperties()%7Bthis.__dataCounter%2B%2B%3B_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_flushProperties'%2Cthis).call(this)%3Bthis.__dataCounter--%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Flushes%20any%20clients%20previously%20enqueued%20via%20%60_enqueueClient%60%2C%20causing%0A%20%20%20%20%20%20%20*%20their%20%60_flushProperties%60%20method%20to%20run.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_flushClients'%2Cvalue%3Afunction%20_flushClients()%7Bif(!this.__dataClientsReady)%7Bthis.__dataClientsReady%3Dtrue%3Bthis._readyClients()%3B%2F%2F%20Override%20point%20where%20accessors%20are%20turned%20on%3B%20importantly%2C%0A%2F%2F%20this%20is%20after%20clients%20have%20fully%20readied%2C%20providing%20a%20guarantee%0A%2F%2F%20that%20any%20property%20effects%20occur%20only%20after%20all%20clients%20are%20ready.%0Athis.__dataReady%3Dtrue%3B%7Delse%7Bthis.__enableOrFlushClients()%3B%7D%7D%2F%2F%20NOTE%3A%20We%20ensure%20clients%20either%20enable%20or%20flush%20as%20appropriate.%20This%0A%2F%2F%20handles%20two%20corner%20cases%3A%0A%2F%2F%20(1)%20clients%20flush%20properly%20when%20connected%2Fenabled%20before%20the%20host%0A%2F%2F%20enables%3B%20e.g.%0A%2F%2F%20%20%20(a)%20Templatize%20stamps%20with%20no%20properties%20and%20does%20not%20flush%20and%0A%2F%2F%20%20%20(b)%20the%20instance%20is%20inserted%20into%20dom%20and%0A%2F%2F%20%20%20(c)%20then%20the%20instance%20flushes.%0A%2F%2F%20(2)%20clients%20enable%20properly%20when%20not%20connected%2Fenabled%20when%20the%20host%0A%2F%2F%20flushes%3B%20e.g.%0A%2F%2F%20%20%20(a)%20a%20template%20is%20runtime%20stamped%20and%20not%20yet%20connected%2Fenabled%0A%2F%2F%20%20%20(b)%20a%20host%20sets%20a%20property%2C%20causing%20stamped%20dom%20to%20flush%0A%2F%2F%20%20%20(c)%20the%20stamped%20dom%20enables.%0A%7D%2C%7Bkey%3A'__enableOrFlushClients'%2Cvalue%3Afunction%20__enableOrFlushClients()%7Bvar%20clients%3Dthis.__dataPendingClients%3Bif(clients)%7Bthis.__dataPendingClients%3Dnull%3Bfor(var%20i%3D0%3Bi%3Cclients.length%3Bi%2B%2B)%7Bvar%20client%3Dclients%5Bi%5D%3Bif(!client.__dataEnabled)%7Bclient._enableProperties()%3B%7Delse%20if(client.__dataPending)%7Bclient._flushProperties()%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Perform%20any%20initial%20setup%20on%20client%20dom.%20Called%20before%20the%20first%0A%20%20%20%20%20%20%20*%20%60_flushProperties%60%20call%20on%20client%20dom%20and%20before%20any%20element%0A%20%20%20%20%20%20%20*%20observers%20are%20called.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_readyClients'%2Cvalue%3Afunction%20_readyClients()%7Bthis.__enableOrFlushClients()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Sets%20a%20bag%20of%20property%20changes%20to%20this%20instance%2C%20and%0A%20%20%20%20%20%20%20*%20synchronously%20processes%20all%20effects%20of%20the%20properties%20as%20a%20batch.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Property%20names%20must%20be%20simple%20properties%2C%20not%20paths.%20%20Batched%0A%20%20%20%20%20%20%20*%20path%20propagation%20is%20not%20supported.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20one%20or%20more%20key-value%20pairs%20whose%20key%20is%0A%20%20%20%20%20%20%20*%20%20%20a%20property%20and%20value%20is%20the%20new%20value%20to%20set%20for%20that%20property.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20setReadOnly%20When%20true%2C%20any%20private%20values%20set%20in%0A%20%20%20%20%20%20%20*%20%20%20%60props%60%20will%20be%20set.%20By%20default%2C%20%60setProperties%60%20will%20not%20set%0A%20%20%20%20%20%20%20*%20%20%20%60readOnly%3A%20true%60%20root%20properties.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'setProperties'%2Cvalue%3Afunction%20setProperties(props%2CsetReadOnly)%7Bfor(var%20path%20in%20props)%7Bif(setReadOnly%7C%7C!this%5BTYPES.READ_ONLY%5D%7C%7C!this%5BTYPES.READ_ONLY%5D%5Bpath%5D)%7B%2F%2FTODO(kschaaf)%3A%20explicitly%20disallow%20paths%20in%20setProperty%3F%0A%2F%2F%20wildcard%20observers%20currently%20only%20pass%20the%20first%20changed%20path%0A%2F%2F%20in%20the%20%60info%60%20object%2C%20and%20you%20could%20do%20some%20odd%20things%20batching%0A%2F%2F%20paths%2C%20e.g.%20%7B'foo.bar'%3A%20%7B...%7D%2C%20'foo'%3A%20null%7D%0Athis._setPendingPropertyOrPath(path%2Cprops%5Bpath%5D%2Ctrue)%3B%7D%7Dthis._invalidateProperties()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessors%60%20so%20that%20property%20accessor%0A%20%20%20%20%20%20%20*%20side%20effects%20are%20not%20enabled%20until%20after%20client%20dom%20is%20fully%20ready.%0A%20%20%20%20%20%20%20*%20Also%20calls%20%60_flushClients%60%20callback%20to%20ensure%20client%20dom%20is%20enabled%0A%20%20%20%20%20%20%20*%20that%20was%20not%20enabled%20as%20a%20result%20of%20flushing%20properties.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7B%2F%2F%20It%20is%20important%20that%20%60super.ready()%60%20is%20not%20called%20here%20as%20it%0A%2F%2F%20immediately%20turns%20on%20accessors.%20Instead%2C%20we%20wait%20until%20%60readyClients%60%0A%2F%2F%20to%20enable%20accessors%20to%20provide%20a%20guarantee%20that%20clients%20are%20ready%0A%2F%2F%20before%20processing%20any%20accessors%20side%20effects.%0Athis._flushProperties()%3B%2F%2F%20If%20no%20data%20was%20pending%2C%20%60_flushProperties%60%20will%20not%20%60flushClients%60%0A%2F%2F%20so%20ensure%20this%20is%20done.%0Aif(!this.__dataClientsReady)%7Bthis._flushClients()%3B%7D%2F%2F%20Before%20ready%2C%20client%20notifications%20do%20not%20trigger%20_flushProperties.%0A%2F%2F%20Therefore%20a%20flush%20is%20necessary%20here%20if%20data%20has%20been%20set.%0Aif(this.__dataPending)%7Bthis._flushProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Implements%20%60PropertyAccessors%60's%20properties%20changed%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Runs%20each%20class%20of%20effects%20for%20the%20batch%20of%20changed%20properties%20in%0A%20%20%20%20%20%20%20*%20a%20specific%20order%20(compute%2C%20propagate%2C%20reflect%2C%20observe%2C%20notify).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propertiesChanged'%2Cvalue%3Afunction%20_propertiesChanged(currentProps%2CchangedProps%2ColdProps)%7B%2F%2F%20----------------------------%0A%2F%2F%20let%20c%20%3D%20Object.getOwnPropertyNames(changedProps%20%7C%7C%20%7B%7D)%3B%0A%2F%2F%20window.debug%20%26%26%20console.group(this.localName%20%2B%20'%23'%20%2B%20this.id%20%2B%20'%3A%20'%20%2B%20c)%3B%0A%2F%2F%20if%20(window.debug)%20%7B%20debugger%3B%20%7D%0A%2F%2F%20----------------------------%0Avar%20hasPaths%3Dthis.__dataHasPaths%3Bthis.__dataHasPaths%3Dfalse%3B%2F%2F%20Compute%20properties%0ArunComputedEffects(this%2CchangedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Clear%20notify%20properties%20prior%20to%20possible%20reentry%20(propagate%2C%20observe)%2C%0A%2F%2F%20but%20after%20computing%20effects%20have%20a%20chance%20to%20add%20to%20them%0Avar%20notifyProps%3Dthis.__dataToNotify%3Bthis.__dataToNotify%3Dnull%3B%2F%2F%20Propagate%20properties%20to%20clients%0Athis._propagatePropertyChanges(changedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Flush%20clients%0Athis._flushClients()%3B%2F%2F%20Reflect%20properties%0ArunEffects(this%2Cthis%5BTYPES.REFLECT%5D%2CchangedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Observe%20properties%0ArunEffects(this%2Cthis%5BTYPES.OBSERVE%5D%2CchangedProps%2ColdProps%2ChasPaths)%3B%2F%2F%20Notify%20properties%20to%20host%0Aif(notifyProps)%7BrunNotifyEffects(this%2CnotifyProps%2CchangedProps%2ColdProps%2ChasPaths)%3B%7D%2F%2F%20Clear%20temporary%20cache%20at%20end%20of%20turn%0Aif(this.__dataCounter%3D%3D1)%7Bthis.__dataTemp%3D%7B%7D%3B%7D%2F%2F%20----------------------------%0A%2F%2F%20window.debug%20%26%26%20console.groupEnd(this.localName%20%2B%20'%23'%20%2B%20this.id%20%2B%20'%3A%20'%20%2B%20c)%3B%0A%2F%2F%20----------------------------%0A%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20to%20propagate%20any%20property%20changes%20to%20stamped%20template%20nodes%0A%20%20%20%20%20%20%20*%20managed%20by%20this%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20changedProps%20Bag%20of%20changed%20properties%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propagatePropertyChanges'%2Cvalue%3Afunction%20_propagatePropertyChanges(changedProps%2ColdProps%2ChasPaths)%7Bif(this%5BTYPES.PROPAGATE%5D)%7BrunEffects(this%2Cthis%5BTYPES.PROPAGATE%5D%2CchangedProps%2ColdProps%2ChasPaths)%3B%7Dvar%20templateInfo%3Dthis.__templateInfo%3Bwhile(templateInfo)%7BrunEffects(this%2CtemplateInfo.propertyEffects%2CchangedProps%2ColdProps%2ChasPaths%2CtemplateInfo.nodeList)%3BtemplateInfo%3DtemplateInfo.nextTemplateInfo%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Aliases%20one%20data%20path%20as%20another%2C%20such%20that%20path%20notifications%20from%20one%0A%20%20%20%20%20%20%20*%20are%20routed%20to%20the%20other.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20to%20Target%20path%20to%20link.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20from%20Source%20path%20to%20link.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'linkPaths'%2Cvalue%3Afunction%20linkPaths(to%2Cfrom)%7Bto%3DPolymer.Path.normalize(to)%3Bfrom%3DPolymer.Path.normalize(from)%3Bthis.__dataLinkedPaths%3Dthis.__dataLinkedPaths%7C%7C%7B%7D%3Bthis.__dataLinkedPaths%5Bto%5D%3Dfrom%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20a%20data%20path%20alias%20previously%20established%20with%20%60_linkPaths%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20the%20path%20to%20unlink%20should%20be%20the%20target%20(%60to%60)%20used%20when%0A%20%20%20%20%20%20%20*%20linking%20the%20paths.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Target%20path%20to%20unlink.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unlinkPaths'%2Cvalue%3Afunction%20unlinkPaths(path)%7Bpath%3DPolymer.Path.normalize(path)%3Bif(this.__dataLinkedPaths)%7Bdelete%20this.__dataLinkedPaths%5Bpath%5D%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Notify%20that%20an%20array%20has%20changed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.items%20%3D%20%5B%20%7Bname%3A%20'Jim'%7D%2C%20%7Bname%3A%20'Todd'%7D%2C%20%7Bname%3A%20'Bill'%7D%20%5D%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20...%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.items.splice(1%2C%201%2C%20%7Bname%3A%20'Sam'%7D)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.items.push(%7Bname%3A%20'Bob'%7D)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.notifySplices('items'%2C%20%5B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%20index%3A%201%2C%20removed%3A%20%5B%7Bname%3A%20'Todd'%7D%5D%2C%20addedCount%3A%201%2C%20object%3A%20this.items%2C%20type%3A%20'splice'%20%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%20index%3A%203%2C%20removed%3A%20%5B%5D%2C%20addedCount%3A%201%2C%20object%3A%20this.items%2C%20type%3A%20'splice'%7D%0A%20%20%20%20%20%20%20*%20%20%20%20%20%5D)%3B%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20that%20should%20be%20notified.%0A%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20splices%20Array%20of%20splice%20records%20indicating%20ordered%0A%20%20%20%20%20%20%20*%20%20%20changes%20that%20occurred%20to%20the%20array.%20Each%20record%20should%20have%20the%0A%20%20%20%20%20%20%20*%20%20%20following%20fields%3A%0A%20%20%20%20%20%20%20*%20%20%20%20*%20index%3A%20index%20at%20which%20the%20change%20occurred%0A%20%20%20%20%20%20%20*%20%20%20%20*%20removed%3A%20array%20of%20items%20that%20were%20removed%20from%20this%20index%0A%20%20%20%20%20%20%20*%20%20%20%20*%20addedCount%3A%20number%20of%20new%20items%20added%20at%20this%20index%0A%20%20%20%20%20%20%20*%20%20%20%20*%20object%3A%20a%20reference%20to%20the%20array%20in%20question%0A%20%20%20%20%20%20%20*%20%20%20%20*%20type%3A%20the%20string%20literal%20'splice'%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20Note%20that%20splice%20records%20_must_%20be%20normalized%20such%20that%20they%20are%0A%20%20%20%20%20%20%20*%20%20%20reported%20in%20index%20order%20(raw%20results%20from%20%60Object.observe%60%20are%20not%0A%20%20%20%20%20%20%20*%20%20%20ordered%20and%20must%20be%20normalized%2Fmerged%20before%20notifying).%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'notifySplices'%2Cvalue%3Afunction%20notifySplices(path%2Csplices)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3B_notifySplices(this%2Carray%2Cinfo.path%2Csplices)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20reading%20a%20value%20from%20a%20path.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20if%20any%20part%20in%20the%20path%20is%20undefined%2C%20this%20method%20returns%0A%20%20%20%20%20%20%20*%20%60undefined%60%20(this%20method%20does%20not%20throw%20when%20dereferencing%20undefined%0A%20%20%20%20%20%20%20*%20paths).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B(string%7C!Array%3C(string%7Cnumber)%3E)%7D%20path%20Path%20to%20the%20value%0A%20%20%20%20%20%20%20*%20%20%20to%20read.%20%20The%20path%20may%20be%20specified%20as%20a%20string%20(e.g.%20%60foo.bar.baz%60)%0A%20%20%20%20%20%20%20*%20%20%20or%20an%20array%20of%20path%20parts%20(e.g.%20%60%5B'foo.bar'%2C%20'baz'%5D%60).%20%20Note%20that%0A%20%20%20%20%20%20%20*%20%20%20bracketed%20expressions%20are%20not%20supported%3B%20string-based%20path%20parts%0A%20%20%20%20%20%20%20*%20%20%20*must*%20be%20separated%20by%20dots.%20%20Note%20that%20when%20dereferencing%20array%0A%20%20%20%20%20%20%20*%20%20%20indices%2C%20the%20index%20may%20be%20used%20as%20a%20dotted%20part%20directly%0A%20%20%20%20%20%20%20*%20%20%20(e.g.%20%60users.12.name%60%20or%20%60%5B'users'%2C%2012%2C%20'name'%5D%60).%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20root%20Root%20object%20from%20which%20the%20path%20is%20evaluated.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20at%20the%20path%2C%20or%20%60undefined%60%20if%20any%20part%20of%20the%20path%0A%20%20%20%20%20%20%20*%20%20%20is%20undefined.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'get'%2Cvalue%3Afunction%20get(path%2Croot)%7Breturn%20Polymer.Path.get(root%7C%7Cthis%2Cpath)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20setting%20a%20value%20to%20a%20path%20and%20notifying%20any%0A%20%20%20%20%20%20%20*%20elements%20bound%20to%20the%20same%20path.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20if%20any%20part%20in%20the%20path%20except%20for%20the%20last%20is%20undefined%2C%0A%20%20%20%20%20%20%20*%20this%20method%20does%20nothing%20(this%20method%20does%20not%20throw%20when%0A%20%20%20%20%20%20%20*%20dereferencing%20undefined%20paths).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B(string%7C!Array%3C(string%7Cnumber)%3E)%7D%20path%20Path%20to%20the%20value%0A%20%20%20%20%20%20%20*%20%20%20to%20write.%20%20The%20path%20may%20be%20specified%20as%20a%20string%20(e.g.%20%60'foo.bar.baz'%60)%0A%20%20%20%20%20%20%20*%20%20%20or%20an%20array%20of%20path%20parts%20(e.g.%20%60%5B'foo.bar'%2C%20'baz'%5D%60).%20%20Note%20that%0A%20%20%20%20%20%20%20*%20%20%20bracketed%20expressions%20are%20not%20supported%3B%20string-based%20path%20parts%0A%20%20%20%20%20%20%20*%20%20%20*must*%20be%20separated%20by%20dots.%20%20Note%20that%20when%20dereferencing%20array%0A%20%20%20%20%20%20%20*%20%20%20indices%2C%20the%20index%20may%20be%20used%20as%20a%20dotted%20part%20directly%0A%20%20%20%20%20%20%20*%20%20%20(e.g.%20%60'users.12.name'%60%20or%20%60%5B'users'%2C%2012%2C%20'name'%5D%60).%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20at%20the%20specified%20path.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20root%20Root%20object%20from%20which%20the%20path%20is%20evaluated.%0A%20%20%20%20%20%20%20*%20%20%20When%20specified%2C%20no%20notification%20will%20occur.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'set'%2Cvalue%3Afunction%20set(path%2Cvalue%2Croot)%7Bif(root)%7BPolymer.Path.set(root%2Cpath%2Cvalue)%3B%7Delse%7Bif(!this%5BTYPES.READ_ONLY%5D%7C%7C!this%5BTYPES.READ_ONLY%5D%5B%2F**%20%40type%20%7Bstring%7D%20*%2Fpath%5D)%7Bif(this._setPendingPropertyOrPath(path%2Cvalue%2Ctrue))%7Bthis._invalidateProperties()%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20items%20onto%20the%20end%20of%20the%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.push%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20push%20onto%20array%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20New%20length%20of%20the%20array.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'push'%2Cvalue%3Afunction%20push(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bvar%20len%3Darray.length%3Bfor(var%20_len%3Darguments.length%2Citems%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bitems%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dvar%20ret%3Darray.push.apply(array%2Citems)%3Bif(items.length)%7BnotifySplice(this%2Carray%2Cinfo.path%2Clen%2Citems.length%2C%5B%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20the%20end%20of%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.pop%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20that%20was%20removed.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'pop'%2Cvalue%3Afunction%20pop(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bvar%20hadLength%3DBoolean(array.length)%3Bvar%20ret%3Darray.pop()%3Bif(hadLength)%7BnotifySplice(this%2Carray%2Cinfo.path%2Carray.length%2C0%2C%5Bret%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Starting%20from%20the%20start%20index%20specified%2C%20removes%200%20or%20more%20items%0A%20%20%20%20%20%20%20*%20from%20the%20array%20and%20inserts%200%20or%20more%20new%20items%20in%20their%20place.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.splice%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20start%20Index%20from%20which%20to%20start%20removing%2Finserting.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20deleteCount%20Number%20of%20items%20to%20remove.%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20insert%20into%20array.%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20of%20removed%20items.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'splice'%2Cvalue%3Afunction%20splice(path%2Cstart%2CdeleteCount)%7Bfor(var%20_len2%3Darguments.length%2Citems%3DArray(_len2%3E3%3F_len2-3%3A0)%2C_key2%3D3%3B_key2%3C_len2%3B_key2%2B%2B)%7Bitems%5B_key2-3%5D%3Darguments%5B_key2%5D%3B%7Dvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3B%2F%2F%20Normalize%20fancy%20native%20splice%20handling%20of%20crazy%20start%20values%0Aif(start%3C0)%7Bstart%3Darray.length-Math.floor(-start)%3B%7Delse%20if(start)%7Bstart%3DMath.floor(start)%3B%7D%2F%2F%20array.splice%20does%20different%20things%20based%20on%20the%20number%20of%20arguments%0A%2F%2F%20you%20pass%20in.%20Therefore%2C%20array.splice(0)%20and%20array.splice(0%2C%20undefined)%0A%2F%2F%20do%20different%20things.%20In%20the%20former%2C%20the%20whole%20array%20is%20cleared.%20In%20the%0A%2F%2F%20latter%2C%20no%20items%20are%20removed.%0A%2F%2F%20This%20means%20that%20we%20need%20to%20detect%20whether%201.%20one%20of%20the%20arguments%0A%2F%2F%20is%20actually%20passed%20in%20and%20then%202.%20determine%20how%20many%20arguments%0A%2F%2F%20we%20should%20pass%20on%20to%20the%20native%20array.splice%0A%2F%2F%0Avar%20ret%3Dvoid%200%3B%2F%2F%20Omit%20any%20additional%20arguments%20if%20they%20were%20not%20passed%20in%0Aif(arguments.length%3D%3D%3D2)%7Bret%3Darray.splice(start)%3B%2F%2F%20Either%20start%20was%20undefined%20and%20the%20others%20were%20defined%2C%20but%20in%20this%0A%2F%2F%20case%20we%20can%20safely%20pass%20on%20all%20arguments%0A%2F%2F%0A%2F%2F%20Note%3A%20this%20includes%20the%20case%20where%20none%20of%20the%20arguments%20were%20passed%20in%2C%0A%2F%2F%20e.g.%20this.splice('array').%20However%2C%20if%20both%20start%20and%20deleteCount%0A%2F%2F%20are%20undefined%2C%20array.splice%20will%20not%20modify%20the%20array%20(as%20expected)%0A%7Delse%7Bret%3Darray.splice.apply(array%2C%5Bstart%2CdeleteCount%5D.concat(items))%3B%7D%2F%2F%20At%20the%20end%2C%20check%20whether%20any%20items%20were%20passed%20in%20(e.g.%20insertions)%0A%2F%2F%20or%20if%20the%20return%20array%20contains%20items%20(e.g.%20deletions).%0A%2F%2F%20Only%20notify%20if%20items%20were%20added%20or%20deleted.%0Aif(items.length%7C%7Cret.length)%7BnotifySplice(this%2Carray%2Cinfo.path%2Cstart%2Citems.length%2Cret)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20the%20beginning%20of%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.pop%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20that%20was%20removed.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'shift'%2Cvalue%3Afunction%20shift(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bvar%20hadLength%3DBoolean(array.length)%3Bvar%20ret%3Darray.shift()%3Bif(hadLength)%7BnotifySplice(this%2Carray%2Cinfo.path%2C0%2C0%2C%5Bret%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20items%20onto%20the%20beginning%20of%20the%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20*%20%60Array.prototype.push%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20insert%20info%20array%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20New%20length%20of%20the%20array.%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unshift'%2Cvalue%3Afunction%20unshift(path)%7Bvar%20info%3D%7Bpath%3A''%7D%3Bvar%20array%3D%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2Cpath%2Cinfo)%3Bfor(var%20_len3%3Darguments.length%2Citems%3DArray(_len3%3E1%3F_len3-1%3A0)%2C_key3%3D1%3B_key3%3C_len3%3B_key3%2B%2B)%7Bitems%5B_key3-1%5D%3Darguments%5B_key3%5D%3B%7Dvar%20ret%3Darray.unshift.apply(array%2Citems)%3Bif(items.length)%7BnotifySplice(this%2Carray%2Cinfo.path%2C0%2Citems.length%2C%5B%5D)%3B%7Dreturn%20ret%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Notify%20that%20a%20path%20has%20changed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.item.user.name%20%3D%20'Bob'%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20this.notifyPath('item.user.name')%3B%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20that%20should%20be%20notified.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Value%20at%20the%20path%20(optional).%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'notifyPath'%2Cvalue%3Afunction%20notifyPath(path%2Cvalue)%7B%2F**%20%40type%20%7Bstring%7D%20*%2Fvar%20propPath%3Dvoid%200%3Bif(arguments.length%3D%3D1)%7B%2F%2F%20Get%20value%20if%20not%20supplied%0Avar%20info%3D%7Bpath%3A''%7D%3Bvalue%3DPolymer.Path.get(this%2Cpath%2Cinfo)%3BpropPath%3Dinfo.path%3B%7Delse%20if(Array.isArray(path))%7B%2F%2F%20Normalize%20path%20if%20needed%0ApropPath%3DPolymer.Path.normalize(path)%3B%7Delse%7BpropPath%3D%2F**%20%40type%7Bstring%7D%20*%2Fpath%3B%7Dif(this._setPendingPropertyOrPath(propPath%2Cvalue%2Ctrue%2Ctrue))%7Bthis._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createReadOnlyProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20protectedSetter%20Creates%20a%20custom%20protected%20setter%0A%20%20%20%20%20%20%20*%20%20%20when%20%60true%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createReadOnlyProperty'%2Cvalue%3Afunction%20_createReadOnlyProperty(property%2CprotectedSetter)%7Bthis._addPropertyEffect(property%2CTYPES.READ_ONLY)%3Bif(protectedSetter)%7Bthis%5B'_set'%2Bupper(property)%5D%3D%2F**%20%40this%20%7BPropertyEffects%7D%20*%2Ffunction(value)%7Bthis._setProperty(property%2Cvalue)%3B%7D%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createPropertyObserver%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7Cfunction(*%2C*)%7D%20method%20Function%20or%20name%20of%20observer%20method%20to%20call%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20dynamicFn%20Whether%20the%20method%20name%20should%20be%20included%20as%0A%20%20%20%20%20%20%20*%20%20%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createPropertyObserver'%2Cvalue%3Afunction%20_createPropertyObserver(property%2Cmethod%2CdynamicFn)%7Bvar%20info%3D%7Bproperty%3Aproperty%2Cmethod%3Amethod%2CdynamicFn%3ABoolean(dynamicFn)%7D%3Bthis._addPropertyEffect(property%2CTYPES.OBSERVE%2C%7Bfn%3ArunObserverEffect%2Cinfo%3Ainfo%2Ctrigger%3A%7Bname%3Aproperty%7D%7D)%3Bif(dynamicFn)%7Bthis._addPropertyEffect(%2F**%20%40type%20%7Bstring%7D%20*%2Fmethod%2CTYPES.OBSERVE%2C%7Bfn%3ArunObserverEffect%2Cinfo%3Ainfo%2Ctrigger%3A%7Bname%3Amethod%7D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createMethodObserver%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createMethodObserver'%2Cvalue%3Afunction%20_createMethodObserver(expression%2CdynamicFn)%7Bvar%20sig%3DparseMethod(expression)%3Bif(!sig)%7Bthrow%20new%20Error(%22Malformed%20observer%20expression%20'%22%2Bexpression%2B%22'%22)%3B%7DcreateMethodEffect(this%2Csig%2CTYPES.OBSERVE%2CrunMethodEffect%2Cnull%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createNotifyingProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createNotifyingProperty'%2Cvalue%3Afunction%20_createNotifyingProperty(property)%7Bthis._addPropertyEffect(property%2CTYPES.NOTIFY%2C%7Bfn%3ArunNotifyEffect%2Cinfo%3A%7BeventName%3ACaseMap.camelToDashCase(property)%2B'-changed'%2Cproperty%3Aproperty%7D%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createReflectedProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createReflectedProperty'%2Cvalue%3Afunction%20_createReflectedProperty(property)%7Bvar%20attr%3Dthis.constructor.attributeNameForProperty(property)%3Bif(attr%5B0%5D%3D%3D%3D'-')%7Bconsole.warn('Property%20'%2Bproperty%2B'%20cannot%20be%20reflected%20to%20attribute%20'%2Battr%2B'%20because%20%22-%22%20is%20not%20a%20valid%20starting%20attribute%20name.%20Use%20a%20lowercase%20first%20letter%20for%20the%20property%20instead.')%3B%7Delse%7Bthis._addPropertyEffect(property%2CTYPES.REFLECT%2C%7Bfn%3ArunReflectEffect%2Cinfo%3A%7BattrName%3Aattr%7D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createComputedProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20computed%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_createComputedProperty'%2Cvalue%3Afunction%20_createComputedProperty(property%2Cexpression%2CdynamicFn)%7Bvar%20sig%3DparseMethod(expression)%3Bif(!sig)%7Bthrow%20new%20Error(%22Malformed%20computed%20expression%20'%22%2Bexpression%2B%22'%22)%3B%7DcreateMethodEffect(this%2Csig%2CTYPES.COMPUTE%2CrunComputedEffect%2Cproperty%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Gather%20the%20argument%20values%20for%20a%20method%20specified%20in%20the%20provided%20array%0A%20%20%20%20%20%20%20*%20of%20argument%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20%60path%60%20and%20%60value%60%20arguments%20are%20used%20to%20fill%20in%20wildcard%20descriptor%0A%20%20%20%20%20%20%20*%20when%20the%20method%20is%20being%20called%20as%20a%20result%20of%20a%20path%20notification.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Array%3C!MethodArg%3E%7D%20args%20Array%20of%20argument%20metadata%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Property%2Fpath%20name%20that%20triggered%20the%20method%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%3C*%3E%7D%20Array%20of%20argument%20values%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_marshalArgs'%2Cvalue%3Afunction%20_marshalArgs(args%2Cpath%2Cprops)%7Bvar%20data%3Dthis.__data%3Bvar%20values%3D%5B%5D%3Bfor(var%20i%3D0%2Cl%3Dargs.length%3Bi%3Cl%3Bi%2B%2B)%7Bvar%20arg%3Dargs%5Bi%5D%3Bvar%20name%3Darg.name%3Bvar%20v%3Dvoid%200%3Bif(arg.literal)%7Bv%3Darg.value%3B%7Delse%7Bif(arg.structured)%7Bv%3DPolymer.Path.get(data%2Cname)%3B%2F%2F%20when%20data%20is%20not%20stored%20e.g.%20%60splices%60%0Aif(v%3D%3D%3Dundefined)%7Bv%3Dprops%5Bname%5D%3B%7D%7Delse%7Bv%3Ddata%5Bname%5D%3B%7D%7Dif(arg.wildcard)%7B%2F%2F%20Only%20send%20the%20actual%20path%20changed%20info%20if%20the%20change%20that%0A%2F%2F%20caused%20the%20observer%20to%20run%20matched%20the%20wildcard%0Avar%20baseChanged%3Dname.indexOf(path%2B'.')%3D%3D%3D0%3Bvar%20matches%3Dpath.indexOf(name)%3D%3D%3D0%26%26!baseChanged%3Bvalues%5Bi%5D%3D%7Bpath%3Amatches%3Fpath%3Aname%2Cvalue%3Amatches%3Fprops%5Bpath%5D%3Av%2Cbase%3Av%7D%3B%7Delse%7Bvalues%5Bi%5D%3Dv%3B%7D%7Dreturn%20values%3B%7D%2F%2F%20--%20static%20class%20methods%20------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Ensures%20an%20accessor%20exists%20for%20the%20specified%20property%2C%20and%20adds%0A%20%20%20%20%20%20%20*%20to%20a%20list%20of%20%22property%20effects%22%20that%20will%20run%20when%20the%20accessor%20for%0A%20%20%20%20%20%20%20*%20the%20specified%20property%20is%20set.%20%20Effects%20are%20grouped%20by%20%22type%22%2C%20which%0A%20%20%20%20%20%20%20*%20roughly%20corresponds%20to%20a%20phase%20in%20effect%20processing.%20%20The%20effect%0A%20%20%20%20%20%20%20*%20metadata%20should%20be%20in%20the%20following%20form%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20fn%3A%20effectFunction%2C%20%2F%2F%20Reference%20to%20function%20to%20call%20to%20perform%20effect%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20info%3A%20%7B%20...%20%7D%20%20%20%20%20%20%20%2F%2F%20Effect%20metadata%20passed%20to%20function%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20trigger%3A%20%7B%20%20%20%20%20%20%20%20%20%20%2F%2F%20Optional%20triggering%20metadata%3B%20if%20not%20provided%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20name%3A%20string%20%20%20%20%20%20%2F%2F%20the%20property%20is%20treated%20as%20a%20wildcard%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20structured%3A%20boolean%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20wildcard%3A%20boolean%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Effects%20are%20called%20from%20%60_propertiesChanged%60%20in%20the%20following%20order%20by%0A%20%20%20%20%20%20%20*%20type%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%201.%20COMPUTE%0A%20%20%20%20%20%20%20*%202.%20PROPAGATE%0A%20%20%20%20%20%20%20*%203.%20REFLECT%0A%20%20%20%20%20%20%20*%204.%20OBSERVE%0A%20%20%20%20%20%20%20*%205.%20NOTIFY%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Effect%20functions%20are%20called%20with%20the%20following%20signature%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20effectFunction(inst%2C%20path%2C%20props%2C%20oldProps%2C%20info%2C%20hasPaths)%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_bindTemplate'%2C%2F%2F%20--%20binding%20----------------------------------------------%0A%2F**%0A%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60bindTemplate%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20on%20the%20prototype%20(for%20prototypical%20template%0A%20%20%20%20%20%20%20*%20binding%2C%20to%20avoid%20creating%20accessors%20every%20instance)%20once%20per%20prototype%2C%0A%20%20%20%20%20%20%20*%20and%20will%20be%20called%20with%20%60runtimeBinding%3A%20true%60%20by%20%60_stampTemplate%60%20to%0A%20%20%20%20%20%20%20*%20create%20and%20link%20an%20instance%20of%20the%20template%20metadata%20associated%20with%20a%0A%20%20%20%20%20%20%20*%20particular%20stamping.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20containing%20binding%0A%20%20%20%20%20%20%20*%20%20%20bindings%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20instanceBinding%20When%20false%20(default)%2C%20performs%0A%20%20%20%20%20%20%20*%20%20%20%22prototypical%22%20binding%20of%20the%20template%20and%20overwrites%20any%20previously%0A%20%20%20%20%20%20%20*%20%20%20bound%20template%20for%20the%20class.%20When%20true%20(as%20passed%20from%0A%20%20%20%20%20%20%20*%20%20%20%60_stampTemplate%60)%2C%20the%20template%20info%20is%20instanced%20and%20linked%20into%0A%20%20%20%20%20%20%20*%20%20%20the%20list%20of%20bound%20templates.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Template%20metadata%20object%3B%20for%20%60runtimeBinding%60%2C%0A%20%20%20%20%20%20%20*%20%20%20this%20is%20an%20instance%20of%20the%20prototypical%20template%20info%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_bindTemplate(template%2CinstanceBinding)%7Bvar%20templateInfo%3Dthis.constructor._parseTemplate(template)%3Bvar%20wasPreBound%3Dthis.__templateInfo%3D%3DtemplateInfo%3B%2F%2F%20Optimization%3A%20since%20this%20is%20called%20twice%20for%20proto-bound%20templates%2C%0A%2F%2F%20don't%20attempt%20to%20recreate%20accessors%20if%20this%20template%20was%20pre-bound%0Aif(!wasPreBound)%7Bfor(var%20prop%20in%20templateInfo.propertyEffects)%7Bthis._createPropertyAccessor(prop)%3B%7D%7Dif(instanceBinding)%7B%2F%2F%20For%20instance-time%20binding%2C%20create%20instance%20of%20template%20metadata%0A%2F%2F%20and%20link%20into%20list%20of%20templates%20if%20necessary%0AtemplateInfo%3D%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2FObject.create(templateInfo)%3BtemplateInfo.wasPreBound%3DwasPreBound%3Bif(!wasPreBound%26%26this.__templateInfo)%7Bvar%20last%3Dthis.__templateInfoLast%7C%7Cthis.__templateInfo%3Bthis.__templateInfoLast%3Dlast.nextTemplateInfo%3DtemplateInfo%3BtemplateInfo.previousTemplateInfo%3Dlast%3Breturn%20templateInfo%3B%7D%7Dreturn%20this.__templateInfo%3DtemplateInfo%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20a%20property%20effect%20to%20the%20given%20template%20metadata%2C%20which%20is%20run%0A%20%20%20%20%20%20%20*%20at%20the%20%22propagate%22%20stage%20of%20%60_propertiesChanged%60%20when%20the%20template%0A%20%20%20%20%20%20%20*%20has%20been%20bound%20to%20the%20element%20via%20%60_bindTemplate%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20%60effect%60%20object%20should%20match%20the%20format%20in%20%60_addPropertyEffect%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20templateInfo%20Template%20metadata%20to%20add%20effect%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_stampTemplate'%2C%2F**%0A%20%20%20%20%20%20%20*%20Stamps%20the%20provided%20template%20and%20performs%20instance-time%20setup%20for%0A%20%20%20%20%20%20%20*%20Polymer%20template%20features%2C%20including%20data%20bindings%2C%20declarative%20event%0A%20%20%20%20%20%20%20*%20listeners%2C%20and%20the%20%60this.%24%60%20map%20of%20%60id%60's%20to%20nodes.%20%20A%20document%20fragment%0A%20%20%20%20%20%20%20*%20is%20returned%20containing%20the%20stamped%20DOM%2C%20ready%20for%20insertion%20into%20the%0A%20%20%20%20%20%20%20*%20DOM.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20more%20than%20once%3B%20however%20note%20that%20due%20to%0A%20%20%20%20%20%20%20*%20%60shadycss%60%20polyfill%20limitations%2C%20only%20styles%20from%20templates%20prepared%0A%20%20%20%20%20%20%20*%20using%20%60ShadyCSS.prepareTemplate%60%20will%20be%20correctly%20polyfilled%20(scoped%0A%20%20%20%20%20%20%20*%20to%20the%20shadow%20root%20and%20support%20CSS%20custom%20properties)%2C%20and%20note%20that%0A%20%20%20%20%20%20%20*%20%60ShadyCSS.prepareTemplate%60%20may%20only%20be%20called%20once%20per%20element.%20As%20such%2C%0A%20%20%20%20%20%20%20*%20any%20styles%20required%20by%20in%20runtime-stamped%20templates%20must%20be%20included%0A%20%20%20%20%20%20%20*%20in%20the%20main%20element%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20stamp%0A%20%20%20%20%20%20%20*%20%40return%20%7B!StampedTemplate%7D%20Cloned%20template%20content%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_stampTemplate(template)%7B%2F%2F%20Ensures%20that%20created%20dom%20is%20%60_enqueueClient%60'd%20to%20this%20element%20so%0A%2F%2F%20that%20it%20can%20be%20flushed%20on%20next%20call%20to%20%60_flushProperties%60%0AhostStack.beginHosting(this)%3Bvar%20dom%3D_get(PropertyEffects.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects.prototype)%2C'_stampTemplate'%2Cthis).call(this%2Ctemplate)%3BhostStack.endHosting(this)%3Bvar%20templateInfo%3D%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2Fthis._bindTemplate(template%2Ctrue)%3B%2F%2F%20Add%20template-instance-specific%20data%20to%20instanced%20templateInfo%0AtemplateInfo.nodeList%3Ddom.nodeList%3B%2F%2F%20Capture%20child%20nodes%20to%20allow%20unstamping%20of%20non-prototypical%20templates%0Aif(!templateInfo.wasPreBound)%7Bvar%20nodes%3DtemplateInfo.childNodes%3D%5B%5D%3Bfor(var%20n%3Ddom.firstChild%3Bn%3Bn%3Dn.nextSibling)%7Bnodes.push(n)%3B%7D%7Ddom.templateInfo%3DtemplateInfo%3B%2F%2F%20Setup%20compound%20storage%2C%202-way%20listeners%2C%20and%20dataHost%20for%20bindings%0AsetupBindings(this%2CtemplateInfo)%3B%2F%2F%20Flush%20properties%20into%20template%20nodes%20if%20already%20booted%0Aif(this.__dataReady)%7BrunEffects(this%2CtemplateInfo.propertyEffects%2Cthis.__data%2Cnull%2Cfalse%2CtemplateInfo.nodeList)%3B%7Dreturn%20dom%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20and%20unbinds%20the%20nodes%20previously%20contained%20in%20the%20provided%0A%20%20%20%20%20%20%20*%20DocumentFragment%20returned%20from%20%60_stampTemplate%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!StampedTemplate%7D%20dom%20DocumentFragment%20previously%20returned%0A%20%20%20%20%20%20%20*%20%20%20from%20%60_stampTemplate%60%20associated%20with%20the%20nodes%20to%20be%20removed%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removeBoundDom'%2Cvalue%3Afunction%20_removeBoundDom(dom)%7B%2F%2F%20Unlink%20template%20info%0Avar%20templateInfo%3Ddom.templateInfo%3Bif(templateInfo.previousTemplateInfo)%7BtemplateInfo.previousTemplateInfo.nextTemplateInfo%3DtemplateInfo.nextTemplateInfo%3B%7Dif(templateInfo.nextTemplateInfo)%7BtemplateInfo.nextTemplateInfo.previousTemplateInfo%3DtemplateInfo.previousTemplateInfo%3B%7Dif(this.__templateInfoLast%3D%3DtemplateInfo)%7Bthis.__templateInfoLast%3DtemplateInfo.previousTemplateInfo%3B%7DtemplateInfo.previousTemplateInfo%3DtemplateInfo.nextTemplateInfo%3Dnull%3B%2F%2F%20Remove%20stamped%20nodes%0Avar%20nodes%3DtemplateInfo.childNodes%3Bfor(var%20i%3D0%3Bi%3Cnodes.length%3Bi%2B%2B)%7Bvar%20node%3Dnodes%5Bi%5D%3Bnode.parentNode.removeChild(node)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20*%20parsing%20bindings%20from%20%60TextNode%60's'%20%60textContent%60.%20%20A%20%60bindings%60%0A%20%20%20%20%20%20%20*%20array%20is%20added%20to%20%60nodeInfo%60%20and%20populated%20with%20binding%20metadata%0A%20%20%20%20%20%20%20*%20with%20information%20capturing%20the%20binding%20target%2C%20and%20a%20%60parts%60%20array%0A%20%20%20%20%20%20%20*%20with%20one%20or%20more%20metadata%20objects%20capturing%20the%20source(s)%20of%20the%0A%20%20%20%20%20%20%20*%20binding.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'PROPERTY_EFFECT_TYPES'%2Cget%3Afunction%20get()%7Breturn%20TYPES%3B%7D%7D%5D%2C%5B%7Bkey%3A'addPropertyEffect'%2Cvalue%3Afunction%20addPropertyEffect(property%2Ctype%2Ceffect)%7Bthis.prototype._addPropertyEffect(property%2Ctype%2Ceffect)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20single-property%20observer%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7Cfunction(*%2C*)%7D%20method%20Function%20or%20name%20of%20observer%20method%20to%20call%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20dynamicFn%20Whether%20the%20method%20name%20should%20be%20included%20as%0A%20%20%20%20%20%20%20*%20%20%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createPropertyObserver'%2Cvalue%3Afunction%20createPropertyObserver(property%2Cmethod%2CdynamicFn)%7Bthis.prototype._createPropertyObserver(property%2Cmethod%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20multi-property%20%22method%20observer%22%20based%20on%20the%20provided%0A%20%20%20%20%20%20%20*%20expression%2C%20which%20should%20be%20a%20string%20in%20the%20form%20of%20a%20normal%20JavaScript%0A%20%20%20%20%20%20%20*%20function%20signature%3A%20%60'methodName(arg1%2C%20%5B...%2C%20argn%5D)'%60.%20%20Each%20argument%0A%20%20%20%20%20%20%20*%20should%20correspond%20to%20a%20property%20or%20path%20in%20the%20context%20of%20this%0A%20%20%20%20%20%20%20*%20prototype%20(or%20instance)%2C%20or%20may%20be%20a%20literal%20string%20or%20number.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createMethodObserver'%2Cvalue%3Afunction%20createMethodObserver(expression%2CdynamicFn)%7Bthis.prototype._createMethodObserver(expression%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Causes%20the%20setter%20for%20the%20given%20property%20to%20dispatch%20%60%3Cproperty%3E-changed%60%0A%20%20%20%20%20%20%20*%20events%20to%20notify%20of%20changes%20to%20the%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createNotifyingProperty'%2Cvalue%3Afunction%20createNotifyingProperty(property)%7Bthis.prototype._createNotifyingProperty(property)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20read-only%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20To%20set%20the%20property%2C%20use%20the%20protected%20%60_setProperty%60%20API.%0A%20%20%20%20%20%20%20*%20To%20create%20a%20custom%20protected%20setter%20(e.g.%20%60_setMyProp()%60%20for%0A%20%20%20%20%20%20%20*%20property%20%60myProp%60)%2C%20pass%20%60true%60%20for%20%60protectedSetter%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20if%20the%20property%20will%20have%20other%20property%20effects%2C%20this%20method%0A%20%20%20%20%20%20%20*%20should%20be%20called%20first%2C%20before%20adding%20other%20effects.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20protectedSetter%20Creates%20a%20custom%20protected%20setter%0A%20%20%20%20%20%20%20*%20%20%20when%20%60true%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createReadOnlyProperty'%2Cvalue%3Afunction%20createReadOnlyProperty(property%2CprotectedSetter)%7Bthis.prototype._createReadOnlyProperty(property%2CprotectedSetter)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Causes%20the%20setter%20for%20the%20given%20property%20to%20reflect%20the%20property%20value%0A%20%20%20%20%20%20%20*%20to%20a%20(dash-cased)%20attribute%20of%20the%20same%20name.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createReflectedProperty'%2Cvalue%3Afunction%20createReflectedProperty(property)%7Bthis.prototype._createReflectedProperty(property)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20a%20computed%20property%20whose%20value%20is%20set%20to%20the%20result%20of%20the%0A%20%20%20%20%20%20%20*%20method%20described%20by%20the%20given%20%60expression%60%20each%20time%20one%20or%20more%0A%20%20%20%20%20%20%20*%20arguments%20to%20the%20method%20changes.%20%20The%20expression%20should%20be%20a%20string%0A%20%20%20%20%20%20%20*%20in%20the%20form%20of%20a%20normal%20JavaScript%20function%20signature%3A%0A%20%20%20%20%20%20%20*%20%60'methodName(arg1%2C%20%5B...%2C%20argn%5D)'%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20computed%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%20whether%0A%20%20%20%20%20%20%20*%20%20%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createComputedProperty'%2Cvalue%3Afunction%20createComputedProperty(property%2Cexpression%2CdynamicFn)%7Bthis.prototype._createComputedProperty(property%2Cexpression%2CdynamicFn)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20the%20provided%20template%20to%20ensure%20binding%20effects%20are%20created%0A%20%20%20%20%20%20%20*%20for%20them%2C%20and%20then%20ensures%20property%20accessors%20are%20created%20for%20any%0A%20%20%20%20%20%20%20*%20dependent%20properties%20in%20the%20template.%20%20Binding%20effects%20for%20bound%0A%20%20%20%20%20%20%20*%20templates%20are%20stored%20in%20a%20linked%20list%20on%20the%20instance%20so%20that%0A%20%20%20%20%20%20%20*%20templates%20can%20be%20efficiently%20stamped%20and%20unstamped.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20containing%20binding%0A%20%20%20%20%20%20%20*%20%20%20bindings%0A%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Template%20metadata%20object%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'bindTemplate'%2Cvalue%3Afunction%20bindTemplate(template)%7Breturn%20this.prototype._bindTemplate(template)%3B%7D%7D%2C%7Bkey%3A'_addTemplatePropertyEffect'%2Cvalue%3Afunction%20_addTemplatePropertyEffect(templateInfo%2Cprop%2Ceffect)%7Bvar%20hostProps%3DtemplateInfo.hostProps%3DtemplateInfo.hostProps%7C%7C%7B%7D%3BhostProps%5Bprop%5D%3Dtrue%3Bvar%20effects%3DtemplateInfo.propertyEffects%3DtemplateInfo.propertyEffects%7C%7C%7B%7D%3Bvar%20propEffects%3Deffects%5Bprop%5D%3Deffects%5Bprop%5D%7C%7C%5B%5D%3BpropEffects.push(effect)%3B%7D%7D%2C%7Bkey%3A'_parseTemplateNode'%2Cvalue%3Afunction%20_parseTemplateNode(node%2CtemplateInfo%2CnodeInfo)%7Bvar%20noted%3D_get(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)%2C'_parseTemplateNode'%2Cthis).call(this%2Cnode%2CtemplateInfo%2CnodeInfo)%3Bif(node.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bvar%20parts%3Dthis._parseBindings(node.textContent%2CtemplateInfo)%3Bif(parts)%7B%2F%2F%20Initialize%20the%20textContent%20with%20any%20literal%20parts%0A%2F%2F%20NOTE%3A%20default%20to%20a%20space%20here%20so%20the%20textNode%20remains%3B%20some%20browsers%0A%2F%2F%20(IE)%20omit%20an%20empty%20textNode%20following%20cloneNode%2FimportNode.%0Anode.textContent%3DliteralFromParts(parts)%7C%7C'%20'%3BaddBinding(this%2CtemplateInfo%2CnodeInfo%2C'text'%2C'textContent'%2Cparts)%3Bnoted%3Dtrue%3B%7D%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20*%20parsing%20bindings%20from%20attributes.%20%20A%20%60bindings%60%0A%20%20%20%20%20%20%20*%20array%20is%20added%20to%20%60nodeInfo%60%20and%20populated%20with%20binding%20metadata%0A%20%20%20%20%20%20%20*%20with%20information%20capturing%20the%20binding%20target%2C%20and%20a%20%60parts%60%20array%0A%20%20%20%20%20%20%20*%20with%20one%20or%20more%20metadata%20objects%20capturing%20the%20source(s)%20of%20the%0A%20%20%20%20%20%20%20*%20binding.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Attribute%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Attribute%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNodeAttribute'%2Cvalue%3Afunction%20_parseTemplateNodeAttribute(node%2CtemplateInfo%2CnodeInfo%2Cname%2Cvalue)%7Bvar%20parts%3Dthis._parseBindings(value%2CtemplateInfo)%3Bif(parts)%7B%2F%2F%20Attribute%20or%20property%0Avar%20origName%3Dname%3Bvar%20kind%3D'property'%3B%2F%2F%20The%20only%20way%20we%20see%20a%20capital%20letter%20here%20is%20if%20the%20attr%20has%0A%2F%2F%20a%20capital%20letter%20in%20it%20per%20spec.%20In%20this%20case%2C%20to%20make%20sure%0A%2F%2F%20this%20binding%20works%2C%20we%20go%20ahead%20and%20make%20the%20binding%20to%20the%20attribute.%0Aif(capitalAttributeRegex.test(name))%7Bkind%3D'attribute'%3B%7Delse%20if(name%5Bname.length-1%5D%3D%3D'%24')%7Bname%3Dname.slice(0%2C-1)%3Bkind%3D'attribute'%3B%7D%2F%2F%20Initialize%20attribute%20bindings%20with%20any%20literal%20parts%0Avar%20literal%3DliteralFromParts(parts)%3Bif(literal%26%26kind%3D%3D'attribute')%7B%2F%2F%20Ensure%20a%20ShadyCSS%20template%20scoped%20style%20is%20not%20removed%0A%2F%2F%20when%20a%20class%24%20binding's%20initial%20literal%20value%20is%20set.%0Aif(name%3D%3D'class'%26%26node.hasAttribute('class'))%7Bliteral%2B%3D'%20'%2Bnode.getAttribute(name)%3B%7Dnode.setAttribute(name%2Cliteral)%3B%7D%2F%2F%20Clear%20attribute%20before%20removing%2C%20since%20IE%20won't%20allow%20removing%0A%2F%2F%20%60value%60%20attribute%20if%20it%20previously%20had%20a%20value%20(can't%0A%2F%2F%20unconditionally%20set%20''%20before%20removing%20since%20attributes%20with%20%60%24%60%0A%2F%2F%20can't%20be%20set%20using%20setAttribute)%0Aif(node.localName%3D%3D%3D'input'%26%26origName%3D%3D%3D'value')%7Bnode.setAttribute(origName%2C'')%3B%7D%2F%2F%20Remove%20annotation%0Anode.removeAttribute(origName)%3B%2F%2F%20Case%20hackery%3A%20attributes%20are%20lower-case%2C%20but%20bind%20targets%0A%2F%2F%20(properties)%20are%20case%20sensitive.%20Gambit%20is%20to%20map%20dash-case%20to%0A%2F%2F%20camel-case%3A%20%60foo-bar%60%20becomes%20%60fooBar%60.%0A%2F%2F%20Attribute%20bindings%20are%20excepted.%0Aif(kind%3D%3D%3D'property')%7Bname%3DPolymer.CaseMap.dashToCamelCase(name)%3B%7DaddBinding(this%2CtemplateInfo%2CnodeInfo%2Ckind%2Cname%2Cparts%2Cliteral)%3Breturn%20true%3B%7Delse%7Breturn%20_get(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)%2C'_parseTemplateNodeAttribute'%2Cthis).call(this%2Cnode%2CtemplateInfo%2CnodeInfo%2Cname%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20*%20binding%20the%20properties%20that%20a%20nested%20template%20depends%20on%20to%20the%20template%0A%20%20%20%20%20%20%20*%20as%20%60_host_%3Cproperty%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNestedTemplate'%2Cvalue%3Afunction%20_parseTemplateNestedTemplate(node%2CtemplateInfo%2CnodeInfo)%7Bvar%20noted%3D_get(PropertyEffects.__proto__%7C%7CObject.getPrototypeOf(PropertyEffects)%2C'_parseTemplateNestedTemplate'%2Cthis).call(this%2Cnode%2CtemplateInfo%2CnodeInfo)%3B%2F%2F%20Merge%20host%20props%20into%20outer%20template%20and%20add%20bindings%0Avar%20hostProps%3DnodeInfo.templateInfo.hostProps%3Bvar%20mode%3D'%7B'%3Bfor(var%20source%20in%20hostProps)%7Bvar%20parts%3D%5B%7Bmode%3Amode%2Csource%3Asource%2Cdependencies%3A%5Bsource%5D%7D%5D%3BaddBinding(this%2CtemplateInfo%2CnodeInfo%2C'property'%2C'_host_'%2Bsource%2Cparts)%3B%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20to%20parse%20text%20in%20a%20template%20(either%20attribute%20values%20or%0A%20%20%20%20%20%20%20*%20textContent)%20into%20binding%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Any%20overrides%20of%20this%20method%20should%20return%20an%20array%20of%20binding%20part%0A%20%20%20%20%20%20%20*%20metadata%20%20representing%20one%20or%20more%20bindings%20found%20in%20the%20provided%20text%0A%20%20%20%20%20%20%20*%20and%20any%20%22literal%22%20text%20in%20between.%20%20Any%20non-literal%20parts%20will%20be%20passed%0A%20%20%20%20%20%20%20*%20to%20%60_evaluateBinding%60%20when%20any%20dependencies%20change.%20%20The%20only%20required%0A%20%20%20%20%20%20%20*%20fields%20of%20each%20%22part%22%20in%20the%20returned%20array%20are%20as%20follows%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20-%20%60dependencies%60%20-%20Array%20containing%20trigger%20metadata%20for%20each%20property%0A%20%20%20%20%20%20%20*%20%20%20that%20should%20trigger%20the%20binding%20to%20update%0A%20%20%20%20%20%20%20*%20-%20%60literal%60%20-%20String%20containing%20text%20if%20the%20part%20represents%20a%20literal%3B%0A%20%20%20%20%20%20%20*%20%20%20in%20this%20case%20no%20%60dependencies%60%20are%20needed%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Additional%20metadata%20for%20use%20by%20%60_evaluateBinding%60%20may%20be%20provided%20in%0A%20%20%20%20%20%20%20*%20each%20part%20object%20as%20needed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20handles%20the%20following%20types%20of%20bindings%0A%20%20%20%20%20%20%20*%20(one%20or%20more%20may%20be%20intermixed%20with%20literal%20strings)%3A%0A%20%20%20%20%20%20%20*%20-%20Property%20binding%3A%20%60%5B%5Bprop%5D%5D%60%0A%20%20%20%20%20%20%20*%20-%20Path%20binding%3A%20%60%5B%5Bobject.prop%5D%5D%60%0A%20%20%20%20%20%20%20*%20-%20Negated%20property%20or%20path%20bindings%3A%20%60%5B%5B!prop%5D%5D%60%20or%20%60%5B%5B!object.prop%5D%5D%60%0A%20%20%20%20%20%20%20*%20-%20Two-way%20property%20or%20path%20bindings%20(supports%20negation)%3A%0A%20%20%20%20%20%20%20*%20%20%20%60%7B%7Bprop%7D%7D%60%2C%20%60%7B%7Bobject.prop%7D%7D%60%2C%20%60%7B%7B!prop%7D%7D%60%20or%20%60%7B%7B!object.prop%7D%7D%60%0A%20%20%20%20%20%20%20*%20-%20Inline%20computed%20method%20(supports%20negation)%3A%0A%20%20%20%20%20%20%20*%20%20%20%60%5B%5Bcompute(a%2C%20'literal'%2C%20b)%5D%5D%60%2C%20%60%5B%5B!compute(a%2C%20'literal'%2C%20b)%5D%5D%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20uses%20a%20regular%20expression%20for%20best%0A%20%20%20%20%20%20%20*%20performance.%20However%2C%20the%20regular%20expression%20uses%20a%20white-list%20of%0A%20%20%20%20%20%20%20*%20allowed%20characters%20in%20a%20data-binding%2C%20which%20causes%20problems%20for%0A%20%20%20%20%20%20%20*%20data-bindings%20that%20do%20use%20characters%20not%20in%20this%20white-list.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Instead%20of%20updating%20the%20white-list%20with%20all%20allowed%20characters%2C%0A%20%20%20%20%20%20%20*%20there%20is%20a%20StrictBindingParser%20(see%20lib%2Fmixins%2Fstrict-binding-parser)%0A%20%20%20%20%20%20%20*%20that%20uses%20a%20state%20machine%20instead.%20This%20state%20machine%20is%20able%20to%20handle%0A%20%20%20%20%20%20%20*%20all%20characters.%20However%2C%20it%20is%20slightly%20less%20performant%2C%20therefore%20we%0A%20%20%20%20%20%20%20*%20extracted%20it%20into%20a%20separate%20optional%20mixin.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20text%20Text%20to%20parse%20from%20attribute%20or%20textContent%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20templateInfo%20Current%20template%20metadata%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%3C!BindingPart%3E%7D%20Array%20of%20binding%20part%20metadata%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseBindings'%2Cvalue%3Afunction%20_parseBindings(text%2CtemplateInfo)%7Bvar%20parts%3D%5B%5D%3Bvar%20lastIndex%3D0%3Bvar%20m%3Dvoid%200%3B%2F%2F%20Example%3A%20%22literal1%7B%7Bprop%7D%7Dliteral2%5B%5B!compute(foo%2Cbar)%5D%5Dfinal%22%0A%2F%2F%20Regex%20matches%3A%0A%2F%2F%20%20%20%20%20%20%20%20Iteration%201%3A%20%20Iteration%202%3A%0A%2F%2F%20m%5B1%5D%3A%20'%7B%7B'%20%20%20%20%20%20%20%20%20%20'%5B%5B'%0A%2F%2F%20m%5B2%5D%3A%20''%20%20%20%20%20%20%20%20%20%20%20%20'!'%0A%2F%2F%20m%5B3%5D%3A%20'prop'%20%20%20%20%20%20%20%20'compute(foo%2Cbar)'%0Awhile((m%3DbindingRegex.exec(text))!%3D%3Dnull)%7B%2F%2F%20Add%20literal%20part%0Aif(m.index%3ElastIndex)%7Bparts.push(%7Bliteral%3Atext.slice(lastIndex%2Cm.index)%7D)%3B%7D%2F%2F%20Add%20binding%20part%0Avar%20mode%3Dm%5B1%5D%5B0%5D%3Bvar%20negate%3DBoolean(m%5B2%5D)%3Bvar%20source%3Dm%5B3%5D.trim()%3Bvar%20customEvent%3Dfalse%2CnotifyEvent%3D''%2Ccolon%3D-1%3Bif(mode%3D%3D'%7B'%26%26(colon%3Dsource.indexOf('%3A%3A'))%3E0)%7BnotifyEvent%3Dsource.substring(colon%2B2)%3Bsource%3Dsource.substring(0%2Ccolon)%3BcustomEvent%3Dtrue%3B%7Dvar%20signature%3DparseMethod(source)%3Bvar%20dependencies%3D%5B%5D%3Bif(signature)%7B%2F%2F%20Inline%20computed%20function%0Avar%20args%3Dsignature.args%2CmethodName%3Dsignature.methodName%3Bfor(var%20i%3D0%3Bi%3Cargs.length%3Bi%2B%2B)%7Bvar%20arg%3Dargs%5Bi%5D%3Bif(!arg.literal)%7Bdependencies.push(arg)%3B%7D%7Dvar%20dynamicFns%3DtemplateInfo.dynamicFns%3Bif(dynamicFns%26%26dynamicFns%5BmethodName%5D%7C%7Csignature.static)%7Bdependencies.push(methodName)%3Bsignature.dynamicFn%3Dtrue%3B%7D%7Delse%7B%2F%2F%20Property%20or%20path%0Adependencies.push(source)%3B%7Dparts.push(%7Bsource%3Asource%2Cmode%3Amode%2Cnegate%3Anegate%2CcustomEvent%3AcustomEvent%2Csignature%3Asignature%2Cdependencies%3Adependencies%2Cevent%3AnotifyEvent%7D)%3BlastIndex%3DbindingRegex.lastIndex%3B%7D%2F%2F%20Add%20a%20final%20literal%20part%0Aif(lastIndex%26%26lastIndex%3Ctext.length)%7Bvar%20literal%3Dtext.substring(lastIndex)%3Bif(literal)%7Bparts.push(%7Bliteral%3Aliteral%7D)%3B%7D%7Dif(parts.length)%7Breturn%20parts%3B%7Delse%7Breturn%20null%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20to%20evaluate%20a%20previously%20parsed%20binding%20part%20based%20on%20a%20set%20of%0A%20%20%20%20%20%20%20*%20one%20or%20more%20changed%20dependencies.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bthis%7D%20inst%20Element%20that%20should%20be%20used%20as%20scope%20for%0A%20%20%20%20%20%20%20*%20%20%20binding%20dependencies%0A%20%20%20%20%20%20%20*%20%40param%20%7BBindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Property%2Fpath%20that%20triggered%20this%20effect%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20the%20binding%20part%20evaluated%20to%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_evaluateBinding'%2Cvalue%3Afunction%20_evaluateBinding(inst%2Cpart%2Cpath%2Cprops%2ColdProps%2ChasPaths)%7Bvar%20value%3Dvoid%200%3Bif(part.signature)%7Bvalue%3DrunMethodEffect(inst%2Cpath%2Cprops%2ColdProps%2Cpart.signature)%3B%7Delse%20if(path!%3Dpart.source)%7Bvalue%3DPolymer.Path.get(inst%2Cpart.source)%3B%7Delse%7Bif(hasPaths%26%26Polymer.Path.isPath(path))%7Bvalue%3DPolymer.Path.get(inst%2Cpath)%3B%7Delse%7Bvalue%3Dinst.__data%5Bpath%5D%3B%7D%7Dif(part.negate)%7Bvalue%3D!value%3B%7Dreturn%20value%3B%7D%7D%5D)%3Breturn%20PropertyEffects%3B%7D(propertyEffectsBase)%3B%2F%2F%20make%20a%20typing%20for%20closure%20%3AP%0APropertyEffectsType%3DPropertyEffects%3Breturn%20PropertyEffects%3B%7D)%3B%2F**%0A%20%20%20*%20Helper%20api%20for%20enqueuing%20client%20dom%20created%20by%20a%20host%20element.%0A%20%20%20*%0A%20%20%20*%20By%20default%20elements%20are%20flushed%20via%20%60_flushProperties%60%20when%0A%20%20%20*%20%60connectedCallback%60%20is%20called.%20Elements%20attach%20their%20client%20dom%20to%0A%20%20%20*%20themselves%20at%20%60ready%60%20time%20which%20results%20from%20this%20first%20flush.%0A%20%20%20*%20This%20provides%20an%20ordering%20guarantee%20that%20the%20client%20dom%20an%20element%0A%20%20%20*%20creates%20is%20flushed%20before%20the%20element%20itself%20(i.e.%20client%20%60ready%60%0A%20%20%20*%20fires%20before%20host%20%60ready%60).%0A%20%20%20*%0A%20%20%20*%20However%2C%20if%20%60_flushProperties%60%20is%20called%20*before*%20an%20element%20is%20connected%2C%0A%20%20%20*%20as%20for%20example%20%60Templatize%60%20does%2C%20this%20ordering%20guarantee%20cannot%20be%0A%20%20%20*%20satisfied%20because%20no%20elements%20are%20connected.%20(Note%3A%20Bound%20elements%20that%0A%20%20%20*%20receive%20data%20do%20become%20enqueued%20clients%20and%20are%20properly%20ordered%20but%0A%20%20%20*%20unbound%20elements%20are%20not.)%0A%20%20%20*%0A%20%20%20*%20To%20maintain%20the%20desired%20%22client%20before%20host%22%20ordering%20guarantee%20for%20this%0A%20%20%20*%20case%20we%20rely%20on%20the%20%22host%20stack.%20Client%20nodes%20registers%20themselves%20with%0A%20%20%20*%20the%20creating%20host%20element%20when%20created.%20This%20ensures%20that%20all%20client%20dom%0A%20%20%20*%20is%20readied%20in%20the%20proper%20order%2C%20maintaining%20the%20desired%20guarantee.%0A%20%20%20*%0A%20%20%20*%20%40private%0A%20%20%20*%2Fvar%20hostStack%3D%7Bstack%3A%5B%5D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20add%20to%20hostStack%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2FregisterHost%3Afunction%20registerHost(inst)%7Bif(this.stack.length)%7Bvar%20host%3Dthis.stack%5Bthis.stack.length-1%5D%3Bhost._enqueueClient(inst)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20begin%20hosting%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2FbeginHosting%3Afunction%20beginHosting(inst)%7Bthis.stack.push(inst)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20end%20hosting%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2FendHosting%3Afunction%20endHosting(inst)%7Bvar%20stackLen%3Dthis.stack.length%3Bif(stackLen%26%26this.stack%5BstackLen-1%5D%3D%3Dinst)%7Bthis.stack.pop()%3B%7D%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperty-effects.html.js%0A",
            "totalBytes": 100964,
            "wastedBytes": 66630,
            "wastedPercent": 65.99381957925597
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7Dfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20styleInterface%3Dwindow.ShadyCSS%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20Polymer's%20%22legacy%22%20API%20intended%20to%20be%0A%20%20%20*%20backward-compatible%20to%20the%20greatest%20extent%20possible%20with%20the%20API%0A%20%20%20*%20found%20on%20the%20Polymer%201.x%20%60Polymer.Base%60%20prototype%20applied%20to%20all%20elements%0A%20%20%20*%20defined%20using%20the%20%60Polymer(%7B...%7D)%60%20function.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.ElementMixin%0A%20%20%20*%20%40appliesMixin%20Polymer.GestureEventListeners%0A%20%20%20*%20%40property%20isAttached%20%7Bboolean%7D%20Set%20to%20%60true%60%20in%20this%20element's%0A%20%20%20*%20%20%20%60connectedCallback%60%20and%20%60false%60%20in%20%60disconnectedCallback%60%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20Polymer's%20%22legacy%22%20API%0A%20%20%20*%2FPolymer.LegacyElementMixin%3DPolymer.dedupingMixin(function(base)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_GestureEventListeners%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_DirMixin%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20legacyElementBase%3DPolymer.DirMixin(Polymer.GestureEventListeners(Polymer.ElementMixin(base)))%3B%2F**%0A%20%20%20%20%20*%20Map%20of%20simple%20names%20to%20touch%20action%20names%0A%20%20%20%20%20*%20%40dict%0A%20%20%20%20%20*%2Fvar%20DIRECTION_MAP%3D%7B'x'%3A'pan-x'%2C'y'%3A'pan-y'%2C'none'%3A'none'%2C'all'%3A'auto'%7D%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40extends%20%7BlegacyElementBase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_LegacyElementMixin%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20LegacyElement%3Dfunction(_legacyElementBase)%7B_inherits(LegacyElement%2C_legacyElementBase)%3Bfunction%20LegacyElement()%7B_classCallCheck(this%2CLegacyElement)%3B%2F**%20%40type%20%7Bboolean%7D%20*%2Fvar%20_this%3D_possibleConstructorReturn(this%2C(LegacyElement.__proto__%7C%7CObject.getPrototypeOf(LegacyElement)).call(this))%3B_this.isAttached%3B%2F**%20%40type%20%7BWeakMap%3C!Element%2C%20!Object%3Cstring%2C%20!Function%3E%3E%7D%20*%2F_this.__boundListeners%3B%2F**%20%40type%20%7BObject%3Cstring%2C%20Function%3E%7D%20*%2F_this._debouncers%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Forwards%20%60importMeta%60%20from%20the%20prototype%20(i.e.%20from%20the%20info%20object%0A%20%20%20%20%20%20%20*%20passed%20to%20%60Polymer(%7B...%7D)%60)%20to%20the%20static%20API.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Object%7D%20The%20%60import.meta%60%20object%20set%20on%20the%20prototype%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20%60this%60%20is%20always%20in%20the%20instance%20in%0A%20%20%20%20%20%20%20*%20%20closure%20for%20some%20reason%20even%20in%20a%20static%20method%2C%20rather%20than%20the%20class%0A%20%20%20%20%20%20%20*%2F_createClass(LegacyElement%2C%5B%7Bkey%3A'created'%2C%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20the%20%60constructor%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20created()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Provides%20an%20implementation%20of%20%60connectedCallback%60%0A%20%20%20%20%20%20%20*%20which%20adds%20Polymer%20legacy%20API's%20%60attached%60%20method.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'connectedCallback'%2Cthis).call(this)%3Bthis.isAttached%3Dtrue%3Bthis.attached()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20%60connectedCallback%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attached'%2Cvalue%3Afunction%20attached()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Provides%20an%20implementation%20of%20%60disconnectedCallback%60%0A%20%20%20%20%20%20%20*%20which%20adds%20Polymer%20legacy%20API's%20%60detached%60%20method.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3Bthis.isAttached%3Dfalse%3Bthis.detached()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20%60disconnectedCallback%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'detached'%2Cvalue%3Afunction%20detached()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Provides%20an%20override%20implementation%20of%20%60attributeChangedCallback%60%0A%20%20%20%20%20%20%20*%20which%20adds%20the%20Polymer%20legacy%20API's%20%60attributeChanged%60%20method.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Current%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20namespace%20Attribute%20namespace.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChangedCallback'%2Cvalue%3Afunction%20attributeChangedCallback(name%2Cold%2Cvalue%2Cnamespace)%7Bif(old!%3D%3Dvalue)%7B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'attributeChangedCallback'%2Cthis).call(this%2Cname%2Cold%2Cvalue%2Cnamespace)%3Bthis.attributeChanged(name%2Cold%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Legacy%20callback%20called%20during%20%60attributeChangedChallback%60%2C%20for%20overriding%0A%20%20%20%20%20%20%20*%20by%20the%20user.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Current%20value%20of%20attribute.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChanged'%2Cvalue%3Afunction%20attributeChanged(name%2Cold%2Cvalue)%7B%7D%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20default%20%60Polymer.PropertyEffects%60%20implementation%20to%0A%20%20%20%20%20%20%20*%20add%20support%20for%20class%20initialization%20via%20the%20%60_registered%60%20callback.%0A%20%20%20%20%20%20%20*%20This%20is%20called%20only%20when%20the%20first%20instance%20of%20the%20element%20is%20created.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProperties'%2Cvalue%3Afunction%20_initializeProperties()%7Bvar%20proto%3DObject.getPrototypeOf(this)%3Bif(!proto.hasOwnProperty('__hasRegisterFinished'))%7Bthis._registered()%3B%2F%2F%20backstop%20in%20case%20the%20%60_registered%60%20implementation%20does%20not%20set%20this%0Aproto.__hasRegisterFinished%3Dtrue%3B%7D_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3Bthis.root%3D%2F**%20%40type%20%7BHTMLElement%7D%20*%2Fthis%3Bthis.created()%3B%2F%2F%20Ensure%20listeners%20are%20applied%20immediately%20so%20that%20they%20are%0A%2F%2F%20added%20before%20declarative%20event%20listeners.%20This%20allows%20an%20element%20to%0A%2F%2F%20decorate%20itself%20via%20an%20event%20prior%20to%20any%20declarative%20listeners%0A%2F%2F%20seeing%20the%20event.%20Note%2C%20this%20ensures%20compatibility%20with%201.x%20ordering.%0Athis._applyListeners()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20automatically%20when%20an%20element%20is%20initializing.%0A%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20method%20to%20perform%20class%20registration%20time%0A%20%20%20%20%20%20%20*%20work.%20The%20implementation%20should%20ensure%20the%20work%20is%20performed%0A%20%20%20%20%20%20%20*%20only%20once%20for%20the%20class.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_registered'%2Cvalue%3Afunction%20_registered()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20default%20%60Polymer.PropertyEffects%60%20implementation%20to%0A%20%20%20%20%20%20%20*%20add%20support%20for%20installing%20%60hostAttributes%60%20and%20%60listeners%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7Bthis._ensureAttributes()%3B_get(LegacyElement.prototype.__proto__%7C%7CObject.getPrototypeOf(LegacyElement.prototype)%2C'ready'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Ensures%20an%20element%20has%20required%20attributes.%20Called%20when%20the%20element%0A%20%20%20%20%20%20%20*%20is%20being%20readied%20via%20%60ready%60.%20Users%20should%20override%20to%20set%20the%0A%20%20%20%20%20%20%20*%20element's%20required%20attributes.%20The%20implementation%20should%20be%20sure%0A%20%20%20%20%20%20%20*%20to%20check%20and%20not%20override%20existing%20attributes%20added%20by%0A%20%20%20%20%20%20%20*%20the%20user%20of%20the%20element.%20Typically%2C%20setting%20attributes%20should%20be%20left%0A%20%20%20%20%20%20%20*%20to%20the%20element%20user%20and%20not%20done%20here%3B%20reasonable%20exceptions%20include%0A%20%20%20%20%20%20%20*%20setting%20aria%20roles%20and%20focusability.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_ensureAttributes'%2Cvalue%3Afunction%20_ensureAttributes()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20element%20event%20listeners.%20Called%20when%20the%20element%0A%20%20%20%20%20%20%20*%20is%20being%20readied%20via%20%60ready%60.%20Users%20should%20override%20to%0A%20%20%20%20%20%20%20*%20add%20any%20required%20element%20event%20listeners.%0A%20%20%20%20%20%20%20*%20In%20performance%20critical%20elements%2C%20the%20work%20done%20here%20should%20be%20kept%0A%20%20%20%20%20%20%20*%20to%20a%20minimum%20since%20it%20is%20done%20before%20the%20element%20is%20rendered.%20In%0A%20%20%20%20%20%20%20*%20these%20elements%2C%20consider%20adding%20listeners%20asynchronously%20so%20as%20not%20to%0A%20%20%20%20%20%20%20*%20block%20render.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_applyListeners'%2Cvalue%3Afunction%20_applyListeners()%7B%7D%2F**%0A%20%20%20%20%20%20%20*%20Converts%20a%20typed%20JavaScript%20value%20to%20a%20string.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%20To%20customize%0A%20%20%20%20%20%20%20*%20how%20properties%20are%20serialized%20to%20attributes%20for%20attribute%20bindings%20and%0A%20%20%20%20%20%20%20*%20%60reflectToAttribute%3A%20true%60%20properties%20as%20well%20as%20this%20method%2C%20override%0A%20%20%20%20%20%20%20*%20the%20%60_serializeValue%60%20method%20provided%20by%20%60Polymer.PropertyAccessors%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20deserialize%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20Serialized%20value%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'serialize'%2Cvalue%3Afunction%20serialize(value)%7Breturn%20this._serializeValue(value)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Converts%20a%20string%20to%20a%20typed%20JavaScript%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%20%20To%20customize%0A%20%20%20%20%20%20%20*%20how%20attributes%20are%20deserialized%20to%20properties%20for%20in%0A%20%20%20%20%20%20%20*%20%60attributeChangedCallback%60%2C%20override%20%60_deserializeValue%60%20method%0A%20%20%20%20%20%20%20*%20provided%20by%20%60Polymer.PropertyAccessors%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20String%20to%20deserialize%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20type%20Type%20to%20deserialize%20the%20string%20to%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Returns%20the%20deserialized%20value%20in%20the%20%60type%60%20given.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deserialize'%2Cvalue%3Afunction%20deserialize(value%2Ctype)%7Breturn%20this._deserializeValue(value%2Ctype)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Serializes%20a%20property%20to%20its%20associated%20attribute.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%20to%20reflect.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20attribute%20Attribute%20name%20to%20reflect.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Property%20value%20to%20reflect.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'reflectPropertyToAttribute'%2Cvalue%3Afunction%20reflectPropertyToAttribute(property%2Cattribute%2Cvalue)%7Bthis._propertyToAttribute(property%2Cattribute%2Cvalue)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Sets%20a%20typed%20value%20to%20an%20HTML%20attribute%20on%20a%20node.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20serialize.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Attribute%20name%20to%20serialize%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20set%20attribute%20to.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'serializeValueToAttribute'%2Cvalue%3Afunction%20serializeValueToAttribute(value%2Cattribute%2Cnode)%7Bthis._valueToNodeAttribute(%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%2Cvalue%2Cattribute)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Copies%20own%20properties%20(including%20accessor%20descriptors)%20from%20a%20source%0A%20%20%20%20%20%20%20*%20object%20to%20a%20target%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20prototype%20Target%20object%20to%20copy%20properties%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20api%20Source%20object%20to%20copy%20properties%20from.%0A%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20prototype%20object%20that%20was%20passed%20as%20first%20argument.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'extend'%2Cvalue%3Afunction%20extend(prototype%2Capi)%7Bif(!(prototype%26%26api))%7Breturn%20prototype%7C%7Capi%3B%7Dvar%20n%24%3DObject.getOwnPropertyNames(api)%3Bfor(var%20i%3D0%2Cn%3Bi%3Cn%24.length%26%26(n%3Dn%24%5Bi%5D)%3Bi%2B%2B)%7Bvar%20pd%3DObject.getOwnPropertyDescriptor(api%2Cn)%3Bif(pd)%7BObject.defineProperty(prototype%2Cn%2Cpd)%3B%7D%7Dreturn%20prototype%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Copies%20props%20from%20a%20source%20object%20to%20a%20target%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20this%20method%20uses%20a%20simple%20%60for...in%60%20strategy%20for%20enumerating%0A%20%20%20%20%20%20%20*%20properties.%20%20To%20ensure%20only%20%60ownProperties%60%20are%20copied%20from%20source%0A%20%20%20%20%20%20%20*%20to%20target%20and%20that%20accessor%20implementations%20are%20copied%2C%20use%20%60extend%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20target%20Target%20object%20to%20copy%20properties%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20source%20Source%20object%20to%20copy%20properties%20from.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Object%7D%20Target%20object%20that%20was%20passed%20as%20first%20argument.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'mixin'%2Cvalue%3Afunction%20mixin(target%2Csource)%7Bfor(var%20i%20in%20source)%7Btarget%5Bi%5D%3Dsource%5Bi%5D%3B%7Dreturn%20target%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Sets%20the%20prototype%20of%20an%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20is%20provided%20as%20backward-compatible%20legacy%20API%0A%20%20%20%20%20%20%20*%20only.%20%20It%20is%20not%20directly%20called%20by%20any%20Polymer%20features.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20object%20The%20object%20on%20which%20to%20set%20the%20prototype.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20prototype%20The%20prototype%20that%20will%20be%20set%20on%20the%20given%0A%20%20%20%20%20%20%20*%20%60object%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20Returns%20the%20given%20%60object%60%20with%20its%20prototype%20set%0A%20%20%20%20%20%20%20*%20to%20the%20given%20%60prototype%60%20object.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'chainObject'%2Cvalue%3Afunction%20chainObject(object%2Cprototype)%7Bif(object%26%26prototype%26%26object!%3D%3Dprototype)%7Bobject.__proto__%3Dprototype%3B%7Dreturn%20object%3B%7D%2F*%20****%20Begin%20Template%20****%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Calls%20%60importNode%60%20on%20the%20%60content%60%20of%20the%20%60template%60%20specified%20and%0A%20%20%20%20%20%20%20*%20returns%20a%20document%20fragment%20containing%20the%20imported%20content.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20template%20HTML%20template%20element%20to%20instance.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!DocumentFragment%7D%20Document%20fragment%20containing%20the%20imported%0A%20%20%20%20%20%20%20*%20%20%20template%20content.%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'instanceTemplate'%2Cvalue%3Afunction%20instanceTemplate(template)%7Bvar%20content%3Dthis.constructor._contentForTemplate(template)%3Bvar%20dom%3D%2F**%20%40type%20%7B!DocumentFragment%7D%20*%2Fdocument.importNode(content%2Ctrue)%3Breturn%20dom%3B%7D%2F*%20****%20Begin%20Events%20****%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Dispatches%20a%20custom%20event%20with%20an%20optional%20detail%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Name%20of%20event%20type.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20detail%20Detail%20value%20containing%20event-specific%0A%20%20%20%20%20%20%20*%20%20%20payload.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%7B%20bubbles%3A%20(boolean%7Cundefined)%2C%20cancelable%3A%20(boolean%7Cundefined)%2C%20composed%3A%20(boolean%7Cundefined)%20%7D%3D%7D%0A%20%20%20%20%20%20%20*%20%20options%20Object%20specifying%20options.%20%20These%20may%20include%3A%0A%20%20%20%20%20%20%20*%20%20%60bubbles%60%20(boolean%2C%20defaults%20to%20%60true%60)%2C%0A%20%20%20%20%20%20%20*%20%20%60cancelable%60%20(boolean%2C%20defaults%20to%20false)%2C%20and%0A%20%20%20%20%20%20%20*%20%20%60node%60%20on%20which%20to%20fire%20the%20event%20(HTMLElement%2C%20defaults%20to%20%60this%60).%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Event%7D%20The%20new%20event%20that%20was%20fired.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'fire'%2Cvalue%3Afunction%20fire(type%2Cdetail%2Coptions)%7Boptions%3Doptions%7C%7C%7B%7D%3Bdetail%3Ddetail%3D%3D%3Dnull%7C%7Cdetail%3D%3D%3Dundefined%3F%7B%7D%3Adetail%3Bvar%20event%3Dnew%20Event(type%2C%7Bbubbles%3Aoptions.bubbles%3D%3D%3Dundefined%3Ftrue%3Aoptions.bubbles%2Ccancelable%3ABoolean(options.cancelable)%2Ccomposed%3Aoptions.composed%3D%3D%3Dundefined%3Ftrue%3Aoptions.composed%7D)%3Bevent.detail%3Ddetail%3Bvar%20node%3Doptions.node%7C%7Cthis%3Bnode.dispatchEvent(event)%3Breturn%20event%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20to%20add%20an%20event%20listener%20on%20a%20given%20element%2C%0A%20%20%20%20%20%20%20*%20late%20bound%20to%20a%20named%20method%20on%20this%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20add%20event%20listener%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%20to%20listen%20for.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Name%20of%20handler%20method%20on%20%60this%60%20to%20call.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'listen'%2Cvalue%3Afunction%20listen(node%2CeventName%2CmethodName)%7Bnode%3D%2F**%20%40type%20%7B!Element%7D%20*%2Fnode%7C%7Cthis%3Bvar%20hbl%3Dthis.__boundListeners%7C%7C(this.__boundListeners%3Dnew%20WeakMap())%3Bvar%20bl%3Dhbl.get(node)%3Bif(!bl)%7Bbl%3D%7B%7D%3Bhbl.set(node%2Cbl)%3B%7Dvar%20key%3DeventName%2BmethodName%3Bif(!bl%5Bkey%5D)%7Bbl%5Bkey%5D%3Dthis._addMethodEventListenerToNode(node%2CeventName%2CmethodName%2Cthis)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20to%20remove%20an%20event%20listener%20from%20a%20given%20element%2C%0A%20%20%20%20%20%20%20*%20late%20bound%20to%20a%20named%20method%20on%20this%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20remove%20event%20listener%20from.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%20to%20stop%20listening%20to.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Name%20of%20handler%20method%20on%20%60this%60%20to%20not%20call%0A%20%20%20%20%20%20%20anymore.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unlisten'%2Cvalue%3Afunction%20unlisten(node%2CeventName%2CmethodName)%7Bnode%3D%2F**%20%40type%20%7B!Element%7D%20*%2Fnode%7C%7Cthis%3Bvar%20bl%3Dthis.__boundListeners%26%26this.__boundListeners.get(node)%3Bvar%20key%3DeventName%2BmethodName%3Bvar%20handler%3Dbl%26%26bl%5Bkey%5D%3Bif(handler)%7Bthis._removeEventListenerFromNode(node%2CeventName%2Chandler)%3Bbl%5Bkey%5D%3Dnull%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20scrolling%20behavior%20to%20all%20direction%2C%20one%20direction%2C%20or%20none.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Valid%20scroll%20directions%3A%0A%20%20%20%20%20%20%20*%20%20%20-%20'all'%3A%20scroll%20in%20any%20direction%0A%20%20%20%20%20%20%20*%20%20%20-%20'x'%3A%20scroll%20only%20in%20the%20'x'%20direction%0A%20%20%20%20%20%20%20*%20%20%20-%20'y'%3A%20scroll%20only%20in%20the%20'y'%20direction%0A%20%20%20%20%20%20%20*%20%20%20-%20'none'%3A%20disable%20scrolling%20for%20this%20node%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20direction%20Direction%20to%20allow%20scrolling%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60all%60.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Element%20to%20apply%20scroll%20direction%20setting.%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'setScrollDirection'%2Cvalue%3Afunction%20setScrollDirection(direction%2Cnode)%7BPolymer.Gestures.setTouchAction(%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%2CDIRECTION_MAP%5Bdirection%5D%7C%7C'auto')%3B%7D%2F*%20****%20End%20Events%20****%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20to%20run%20%60querySelector%60%20on%20this%20local%20DOM%20scope.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20function%20calls%20%60Polymer.dom(this.root).querySelector(slctr)%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20slctr%20Selector%20to%20run%20on%20this%20local%20DOM%20scope%0A%20%20%20%20%20%20%20*%20%40return%20%7BElement%7D%20Element%20found%20by%20the%20selector%2C%20or%20null%20if%20not%20found.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'%24%24'%2Cvalue%3Afunction%20%24%24(slctr)%7Breturn%20this.root.querySelector(slctr)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Return%20the%20element%20whose%20local%20dom%20within%20which%20this%20element%0A%20%20%20%20%20%20%20*%20is%20contained.%20This%20is%20a%20shorthand%20for%0A%20%20%20%20%20%20%20*%20%60this.getRootNode().host%60.%0A%20%20%20%20%20%20%20*%20%40this%20%7BElement%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'distributeContent'%2C%2F**%0A%20%20%20%20%20%20%20*%20Force%20this%20element%20to%20distribute%20its%20children%20to%20its%20local%20dom.%0A%20%20%20%20%20%20%20*%20This%20should%20not%20be%20necessary%20as%20of%20Polymer%202.0.2%20and%20is%20provided%20only%0A%20%20%20%20%20%20%20*%20for%20backwards%20compatibility.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20distributeContent()%7Bif(window.ShadyDOM%26%26this.shadowRoot)%7BShadyDOM.flush()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20nodes%20that%20are%20the%20effective%20childNodes.%20The%20effective%0A%20%20%20%20%20%20%20*%20childNodes%20list%20is%20the%20same%20as%20the%20element's%20childNodes%20except%20that%0A%20%20%20%20%20%20%20*%20any%20%60%3Ccontent%3E%60%20elements%20are%20replaced%20with%20the%20list%20of%20nodes%20distributed%0A%20%20%20%20%20%20%20*%20to%20the%20%60%3Ccontent%3E%60%2C%20the%20result%20of%20its%20%60getDistributedNodes%60%20method.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20effective%20child%20nodes.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveChildNodes'%2Cvalue%3Afunction%20getEffectiveChildNodes()%7Bvar%20thisEl%3D%2F**%20%40type%20%7BElement%7D%20*%2Fthis%3Bvar%20domApi%3D%2F**%20%40type%20%7BPolymer.DomApi%7D%20*%2FPolymer.dom(thisEl)%3Breturn%20domApi.getEffectiveChildNodes()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20nodes%20distributed%20within%20this%20element%20that%20match%0A%20%20%20%20%20%20%20*%20%60selector%60.%20These%20can%20be%20dom%20children%20or%20elements%20distributed%20to%0A%20%20%20%20%20%20%20*%20children%20that%20are%20insertion%20points.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20run.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20distributed%20elements%20that%20match%20selector.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryDistributedElements'%2Cvalue%3Afunction%20queryDistributedElements(selector)%7Bvar%20thisEl%3D%2F**%20%40type%20%7BElement%7D%20*%2Fthis%3Bvar%20domApi%3D%2F**%20%40type%20%7BPolymer.DomApi%7D%20*%2FPolymer.dom(thisEl)%3Breturn%20domApi.queryDistributedElements(selector)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20elements%20that%20are%20the%20effective%20children.%20The%20effective%0A%20%20%20%20%20%20%20*%20children%20list%20is%20the%20same%20as%20the%20element's%20children%20except%20that%0A%20%20%20%20%20%20%20*%20any%20%60%3Ccontent%3E%60%20elements%20are%20replaced%20with%20the%20list%20of%20elements%0A%20%20%20%20%20%20%20*%20distributed%20to%20the%20%60%3Ccontent%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20effective%20children.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveChildren'%2Cvalue%3Afunction%20getEffectiveChildren()%7Bvar%20list%3Dthis.getEffectiveChildNodes()%3Breturn%20list.filter(function(%2F**%20%40type%20%7B!Node%7D%20*%2Fn)%7Breturn%20n.nodeType%3D%3D%3DNode.ELEMENT_NODE%3B%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20string%20of%20text%20content%20that%20is%20the%20concatenation%20of%20the%0A%20%20%20%20%20%20%20*%20text%20content's%20of%20the%20element's%20effective%20childNodes%20(the%20elements%0A%20%20%20%20%20%20%20*%20returned%20by%20%3Ca%20href%3D%22%23getEffectiveChildNodes%3EgetEffectiveChildNodes%3C%2Fa%3E.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20List%20of%20effective%20children.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveTextContent'%2Cvalue%3Afunction%20getEffectiveTextContent()%7Bvar%20cn%3Dthis.getEffectiveChildNodes()%3Bvar%20tc%3D%5B%5D%3Bfor(var%20i%3D0%2Cc%3Bc%3Dcn%5Bi%5D%3Bi%2B%2B)%7Bif(c.nodeType!%3D%3DNode.COMMENT_NODE)%7Btc.push(c.textContent)%3B%7D%7Dreturn%20tc.join('')%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20first%20effective%20childNode%20within%20this%20element%20that%0A%20%20%20%20%20%20%20*%20match%20%60selector%60.%20These%20can%20be%20dom%20child%20nodes%20or%20elements%20distributed%0A%20%20%20%20%20%20%20*%20to%20children%20that%20are%20insertion%20points.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20run.%0A%20%20%20%20%20%20%20*%20%40return%20%7BNode%7D%20First%20effective%20child%20node%20that%20matches%20selector.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryEffectiveChildren'%2Cvalue%3Afunction%20queryEffectiveChildren(selector)%7Bvar%20e%24%3Dthis.queryDistributedElements(selector)%3Breturn%20e%24%26%26e%24%5B0%5D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20effective%20childNodes%20within%20this%20element%20that%0A%20%20%20%20%20%20%20*%20match%20%60selector%60.%20These%20can%20be%20dom%20child%20nodes%20or%20elements%20distributed%0A%20%20%20%20%20%20%20*%20to%20children%20that%20are%20insertion%20points.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20run.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20effective%20child%20nodes%20that%20match%20selector.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryAllEffectiveChildren'%2Cvalue%3Afunction%20queryAllEffectiveChildren(selector)%7Breturn%20this.queryDistributedElements(selector)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20nodes%20distributed%20to%20this%20element's%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20this%20element%20contains%20more%20than%20one%20%60%3Cslot%3E%60%20in%20its%20local%20DOM%2C%0A%20%20%20%20%20%20%20*%20an%20optional%20selector%20may%20be%20passed%20to%20choose%20the%20desired%20content.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20slctr%20CSS%20selector%20to%20choose%20the%20desired%0A%20%20%20%20%20%20%20*%20%20%20%60%3Cslot%3E%60.%20%20Defaults%20to%20%60content%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20List%20of%20distributed%20nodes%20for%20the%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getContentChildNodes'%2Cvalue%3Afunction%20getContentChildNodes(slctr)%7Bvar%20content%3Dthis.root.querySelector(slctr%7C%7C'slot')%3Breturn%20content%3F%2F**%20%40type%20%7BPolymer.DomApi%7D%20*%2FPolymer.dom(content).getDistributedNodes()%3A%5B%5D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20list%20of%20element%20children%20distributed%20to%20this%20element's%0A%20%20%20%20%20%20%20*%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20this%20element%20contains%20more%20than%20one%20%60%3Cslot%3E%60%20in%20its%0A%20%20%20%20%20%20%20*%20local%20DOM%2C%20an%20optional%20selector%20may%20be%20passed%20to%20choose%20the%20desired%0A%20%20%20%20%20%20%20*%20content.%20%20This%20method%20differs%20from%20%60getContentChildNodes%60%20in%20that%20only%0A%20%20%20%20%20%20%20*%20elements%20are%20returned.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20slctr%20CSS%20selector%20to%20choose%20the%20desired%0A%20%20%20%20%20%20%20*%20%20%20%60%3Ccontent%3E%60.%20%20Defaults%20to%20%60content%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLElement%3E%7D%20List%20of%20distributed%20nodes%20for%20the%0A%20%20%20%20%20%20%20*%20%20%20%60%3Cslot%3E%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getContentChildren'%2Cvalue%3Afunction%20getContentChildren(slctr)%7Bvar%20children%3D%2F**%20%40type%20%7B!Array%3C!HTMLElement%3E%7D%20*%2Fthis.getContentChildNodes(slctr).filter(function(n)%7Breturn%20n.nodeType%3D%3D%3DNode.ELEMENT_NODE%3B%7D)%3Breturn%20children%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20in%20this%20element's%20light%20DOM%20tree.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3FNode%7D%20node%20The%20element%20to%20be%20checked.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20node%20is%20in%20this%20element's%20light%20DOM%20tree.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isLightDescendant'%2Cvalue%3Afunction%20isLightDescendant(node)%7Bvar%20thisNode%3D%2F**%20%40type%20%7BNode%7D%20*%2Fthis%3Breturn%20thisNode!%3D%3Dnode%26%26thisNode.contains(node)%26%26thisNode.getRootNode()%3D%3D%3Dnode.getRootNode()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20in%20this%20element's%20local%20DOM%20tree.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Element%7D%20node%20The%20element%20to%20be%20checked.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20node%20is%20in%20this%20element's%20local%20DOM%20tree.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isLocalDescendant'%2Cvalue%3Afunction%20isLocalDescendant(node)%7Breturn%20this.root%3D%3D%3Dnode.getRootNode()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20No-op%20for%20backwards%20compatibility.%20This%20should%20now%20be%20handled%20by%0A%20%20%20%20%20%20%20*%20ShadyCss%20library.%0A%20%20%20%20%20%20%20*%20%40param%20%20%7B*%7D%20container%20Unused%0A%20%20%20%20%20%20%20*%20%40param%20%20%7B*%7D%20shouldObserve%20Unused%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'scopeSubtree'%2Cvalue%3Afunction%20scopeSubtree(container%2CshouldObserve)%7B%7D%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20computed%20style%20value%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20The%20css%20property%20name.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Returns%20the%20computed%20css%20property%20value%20for%20the%20given%0A%20%20%20%20%20%20%20*%20%60property%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20LegacyElementMixin%20must%20be%20applied%20to%20an%20HTMLElement%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getComputedStyleValue'%2Cvalue%3Afunction%20getComputedStyleValue(property)%7Breturn%20styleInterface.getComputedStyleValue(%2F**%20%40type%20%7B!Element%7D%20*%2Fthis%2Cproperty)%3B%7D%2F%2F%20debounce%0A%2F**%0A%20%20%20%20%20%20%20*%20Call%20%60debounce%60%20to%20collapse%20multiple%20requests%20for%20a%20named%20task%20into%0A%20%20%20%20%20%20%20*%20one%20invocation%20which%20is%20made%20after%20the%20wait%20time%20has%20elapsed%20with%0A%20%20%20%20%20%20%20*%20no%20new%20request.%20%20If%20no%20wait%20time%20is%20given%2C%20the%20callback%20will%20be%20called%0A%20%20%20%20%20%20%20*%20at%20microtask%20timing%20(guaranteed%20before%20paint).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20debouncedClickAction(e)%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%2F%2F%20will%20not%20call%20%60processClick%60%20more%20than%20once%20per%20100ms%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20this.debounce('click'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20this.processClick()%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%20100)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20String%20to%20identify%20the%20debounce%20job.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction()%3Avoid%7D%20callback%20Function%20that%20is%20called%20(with%20%60this%60%0A%20%20%20%20%20%20%20*%20%20%20context)%20when%20the%20wait%20time%20elapses.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20wait%20Optional%20wait%20time%20in%20milliseconds%20(ms)%20after%20the%0A%20%20%20%20%20%20%20*%20%20%20last%20signal%20that%20must%20elapse%20before%20invoking%20%60callback%60%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Object%7D%20Returns%20a%20debouncer%20object%20on%20which%20exists%20the%0A%20%20%20%20%20%20%20*%20following%20methods%3A%20%60isActive()%60%20returns%20true%20if%20the%20debouncer%20is%0A%20%20%20%20%20%20%20*%20active%3B%20%60cancel()%60%20cancels%20the%20debouncer%20if%20it%20is%20active%3B%0A%20%20%20%20%20%20%20*%20%60flush()%60%20immediately%20invokes%20the%20debounced%20callback%20if%20the%20debouncer%0A%20%20%20%20%20%20%20*%20is%20active.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'debounce'%2Cvalue%3Afunction%20debounce(jobName%2Ccallback%2Cwait)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Breturn%20this._debouncers%5BjobName%5D%3DPolymer.Debouncer.debounce(this._debouncers%5BjobName%5D%2Cwait%3E0%3FPolymer.Async.timeOut.after(wait)%3APolymer.Async.microTask%2Ccallback.bind(this))%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20a%20named%20debouncer%20is%20active.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20The%20name%20of%20the%20debouncer%20started%20with%20%60debounce%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20debouncer%20is%20active%20(has%20not%20yet%20fired).%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isDebouncerActive'%2Cvalue%3Afunction%20isDebouncerActive(jobName)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Bvar%20debouncer%3Dthis._debouncers%5BjobName%5D%3Breturn!!(debouncer%26%26debouncer.isActive())%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Immediately%20calls%20the%20debouncer%20%60callback%60%20and%20inactivates%20it.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20The%20name%20of%20the%20debouncer%20started%20with%20%60debounce%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'flushDebouncer'%2Cvalue%3Afunction%20flushDebouncer(jobName)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Bvar%20debouncer%3Dthis._debouncers%5BjobName%5D%3Bif(debouncer)%7Bdebouncer.flush()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20an%20active%20debouncer.%20%20The%20%60callback%60%20will%20not%20be%20called.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20jobName%20The%20name%20of%20the%20debouncer%20started%20with%20%60debounce%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'cancelDebouncer'%2Cvalue%3Afunction%20cancelDebouncer(jobName)%7Bthis._debouncers%3Dthis._debouncers%7C%7C%7B%7D%3Bvar%20debouncer%3Dthis._debouncers%5BjobName%5D%3Bif(debouncer)%7Bdebouncer.cancel()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Runs%20a%20callback%20function%20asynchronously.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20By%20default%20(if%20no%20waitTime%20is%20specified)%2C%20async%20callbacks%20are%20run%20at%0A%20%20%20%20%20%20%20*%20microtask%20timing%2C%20which%20will%20occur%20before%20paint.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Function%7D%20callback%20The%20callback%20function%20to%20run%2C%20bound%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20waitTime%20Time%20to%20wait%20before%20calling%20the%0A%20%20%20%20%20%20%20*%20%20%20%60callback%60.%20%20If%20unspecified%20or%200%2C%20the%20callback%20will%20be%20run%20at%20microtask%0A%20%20%20%20%20%20%20*%20%20%20timing%20(before%20paint).%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20that%20may%20be%20used%20to%20cancel%20the%20async%20job.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'async'%2Cvalue%3Afunction%20async(callback%2CwaitTime)%7Breturn%20waitTime%3E0%3FPolymer.Async.timeOut.run(callback.bind(this)%2CwaitTime)%3A~Polymer.Async.microTask.run(callback.bind(this))%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20an%20async%20operation%20started%20with%20%60async%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20original%20%60async%60%20call%20to%0A%20%20%20%20%20%20%20*%20%20%20cancel.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'cancelAsync'%2Cvalue%3Afunction%20cancelAsync(handle)%7Bhandle%3C0%3FPolymer.Async.microTask.cancel(~handle)%3APolymer.Async.timeOut.cancel(handle)%3B%7D%2F%2F%20other%0A%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20creating%20an%20element%20and%20configuring%20it.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20tag%20HTML%20element%20tag%20to%20create.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20props%20Object%20of%20properties%20to%20configure%20on%20the%0A%20%20%20%20%20%20%20*%20%20%20%20instance.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Element%7D%20Newly%20created%20and%20configured%20element.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'create'%2Cvalue%3Afunction%20create(tag%2Cprops)%7Bvar%20elt%3Ddocument.createElement(tag)%3Bif(props)%7Bif(elt.setProperties)%7Belt.setProperties(props)%3B%7Delse%7Bfor(var%20n%20in%20props)%7Belt%5Bn%5D%3Dprops%5Bn%5D%3B%7D%7D%7Dreturn%20elt%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Convenience%20method%20for%20importing%20an%20HTML%20document%20imperatively.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20creates%20a%20new%20%60%3Clink%20rel%3D%22import%22%3E%60%20element%20with%0A%20%20%20%20%20%20%20*%20the%20provided%20URL%20and%20appends%20it%20to%20the%20document%20to%20start%20loading.%0A%20%20%20%20%20%20%20*%20In%20the%20%60onload%60%20callback%2C%20the%20%60import%60%20property%20of%20the%20%60link%60%0A%20%20%20%20%20%20%20*%20element%20will%20contain%20the%20imported%20document%20contents.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20href%20URL%20to%20document%20to%20load.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Ffunction(!Event)%3Avoid%3D%7D%20onload%20Callback%20to%20notify%20when%20an%20import%20successfully%0A%20%20%20%20%20%20%20*%20%20%20loaded.%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Ffunction(!ErrorEvent)%3Avoid%3D%7D%20onerror%20Callback%20to%20notify%20when%20an%20import%0A%20%20%20%20%20%20%20*%20%20%20unsuccessfully%20loaded.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20optAsync%20True%20if%20the%20import%20should%20be%20loaded%20%60async%60.%0A%20%20%20%20%20%20%20*%20%20%20Defaults%20to%20%60false%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7B!HTMLLinkElement%7D%20The%20link%20element%20for%20the%20URL%20to%20be%20loaded.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'importHref'%2Cvalue%3Afunction%20importHref(href%2Conload%2Conerror%2CoptAsync)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Avar%20loadFn%3Donload%3Fonload.bind(this)%3Anull%3Bvar%20errorFn%3Donerror%3Fonerror.bind(this)%3Anull%3Breturn%20Polymer.importHref(href%2CloadFn%2CerrorFn%2CoptAsync)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Polyfill%20for%20Element.prototype.matches%2C%20which%20is%20sometimes%20still%0A%20%20%20%20%20%20%20*%20prefixed.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20test.%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Element%3D%7D%20node%20Element%20to%20test%20the%20selector%20against.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20element%20matches%20the%20selector.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'elementMatches'%2Cvalue%3Afunction%20elementMatches(selector%2Cnode)%7Breturn%20Polymer.dom.matchesSelector(%2F**%20%40type%20%7B!Element%7D%20*%2Fnode%7C%7Cthis%2Cselector)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Toggles%20an%20HTML%20attribute%20on%20or%20off.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20HTML%20attribute%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20bool%20Boolean%20to%20force%20the%20attribute%20on%20or%20off.%0A%20%20%20%20%20%20%20*%20%20%20%20When%20unspecified%2C%20the%20state%20of%20the%20attribute%20will%20be%20reversed.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Node%20to%20target.%20%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'toggleAttribute'%2Cvalue%3Afunction%20toggleAttribute(name%2Cbool%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bif(arguments.length%3D%3D1)%7Bbool%3D!node.hasAttribute(name)%3B%7Dif(bool)%7Bnode.setAttribute(name%2C'')%3B%7Delse%7Bnode.removeAttribute(name)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Toggles%20a%20CSS%20class%20on%20or%20off.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20CSS%20class%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20bool%20Boolean%20to%20force%20the%20class%20on%20or%20off.%0A%20%20%20%20%20%20%20*%20%20%20%20When%20unspecified%2C%20the%20state%20of%20the%20class%20will%20be%20reversed.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Node%20to%20target.%20%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'toggleClass'%2Cvalue%3Afunction%20toggleClass(name%2Cbool%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bif(arguments.length%3D%3D1)%7Bbool%3D!node.classList.contains(name)%3B%7Dif(bool)%7Bnode.classList.add(name)%3B%7Delse%7Bnode.classList.remove(name)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Cross-platform%20helper%20for%20setting%20an%20element's%20CSS%20%60transform%60%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20transformText%20Transform%20setting.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Element%20to%20apply%20the%20transform%20to.%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60this%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'transform'%2Cvalue%3Afunction%20transform(transformText%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bnode.style.webkitTransform%3DtransformText%3Bnode.style.transform%3DtransformText%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Cross-platform%20helper%20for%20setting%20an%20element's%20CSS%20%60translate3d%60%0A%20%20%20%20%20%20%20*%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20x%20X%20offset.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20y%20Y%20offset.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20z%20Z%20offset.%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%3D%7D%20node%20Element%20to%20apply%20the%20transform%20to.%0A%20%20%20%20%20%20%20*%20Defaults%20to%20%60this%60.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'translate3d'%2Cvalue%3Afunction%20translate3d(x%2Cy%2Cz%2Cnode)%7Bnode%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%7C%7Cthis%3Bthis.transform('translate3d('%2Bx%2B'%2C'%2By%2B'%2C'%2Bz%2B')'%2Cnode)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20an%20array%2C%20if%20it%20exists.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20the%20array%20is%20specified%20by%20path%2C%20a%20change%20notification%20is%0A%20%20%20%20%20%20%20*%20generated%2C%20so%20that%20observers%2C%20data%20bindings%20and%20computed%0A%20%20%20%20%20%20%20*%20properties%20watching%20that%20path%20can%20update.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20the%20array%20is%20passed%20directly%2C%20**no%20change%0A%20%20%20%20%20%20%20*%20notification%20is%20generated**.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cnumber%7Cstring%3E%7D%20arrayOrPath%20Path%20to%20array%20from%20which%20to%20remove%20the%20item%0A%20%20%20%20%20%20%20*%20%20%20(or%20the%20array%20itself).%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20to%20remove.%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20containing%20item%20removed.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'arrayDelete'%2Cvalue%3Afunction%20arrayDelete(arrayOrPath%2Citem)%7Bvar%20index%3Dvoid%200%3Bif(Array.isArray(arrayOrPath))%7Bindex%3DarrayOrPath.indexOf(item)%3Bif(index%3E%3D0)%7Breturn%20arrayOrPath.splice(index%2C1)%3B%7D%7Delse%7Bvar%20arr%3DPolymer.Path.get(this%2CarrayOrPath)%3Bindex%3Darr.indexOf(item)%3Bif(index%3E%3D0)%7Breturn%20this.splice(arrayOrPath%2Cindex%2C1)%3B%7D%7Dreturn%20null%3B%7D%2F%2F%20logging%0A%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.log%60%2F%60warn%60%2F%60error%60%20as%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20level%20One%20of%20'log'%2C%20'warn'%2C%20'error'%0A%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_logger'%2Cvalue%3Afunction%20_logger(level%2Cargs)%7Bvar%20_console%3B%2F%2F%20accept%20%5B'foo'%2C%20'bar'%5D%20and%20%5B%5B'foo'%2C%20'bar'%5D%5D%0Aif(Array.isArray(args)%26%26args.length%3D%3D%3D1%26%26Array.isArray(args%5B0%5D))%7Bargs%3Dargs%5B0%5D%3B%7Dswitch(level)%7Bcase'log'%3Acase'warn'%3Acase'error'%3A(_console%3Dconsole)%5Blevel%5D.apply(_console%2C_toConsumableArray(args))%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.log%60%20as%20an%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_log'%2Cvalue%3Afunction%20_log()%7Bfor(var%20_len%3Darguments.length%2Cargs%3DArray(_len)%2C_key%3D0%3B_key%3C_len%3B_key%2B%2B)%7Bargs%5B_key%5D%3Darguments%5B_key%5D%3B%7Dthis._logger('log'%2Cargs)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.warn%60%20as%20an%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_warn'%2Cvalue%3Afunction%20_warn()%7Bfor(var%20_len2%3Darguments.length%2Cargs%3DArray(_len2)%2C_key2%3D0%3B_key2%3C_len2%3B_key2%2B%2B)%7Bargs%5B_key2%5D%3Darguments%5B_key2%5D%3B%7Dthis._logger('warn'%2Cargs)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Facades%20%60console.error%60%20as%20an%20override%20point.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_error'%2Cvalue%3Afunction%20_error()%7Bfor(var%20_len3%3Darguments.length%2Cargs%3DArray(_len3)%2C_key3%3D0%3B_key3%3C_len3%3B_key3%2B%2B)%7Bargs%5B_key3%5D%3Darguments%5B_key3%5D%3B%7Dthis._logger('error'%2Cargs)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Formats%20a%20message%20using%20the%20element%20type%20an%20a%20method%20name.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Method%20name%20to%20associate%20with%20message%0A%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20args%20Array%20of%20strings%20or%20objects%20to%20log%0A%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20with%20formatting%20information%20for%20%60console%60%0A%20%20%20%20%20%20%20*%20%20%20logging.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_logf'%2Cvalue%3Afunction%20_logf(methodName)%7Bfor(var%20_len4%3Darguments.length%2Cargs%3DArray(_len4%3E1%3F_len4-1%3A0)%2C_key4%3D1%3B_key4%3C_len4%3B_key4%2B%2B)%7Bargs%5B_key4-1%5D%3Darguments%5B_key4%5D%3B%7Dreturn%5B'%5B%25s%3A%3A%25s%5D'%2Cthis.is%2CmethodName%5D.concat(args)%3B%7D%7D%2C%7Bkey%3A'domHost'%2Cget%3Afunction%20get()%7Bvar%20root%3Dthis.getRootNode()%3Breturn%20root%20instanceof%20DocumentFragment%3F%2F**%20%40type%20%7BShadowRoot%7D%20*%2Froot.host%3Aroot%3B%7D%7D%5D%2C%5B%7Bkey%3A'importMeta'%2Cget%3Afunction%20get()%7Breturn%20this.prototype.importMeta%3B%7D%7D%5D)%3Breturn%20LegacyElement%3B%7D(legacyElementBase)%3BLegacyElement.prototype.is%3D''%3Breturn%20LegacyElement%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Flegacy-element-mixin.html.js%0A",
            "totalBytes": 37092,
            "wastedBytes": 24461,
            "wastedPercent": 65.94683489701283
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20builtCSS%3Dwindow.ShadyCSS%26%26window.ShadyCSS%5B'cssBuild'%5D%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20the%20core%20API%20for%20Polymer's%20meta-programming%0A%20%20%20*%20features%20including%20template%20stamping%2C%20data-binding%2C%20attribute%20deserialization%2C%0A%20%20%20*%20and%20property%20change%20observation.%0A%20%20%20*%0A%20%20%20*%20Subclassers%20may%20provide%20the%20following%20static%20getters%20to%20return%20metadata%0A%20%20%20*%20used%20to%20configure%20Polymer's%20features%20for%20the%20class%3A%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20is()%60%3A%20When%20the%20template%20is%20provided%20via%20a%20%60dom-module%60%2C%0A%20%20%20*%20%20%20users%20should%20return%20the%20%60dom-module%60%20id%20from%20a%20static%20%60is%60%20getter.%20%20If%0A%20%20%20*%20%20%20no%20template%20is%20needed%20or%20the%20template%20is%20provided%20directly%20via%20the%0A%20%20%20*%20%20%20%60template%60%20getter%2C%20there%20is%20no%20need%20to%20define%20%60is%60%20for%20the%20element.%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20template()%60%3A%20Users%20may%20provide%20the%20template%20directly%20(as%0A%20%20%20*%20%20%20opposed%20to%20via%20%60dom-module%60)%20by%20implementing%20a%20static%20%60template%60%20getter.%0A%20%20%20*%20%20%20The%20getter%20may%20return%20an%20%60HTMLTemplateElement%60%20or%20a%20string%2C%20which%20will%0A%20%20%20*%20%20%20automatically%20be%20parsed%20into%20a%20template.%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20properties()%60%3A%20Should%20return%20an%20object%20describing%0A%20%20%20*%20%20%20property-related%20metadata%20used%20by%20Polymer%20features%20(key%3A%20property%20name%0A%20%20%20*%20%20%20value%3A%20object%20containing%20property%20metadata).%20Valid%20keys%20in%20per-property%0A%20%20%20*%20%20%20metadata%20include%3A%0A%20%20%20*%20%20%20-%20%60type%60%20(String%7CNumber%7CObject%7CArray%7C...)%3A%20Used%20by%0A%20%20%20*%20%20%20%20%20%60attributeChangedCallback%60%20to%20determine%20how%20string-based%20attributes%0A%20%20%20*%20%20%20%20%20are%20deserialized%20to%20JavaScript%20property%20values.%0A%20%20%20*%20%20%20-%20%60notify%60%20(boolean)%3A%20Causes%20a%20change%20in%20the%20property%20to%20fire%20a%0A%20%20%20*%20%20%20%20%20non-bubbling%20event%20called%20%60%3Cproperty%3E-changed%60.%20Elements%20that%20have%0A%20%20%20*%20%20%20%20%20enabled%20two-way%20binding%20to%20the%20property%20use%20this%20event%20to%20observe%20changes.%0A%20%20%20*%20%20%20-%20%60readOnly%60%20(boolean)%3A%20Creates%20a%20getter%20for%20the%20property%2C%20but%20no%20setter.%0A%20%20%20*%20%20%20%20%20To%20set%20a%20read-only%20property%2C%20use%20the%20private%20setter%20method%0A%20%20%20*%20%20%20%20%20%60_setProperty(property%2C%20value)%60.%0A%20%20%20*%20%20%20-%20%60observer%60%20(string)%3A%20Observer%20method%20name%20that%20will%20be%20called%20when%0A%20%20%20*%20%20%20%20%20the%20property%20changes.%20The%20arguments%20of%20the%20method%20are%0A%20%20%20*%20%20%20%20%20%60(value%2C%20previousValue)%60.%0A%20%20%20*%20%20%20-%20%60computed%60%20(string)%3A%20String%20describing%20method%20and%20dependent%20properties%0A%20%20%20*%20%20%20%20%20for%20computing%20the%20value%20of%20this%20property%20(e.g.%20%60'computeFoo(bar%2C%20zot)'%60).%0A%20%20%20*%20%20%20%20%20Computed%20properties%20are%20read-only%20by%20default%20and%20can%20only%20be%20changed%0A%20%20%20*%20%20%20%20%20via%20the%20return%20value%20of%20the%20computing%20method.%0A%20%20%20*%0A%20%20%20*%20-%20%60static%20get%20observers()%60%3A%20Array%20of%20strings%20describing%20multi-property%0A%20%20%20*%20%20%20observer%20methods%20and%20their%20dependent%20properties%20(e.g.%0A%20%20%20*%20%20%20%60'observeABC(a%2C%20b%2C%20c)'%60).%0A%20%20%20*%0A%20%20%20*%20The%20base%20class%20provides%20default%20implementations%20for%20the%20following%20standard%0A%20%20%20*%20custom%20element%20lifecycle%20callbacks%3B%20users%20may%20override%20these%2C%20but%20should%0A%20%20%20*%20call%20the%20super%20method%20to%20ensure%0A%20%20%20*%20-%20%60constructor%60%3A%20Run%20when%20the%20element%20is%20created%20or%20upgraded%0A%20%20%20*%20-%20%60connectedCallback%60%3A%20Run%20each%20time%20the%20element%20is%20connected%20to%20the%0A%20%20%20*%20%20%20document%0A%20%20%20*%20-%20%60disconnectedCallback%60%3A%20Run%20each%20time%20the%20element%20is%20disconnected%20from%0A%20%20%20*%20%20%20the%20document%0A%20%20%20*%20-%20%60attributeChangedCallback%60%3A%20Run%20each%20time%20an%20attribute%20in%0A%20%20%20*%20%20%20%60observedAttributes%60%20is%20set%20or%20removed%20(note%3A%20this%20element's%20default%0A%20%20%20*%20%20%20%60observedAttributes%60%20implementation%20will%20automatically%20return%20an%20array%0A%20%20%20*%20%20%20of%20dash-cased%20attributes%20based%20on%20%60properties%60)%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertyEffects%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertiesMixin%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40property%20rootPath%20%7Bstring%7D%20Set%20to%20the%20value%20of%20%60Polymer.rootPath%60%2C%0A%20%20%20*%20%20%20which%20defaults%20to%20the%20main%20document%20path%0A%20%20%20*%20%40property%20importPath%20%7Bstring%7D%20Set%20to%20the%20value%20of%20the%20class's%20static%0A%20%20%20*%20%20%20%60importPath%60%20property%2C%20which%20defaults%20to%20the%20path%20of%20this%20element's%0A%20%20%20*%20%20%20%60dom-module%60%20(when%20%60is%60%20is%20used)%2C%20but%20can%20be%20overridden%20for%20other%0A%20%20%20*%20%20%20import%20strategies.%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20the%20core%20API%20for%20Polymer's%0A%20%20%20*%20meta-programming%20features.%0A%20%20%20*%2FPolymer.ElementMixin%3DPolymer.dedupingMixin(function(base)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesMixin%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20polymerElementBase%3DPolymer.PropertiesMixin(Polymer.PropertyEffects(base))%3B%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20properties%20with%20default%20values.%0A%20%20%20%20%20*%20This%20list%20is%20created%20as%20an%20optimization%20since%20it%20is%20a%20subset%20of%0A%20%20%20%20%20*%20the%20list%20returned%20from%20%60_properties%60.%0A%20%20%20%20%20*%20This%20list%20is%20used%20in%20%60_initializeProperties%60%20to%20set%20property%20defaults.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BPolymerElementConstructor%7D%20constructor%20Element%20class%0A%20%20%20%20%20*%20%40return%20%7BPolymerElementProperties%7D%20Flattened%20properties%20for%20this%20class%0A%20%20%20%20%20*%20%20%20that%20have%20default%20values%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20propertyDefaults(constructor)%7Bif(!constructor.hasOwnProperty(JSCompiler_renameProperty('__propertyDefaults'%2Cconstructor)))%7Bconstructor.__propertyDefaults%3Dnull%3Bvar%20props%3Dconstructor._properties%3Bfor(var%20p%20in%20props)%7Bvar%20info%3Dprops%5Bp%5D%3Bif('value'in%20info)%7Bconstructor.__propertyDefaults%3Dconstructor.__propertyDefaults%7C%7C%7B%7D%3Bconstructor.__propertyDefaults%5Bp%5D%3Dinfo%3B%7D%7D%7Dreturn%20constructor.__propertyDefaults%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20memoized%20version%20of%20the%20%60observers%60%20array.%0A%20%20%20%20%20*%20%40param%20%7BPolymerElementConstructor%7D%20constructor%20Element%20class%0A%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20containing%20own%20observers%20for%20the%20given%20class%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2Ffunction%20ownObservers(constructor)%7Bif(!constructor.hasOwnProperty(JSCompiler_renameProperty('__ownObservers'%2Cconstructor)))%7Bconstructor.__ownObservers%3Dconstructor.hasOwnProperty(JSCompiler_renameProperty('observers'%2Cconstructor))%3F%2F**%20%40type%20%7BPolymerElementConstructor%7D%20*%2Fconstructor.observers%3Anull%3B%7Dreturn%20constructor.__ownObservers%3B%7D%2F**%0A%20%20%20%20%20*%20Creates%20effects%20for%20a%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%2C%20once%20a%20property%20has%20been%20set%20to%0A%20%20%20%20%20*%20%60readOnly%60%2C%20%60computed%60%2C%20%60reflectToAttribute%60%2C%20or%20%60notify%60%0A%20%20%20%20%20*%20these%20values%20may%20not%20be%20changed.%20For%20example%2C%20a%20subclass%20cannot%0A%20%20%20%20%20*%20alter%20these%20settings.%20However%2C%20additional%20%60observers%60%20may%20be%20added%0A%20%20%20%20%20*%20by%20subclasses.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20info%20object%20should%20contain%20property%20metadata%20as%20follows%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60type%60%3A%20%7Bfunction%7D%20type%20to%20which%20an%20attribute%20matching%20the%20property%0A%20%20%20%20%20*%20is%20deserialized.%20Note%20the%20property%20is%20camel-cased%20from%20a%20dash-cased%0A%20%20%20%20%20*%20attribute.%20For%20example%2C%20'foo-bar'%20attribute%20is%20deserialized%20to%20a%0A%20%20%20%20%20*%20property%20named%20'fooBar'.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60readOnly%60%3A%20%7Bboolean%7D%20creates%20a%20readOnly%20property%20and%0A%20%20%20%20%20*%20makes%20a%20private%20setter%20for%20the%20private%20of%20the%20form%20'_setFoo'%20for%20a%0A%20%20%20%20%20*%20property%20'foo'%2C%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60computed%60%3A%20%7Bstring%7D%20creates%20a%20computed%20property.%20A%20computed%20property%0A%20%20%20%20%20*%20is%20also%20automatically%20set%20to%20%60readOnly%3A%20true%60.%20The%20value%20is%20calculated%0A%20%20%20%20%20*%20by%20running%20a%20method%20and%20arguments%20parsed%20from%20the%20given%20string.%20For%0A%20%20%20%20%20*%20example%20'compute(foo)'%20will%20compute%20a%20given%20property%20when%20the%0A%20%20%20%20%20*%20'foo'%20property%20changes%20by%20executing%20the%20'compute'%20method.%20This%20method%0A%20%20%20%20%20*%20must%20return%20the%20computed%20value.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60reflectToAttribute%60%3A%20%7Bboolean%7D%20If%20true%2C%20the%20property%20value%20is%20reflected%0A%20%20%20%20%20*%20to%20an%20attribute%20of%20the%20same%20name.%20Note%2C%20the%20attribute%20is%20dash-cased%0A%20%20%20%20%20*%20so%20a%20property%20named%20'fooBar'%20is%20reflected%20as%20'foo-bar'.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20%60notify%60%3A%20%7Bboolean%7D%20sends%20a%20non-bubbling%20notification%20event%20when%0A%20%20%20%20%20*%20the%20property%20changes.%20For%20example%2C%20a%20property%20named%20'foo'%20sends%20an%0A%20%20%20%20%20*%20event%20named%20'foo-changed'%20with%20%60event.detail%60%20set%20to%20the%20value%20of%0A%20%20%20%20%20*%20the%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20*%20observer%3A%20%7Bstring%7D%20name%20of%20a%20method%20that%20runs%20when%20the%20property%0A%20%20%20%20%20*%20changes.%20The%20arguments%20of%20the%20method%20are%20(value%2C%20previousValue).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20Users%20may%20want%20control%20over%20modifying%20property%0A%20%20%20%20%20*%20effects%20via%20subclassing.%20For%20example%2C%20a%20user%20might%20want%20to%20make%20a%0A%20%20%20%20%20*%20reflectToAttribute%20property%20not%20do%20so%20in%20a%20subclass.%20We've%20chosen%20to%0A%20%20%20%20%20*%20disable%20this%20because%20it%20leads%20to%20additional%20complication.%0A%20%20%20%20%20*%20For%20example%2C%20a%20readOnly%20effect%20generates%20a%20special%20setter.%20If%20a%20subclass%0A%20%20%20%20%20*%20disables%20the%20effect%2C%20the%20setter%20would%20fail%20unexpectedly.%0A%20%20%20%20%20*%20Based%20on%20feedback%2C%20we%20may%20want%20to%20try%20to%20make%20effects%20more%20malleable%0A%20%20%20%20%20*%20and%2For%20provide%20an%20advanced%20api%20for%20manipulating%20them.%0A%20%20%20%20%20*%20Also%20consider%20adding%20warnings%20when%20an%20effect%20cannot%20be%20changed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!PolymerElement%7D%20proto%20Element%20class%20prototype%20to%20add%20accessors%0A%20%20%20%20%20*%20%20%20and%20effects%20to%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20the%20property.%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20info%20Info%20object%20from%20which%20to%20create%20property%20effects.%0A%20%20%20%20%20*%20Supported%20keys%3A%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20allProps%20Flattened%20map%20of%20all%20properties%20defined%20in%20this%0A%20%20%20%20%20*%20%20%20element%20(including%20inherited%20properties)%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20createPropertyFromConfig(proto%2Cname%2Cinfo%2CallProps)%7B%2F%2F%20computed%20forces%20readOnly...%0Aif(info.computed)%7Binfo.readOnly%3Dtrue%3B%7D%2F%2F%20Note%2C%20since%20all%20computed%20properties%20are%20readOnly%2C%20this%20prevents%0A%2F%2F%20adding%20additional%20computed%20property%20effects%20(which%20leads%20to%20a%20confusing%0A%2F%2F%20setup%20where%20multiple%20triggers%20for%20setting%20a%20property)%0A%2F%2F%20While%20we%20do%20have%20%60hasComputedEffect%60%20this%20is%20set%20on%20the%20property's%0A%2F%2F%20dependencies%20rather%20than%20itself.%0Aif(info.computed%26%26!proto._hasReadOnlyEffect(name))%7Bproto._createComputedProperty(name%2Cinfo.computed%2CallProps)%3B%7Dif(info.readOnly%26%26!proto._hasReadOnlyEffect(name))%7Bproto._createReadOnlyProperty(name%2C!info.computed)%3B%7Dif(info.reflectToAttribute%26%26!proto._hasReflectEffect(name))%7Bproto._createReflectedProperty(name)%3B%7Dif(info.notify%26%26!proto._hasNotifyEffect(name))%7Bproto._createNotifyingProperty(name)%3B%7D%2F%2F%20always%20add%20observer%0Aif(info.observer)%7Bproto._createPropertyObserver(name%2Cinfo.observer%2CallProps%5Binfo.observer%5D)%3B%7D%2F%2F%20always%20create%20the%20mapping%20from%20attribute%20back%20to%20property%20for%20deserialization.%0Aproto._addPropertyToAttributeMap(name)%3B%7D%2F**%0A%20%20%20%20%20*%20Process%20all%20style%20elements%20in%20the%20element%20template.%20Styles%20with%20the%0A%20%20%20%20%20*%20%60include%60%20attribute%20are%20processed%20such%20that%20any%20styles%20in%0A%20%20%20%20%20*%20the%20associated%20%22style%20modules%22%20are%20included%20in%20the%20element%20template.%0A%20%20%20%20%20*%20%40param%20%7BPolymerElementConstructor%7D%20klass%20Element%20class%0A%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20process%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20is%20Name%20of%20element%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20for%20element%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20processElementStyles(klass%2Ctemplate%2Cis%2CbaseURI)%7Bif(!builtCSS)%7Bvar%20templateStyles%3Dtemplate.content.querySelectorAll('style')%3Bvar%20stylesWithImports%3DPolymer.StyleGather.stylesFromTemplate(template)%3B%2F%2F%20insert%20styles%20from%20%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%20at%20the%20top%20of%20the%20template%0Avar%20linkedStyles%3DPolymer.StyleGather.stylesFromModuleImports(is)%3Bvar%20firstTemplateChild%3Dtemplate.content.firstElementChild%3Bfor(var%20idx%3D0%3Bidx%3ClinkedStyles.length%3Bidx%2B%2B)%7Bvar%20s%3DlinkedStyles%5Bidx%5D%3Bs.textContent%3Dklass._processStyleText(s.textContent%2CbaseURI)%3Btemplate.content.insertBefore(s%2CfirstTemplateChild)%3B%7D%2F%2F%20keep%20track%20of%20the%20last%20%22concrete%22%20style%20in%20the%20template%20we%20have%20encountered%0Avar%20templateStyleIndex%3D0%3B%2F%2F%20ensure%20all%20gathered%20styles%20are%20actually%20in%20this%20template.%0Afor(var%20i%3D0%3Bi%3CstylesWithImports.length%3Bi%2B%2B)%7Bvar%20_s%3DstylesWithImports%5Bi%5D%3Bvar%20templateStyle%3DtemplateStyles%5BtemplateStyleIndex%5D%3B%2F%2F%20if%20the%20style%20is%20not%20in%20this%20template%2C%20it's%20been%20%22included%22%20and%0A%2F%2F%20we%20put%20a%20clone%20of%20it%20in%20the%20template%20before%20the%20style%20that%20included%20it%0Aif(templateStyle!%3D%3D_s)%7B_s%3D_s.cloneNode(true)%3BtemplateStyle.parentNode.insertBefore(_s%2CtemplateStyle)%3B%7Delse%7BtemplateStyleIndex%2B%2B%3B%7D_s.textContent%3Dklass._processStyleText(_s.textContent%2CbaseURI)%3B%7D%7Dif(window.ShadyCSS)%7Bwindow.ShadyCSS.prepareTemplate(template%2Cis)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Look%20up%20template%20from%20dom-module%20for%20element%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!string%7D%20is%20Element%20name%20to%20look%20up%0A%20%20%20%20%20*%20%40return%20%7B!HTMLTemplateElement%7D%20Template%20found%20in%20dom%20module%2C%20or%0A%20%20%20%20%20*%20%20%20undefined%20if%20not%20found%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2Ffunction%20getTemplateFromDomModule(is)%7Bvar%20template%3Dnull%3Bif(is%26%26Polymer.DomModule)%7Btemplate%3DPolymer.DomModule.import(is%2C'template')%3B%2F%2F%20Under%20strictTemplatePolicy%2C%20require%20any%20element%20with%20an%20%60is%60%0A%2F%2F%20specified%20to%20have%20a%20dom-module%0Aif(Polymer.strictTemplatePolicy%26%26!template)%7Bthrow%20new%20Error('strictTemplatePolicy%3A%20expecting%20dom-module%20or%20null%20template%20for%20'%2Bis)%3B%7D%7Dreturn%20template%3B%7D%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20%20%20*%2Fvar%20PolymerElement%3Dfunction(_polymerElementBase)%7B_inherits(PolymerElement%2C_polymerElementBase)%3B_createClass(PolymerElement%2Cnull%2C%5B%7Bkey%3A'_finalizeClass'%2C%2F**%0A%20%20%20%20%20%20%20*%20Override%20of%20PropertiesMixin%20_finalizeClass%20to%20create%20observers%20and%0A%20%20%20%20%20%20%20*%20find%20the%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_finalizeClass()%7B_get(PolymerElement.__proto__%7C%7CObject.getPrototypeOf(PolymerElement)%2C'_finalizeClass'%2Cthis).call(this)%3Bvar%20observers%3DownObservers(this)%3Bif(observers)%7Bthis.createObservers(observers%2Cthis._properties)%3B%7Dthis._prepareTemplate()%3B%7D%7D%2C%7Bkey%3A'_prepareTemplate'%2Cvalue%3Afunction%20_prepareTemplate()%7B%2F%2F%20note%3A%20create%20%22working%22%20template%20that%20is%20finalized%20at%20instance%20time%0Avar%20template%3D%2F**%20%40type%20%7BPolymerElementConstructor%7D%20*%2Fthis.template%3Bif(template)%7Bif(typeof%20template%3D%3D%3D'string')%7Bvar%20t%3Ddocument.createElement('template')%3Bt.innerHTML%3Dtemplate%3Btemplate%3Dt%3B%7Delse%20if(!Polymer.legacyOptimizations)%7Btemplate%3Dtemplate.cloneNode(true)%3B%7D%7Dthis.prototype._template%3Dtemplate%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20of%20PropertiesChanged%20createProperties%20to%20create%20accessors%0A%20%20%20%20%20%20%20*%20and%20property%20effects%20for%20all%20of%20the%20properties.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createProperties'%2Cvalue%3Afunction%20createProperties(props)%7Bfor(var%20p%20in%20props)%7BcreatePropertyFromConfig(this.prototype%2Cp%2Cprops%5Bp%5D%2Cprops)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Creates%20observers%20for%20the%20given%20%60observers%60%20array.%0A%20%20%20%20%20%20%20*%20Leverages%20%60PropertyEffects%60%20to%20create%20observers.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20observers%20Array%20of%20observer%20descriptors%20for%0A%20%20%20%20%20%20%20*%20%20%20this%20class%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20dynamicFns%20Object%20containing%20keys%20for%20any%20properties%0A%20%20%20%20%20%20%20*%20%20%20that%20are%20functions%20and%20should%20trigger%20the%20effect%20when%20the%20function%0A%20%20%20%20%20%20%20*%20%20%20reference%20is%20changed%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'createObservers'%2Cvalue%3Afunction%20createObservers(observers%2CdynamicFns)%7Bvar%20proto%3Dthis.prototype%3Bfor(var%20i%3D0%3Bi%3Cobservers.length%3Bi%2B%2B)%7Bproto._createMethodObserver(observers%5Bi%5D%2CdynamicFns)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20template%20that%20will%20be%20stamped%20into%20this%20element's%20shadow%20root.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20a%20%60static%20get%20is()%60%20getter%20is%20defined%2C%20the%20default%20implementation%0A%20%20%20%20%20%20%20*%20will%20return%20the%20first%20%60%3Ctemplate%3E%60%20in%20a%20%60dom-module%60%20whose%20%60id%60%0A%20%20%20%20%20%20%20*%20matches%20this%20element's%20%60is%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20getter%20to%20return%20an%20arbitrary%20template%0A%20%20%20%20%20%20%20*%20(in%20which%20case%20the%20%60is%60%20getter%20is%20unnecessary).%20The%20template%20returned%0A%20%20%20%20%20%20%20*%20may%20be%20either%20an%20%60HTMLTemplateElement%60%20or%20a%20string%20that%20will%20be%0A%20%20%20%20%20%20%20*%20automatically%20parsed%20into%20a%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20when%20subclassing%2C%20if%20the%20super%20class%20overrode%20the%20default%0A%20%20%20%20%20%20%20*%20implementation%20and%20the%20subclass%20would%20like%20to%20provide%20an%20alternate%0A%20%20%20%20%20%20%20*%20template%20via%20a%20%60dom-module%60%2C%20it%20should%20override%20this%20getter%20and%0A%20%20%20%20%20%20%20*%20return%20%60Polymer.DomModule.import(this.is%2C%20'template')%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20a%20subclass%20would%20like%20to%20modify%20the%20super%20class%20template%2C%20it%20should%0A%20%20%20%20%20%20%20*%20clone%20it%20rather%20than%20modify%20it%20in%20place.%20%20If%20the%20getter%20does%20expensive%0A%20%20%20%20%20%20%20*%20work%20such%20as%20cloning%2Fmodifying%20a%20template%2C%20it%20should%20memoize%20the%0A%20%20%20%20%20%20%20*%20template%20for%20maximum%20performance%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20let%20memoizedTemplate%3B%0A%20%20%20%20%20%20%20*%20%20%20class%20MySubClass%20extends%20MySuperClass%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20static%20get%20template()%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20if%20(!memoizedTemplate)%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20memoizedTemplate%20%3D%20MySuperClass.template.cloneNode(true)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20let%20subContent%20%3D%20document.createElement('div')%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20subContent.textContent%20%3D%20'This%20came%20from%20MySubClass'%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20memoizedTemplate.content.appendChild(subContent)%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20return%20memoizedTemplate%3B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7BHTMLTemplateElement%7Cstring%7D%20Template%20to%20be%20stamped%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'template'%2Cget%3Afunction%20get()%7B%2F%2F%20Explanation%20of%20template-related%20properties%3A%0A%2F%2F%20-%20constructor.template%20(this%20getter)%3A%20the%20template%20for%20the%20class.%0A%2F%2F%20%20%20%20%20This%20can%20come%20from%20the%20prototype%20(for%20legacy%20elements)%2C%20from%20a%0A%2F%2F%20%20%20%20%20dom-module%2C%20or%20from%20the%20super%20class's%20template%20(or%20can%20be%20overridden%0A%2F%2F%20%20%20%20%20altogether%20by%20the%20user)%0A%2F%2F%20-%20constructor._template%3A%20memoized%20version%20of%20constructor.template%0A%2F%2F%20-%20prototype._template%3A%20working%20template%20for%20the%20element%2C%20which%20will%20be%0A%2F%2F%20%20%20%20%20parsed%20and%20modified%20in%20place.%20It%20is%20a%20cloned%20version%20of%0A%2F%2F%20%20%20%20%20constructor.template%2C%20saved%20in%20_finalizeClass().%20Note%20that%20before%0A%2F%2F%20%20%20%20%20this%20getter%20is%20called%2C%20for%20legacy%20elements%20this%20could%20be%20from%20a%0A%2F%2F%20%20%20%20%20_template%20field%20on%20the%20info%20object%20passed%20to%20Polymer()%2C%20a%20behavior%2C%0A%2F%2F%20%20%20%20%20or%20set%20in%20registered()%3B%20once%20the%20static%20getter%20runs%2C%20a%20clone%20of%20it%0A%2F%2F%20%20%20%20%20will%20overwrite%20it%20on%20the%20prototype%20as%20the%20working%20template.%0Aif(!this.hasOwnProperty(JSCompiler_renameProperty('_template'%2Cthis)))%7Bthis._template%3D%2F%2F%20If%20user%20has%20put%20template%20on%20prototype%20(e.g.%20in%20legacy%20via%20registered%0A%2F%2F%20callback%20or%20info%20object)%2C%20prefer%20that%20first%0Athis.prototype.hasOwnProperty(JSCompiler_renameProperty('_template'%2Cthis.prototype))%3Fthis.prototype._template%3A%2F%2F%20Look%20in%20dom-module%20associated%20with%20this%20element's%20is%0AgetTemplateFromDomModule(%2F**%20%40type%20%7BPolymerElementConstructor%7D*%2Fthis.is)%7C%7C%2F%2F%20Next%20look%20for%20superclass%20template%20(call%20the%20super%20impl%20this%0A%2F%2F%20way%20so%20that%20%60this%60%20points%20to%20the%20superclass)%0AObject.getPrototypeOf(%2F**%20%40type%20%7BPolymerElementConstructor%7D*%2Fthis.prototype).constructor.template%3B%7Dreturn%20this._template%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7Cstring%7D%20value%20Template%20to%20set.%0A%20%20%20%20%20%20%20*%2F%2Cset%3Afunction%20set(value)%7Bthis._template%3Dvalue%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Path%20matching%20the%20url%20from%20which%20the%20element%20was%20imported.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20path%20is%20used%20to%20resolve%20url's%20in%20template%20style%20cssText.%0A%20%20%20%20%20%20%20*%20The%20%60importPath%60%20property%20is%20also%20set%20on%20element%20instances%20and%20can%20be%0A%20%20%20%20%20%20%20*%20used%20to%20create%20bindings%20relative%20to%20the%20import%20path.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20For%20elements%20defined%20in%20ES%20modules%2C%20users%20should%20implement%0A%20%20%20%20%20%20%20*%20%60static%20get%20importMeta()%20%7B%20return%20import.meta%3B%20%7D%60%2C%20and%20the%20default%0A%20%20%20%20%20%20%20*%20implementation%20of%20%60importPath%60%20will%20%20return%20%60import.meta.url%60's%20path.%0A%20%20%20%20%20%20%20*%20For%20elements%20defined%20in%20HTML%20imports%2C%20this%20getter%20will%20return%20the%20path%0A%20%20%20%20%20%20%20*%20to%20the%20document%20containing%20a%20%60dom-module%60%20element%20matching%20this%0A%20%20%20%20%20%20%20*%20element's%20static%20%60is%60%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%2C%20this%20path%20should%20contain%20a%20trailing%20%60%2F%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20The%20import%20path%20for%20this%20element%20class%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'importPath'%2Cget%3Afunction%20get()%7Bif(!this.hasOwnProperty(JSCompiler_renameProperty('_importPath'%2Cthis)))%7Bvar%20meta%3Dthis.importMeta%3Bif(meta)%7Bthis._importPath%3DPolymer.ResolveUrl.pathFromUrl(meta.url)%3B%7Delse%7Bvar%20module%3DPolymer.DomModule%26%26Polymer.DomModule.import(%2F**%20%40type%20%7BPolymerElementConstructor%7D%20*%2Fthis.is)%3Bthis._importPath%3Dmodule%26%26module.assetpath%7C%7CObject.getPrototypeOf(%2F**%20%40type%20%7BPolymerElementConstructor%7D*%2Fthis.prototype).constructor.importPath%3B%7D%7Dreturn%20this._importPath%3B%7D%7D%5D)%3Bfunction%20PolymerElement()%7B_classCallCheck(this%2CPolymerElement)%3B%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Fvar%20_this%3D_possibleConstructorReturn(this%2C(PolymerElement.__proto__%7C%7CObject.getPrototypeOf(PolymerElement)).call(this))%3B_this._template%3B%2F**%20%40type%20%7Bstring%7D%20*%2F_this._importPath%3B%2F**%20%40type%20%7Bstring%7D%20*%2F_this.rootPath%3B%2F**%20%40type%20%7Bstring%7D%20*%2F_this.importPath%3B%2F**%20%40type%20%7BStampedTemplate%20%7C%20HTMLElement%20%7C%20ShadowRoot%7D%20*%2F_this.root%3B%2F**%20%40type%20%7B!Object%3Cstring%2C%20!Element%3E%7D%20*%2F_this.%24%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20the%20default%20%60Polymer.PropertyAccessors%60%20to%20ensure%20class%0A%20%20%20%20%20%20%20*%20metaprogramming%20related%20to%20property%20accessors%20and%20effects%20has%0A%20%20%20%20%20%20%20*%20completed%20(calls%20%60finalize%60).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20It%20also%20initializes%20any%20property%20defaults%20provided%20via%20%60value%60%20in%0A%20%20%20%20%20%20%20*%20%60properties%60%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F_createClass(PolymerElement%2C%5B%7Bkey%3A'_initializeProperties'%2Cvalue%3Afunction%20_initializeProperties()%7Bthis.constructor.finalize()%3B%2F%2F%20note%3A%20finalize%20template%20when%20we%20have%20access%20to%20%60localName%60%20to%0A%2F%2F%20avoid%20dependence%20on%20%60is%60%20for%20polyfilling%20styling.%0Athis.constructor._finalizeTemplate(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis.localName)%3B_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3B%2F%2F%20set%20path%20defaults%0Athis.rootPath%3DPolymer.rootPath%3Bthis.importPath%3Dthis.constructor.importPath%3B%2F%2F%20apply%20property%20defaults...%0Avar%20p%24%3DpropertyDefaults(this.constructor)%3Bif(!p%24)%7Breturn%3B%7Dfor(var%20p%20in%20p%24)%7Bvar%20info%3Dp%24%5Bp%5D%3B%2F%2F%20Don't%20set%20default%20value%20if%20there%20is%20already%20an%20own%20property%2C%20which%0A%2F%2F%20happens%20when%20a%20%60properties%60%20property%20with%20default%20but%20no%20effects%20had%0A%2F%2F%20a%20property%20set%20(e.g.%20bound)%20by%20its%20host%20before%20upgrade%0Aif(!this.hasOwnProperty(p))%7Bvar%20value%3Dtypeof%20info.value%3D%3D'function'%3Finfo.value.call(this)%3Ainfo.value%3B%2F%2F%20Set%20via%20%60_setProperty%60%20if%20there%20is%20an%20accessor%2C%20to%20enable%0A%2F%2F%20initializing%20readOnly%20property%20defaults%0Aif(this._hasAccessor(p))%7Bthis._setPendingProperty(p%2Cvalue%2Ctrue)%3B%7Delse%7Bthis%5Bp%5D%3Dvalue%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Gather%20style%20text%20for%20a%20style%20element%20in%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20cssText%20Text%20containing%20styling%20to%20process%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20to%20rebase%20CSS%20paths%20against%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20The%20processed%20CSS%20text%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2C%2F**%0A%20%20%20%20%20%20%20*%20Provides%20a%20default%20implementation%20of%20the%20standard%20Custom%20Elements%0A%20%20%20%20%20%20%20*%20%60connectedCallback%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20enables%20the%20property%20effects%20system%20and%0A%20%20%20%20%20%20%20*%20flushes%20any%20pending%20properties%2C%20and%20updates%20shimmed%20CSS%20properties%0A%20%20%20%20%20%20%20*%20when%20using%20the%20ShadyCSS%20scoping%2Fcustom%20properties%20polyfill.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%2C%20invalidCasts%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20connectedCallback()%7Bif(window.ShadyCSS%26%26this._template)%7Bwindow.ShadyCSS.styleElement(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis)%3B%7D_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'connectedCallback'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Stamps%20the%20element%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7Bif(this._template)%7Bthis.root%3Dthis._stampTemplate(this._template)%3Bthis.%24%3Dthis.root.%24%3B%7D_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'ready'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Implements%20%60PropertyEffects%60's%20%60_readyClients%60%20call.%20Attaches%0A%20%20%20%20%20%20%20*%20element%20dom%20by%20calling%20%60_attachDom%60%20with%20the%20dom%20stamped%20from%20the%0A%20%20%20%20%20%20%20*%20element's%20template%20via%20%60_stampTemplate%60.%20Note%20that%20this%20allows%0A%20%20%20%20%20%20%20*%20client%20dom%20to%20be%20attached%20to%20the%20element%20prior%20to%20any%20observers%0A%20%20%20%20%20%20%20*%20running.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_readyClients'%2Cvalue%3Afunction%20_readyClients()%7Bif(this._template)%7Bthis.root%3Dthis._attachDom(%2F**%20%40type%20%7BStampedTemplate%7D%20*%2Fthis.root)%3B%7D%2F%2F%20The%20super._readyClients%20here%20sets%20the%20clients%20initialized%20flag.%0A%2F%2F%20We%20must%20wait%20to%20do%20this%20until%20after%20client%20dom%20is%20created%2Fattached%0A%2F%2F%20so%20that%20this%20flag%20can%20be%20checked%20to%20prevent%20notifications%20fired%0A%2F%2F%20during%20this%20process%20from%20being%20handled%20before%20clients%20are%20ready.%0A_get(PolymerElement.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerElement.prototype)%2C'_readyClients'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Attaches%20an%20element's%20stamped%20dom%20to%20itself.%20By%20default%2C%0A%20%20%20%20%20%20%20*%20this%20method%20creates%20a%20%60shadowRoot%60%20and%20adds%20the%20dom%20to%20it.%0A%20%20%20%20%20%20%20*%20However%2C%20this%20method%20may%20be%20overridden%20to%20allow%20an%20element%0A%20%20%20%20%20%20%20*%20to%20put%20its%20dom%20in%20another%20location.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40throws%20%7BError%7D%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingReturn%7D%0A%20%20%20%20%20%20%20*%20%40param%20%7BStampedTemplate%7D%20dom%20to%20attach%20to%20the%20element.%0A%20%20%20%20%20%20%20*%20%40return%20%7BShadowRoot%7D%20node%20to%20which%20the%20dom%20has%20been%20attached.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_attachDom'%2Cvalue%3Afunction%20_attachDom(dom)%7Bif(this.attachShadow)%7Bif(dom)%7Bif(!this.shadowRoot)%7Bthis.attachShadow(%7Bmode%3A'open'%7D)%3B%7Dthis.shadowRoot.appendChild(dom)%3Breturn%20this.shadowRoot%3B%7Dreturn%20null%3B%7Delse%7Bthrow%20new%20Error('ShadowDOM%20not%20available.%20'%2B%2F%2F%20TODO(sorvell)%3A%20move%20to%20compile-time%20conditional%20when%20supported%0A'Polymer.Element%20can%20create%20dom%20as%20children%20instead%20of%20in%20'%2B'ShadowDOM%20by%20setting%20%60this.root%20%3D%20this%3B%5C%60%20before%20%5C%60ready%5C%60.')%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20When%20using%20the%20ShadyCSS%20scoping%20and%20custom%20property%20shim%2C%20causes%20all%0A%20%20%20%20%20%20%20*%20shimmed%20styles%20in%20this%20element%20(and%20its%20subtree)%20to%20be%20updated%0A%20%20%20%20%20%20%20*%20based%20on%20current%20custom%20property%20values.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20optional%20parameter%20overrides%20inline%20custom%20property%20styles%20with%20an%0A%20%20%20%20%20%20%20*%20object%20of%20properties%20where%20the%20keys%20are%20CSS%20properties%2C%20and%20the%20values%0A%20%20%20%20%20%20%20*%20are%20strings.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%20%60this.updateStyles(%7B'--color'%3A%20'blue'%7D)%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20These%20properties%20are%20retained%20unless%20a%20value%20of%20%60null%60%20is%20set.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%3A%20This%20function%20does%20not%20support%20updating%20CSS%20mixins.%0A%20%20%20%20%20%20%20*%20You%20can%20not%20dynamically%20change%20the%20value%20of%20an%20%60%40apply%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20properties%20Bag%20of%20custom%20property%20key%2Fvalues%20to%0A%20%20%20%20%20%20%20*%20%20%20apply%20to%20this%20element.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'updateStyles'%2Cvalue%3Afunction%20updateStyles(properties)%7Bif(window.ShadyCSS)%7Bwindow.ShadyCSS.styleSubtree(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis%2Cproperties)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Rewrites%20a%20given%20URL%20relative%20to%20a%20base%20URL.%20The%20base%20URL%20defaults%20to%0A%20%20%20%20%20%20%20*%20the%20original%20location%20of%20the%20document%20containing%20the%20%60dom-module%60%20for%0A%20%20%20%20%20%20%20*%20this%20element.%20This%20method%20will%20return%20the%20same%20URL%20before%20and%20after%0A%20%20%20%20%20%20%20*%20bundling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20this%20function%20performs%20no%20resolution%20for%20URLs%20that%20start%0A%20%20%20%20%20%20%20*%20with%20%60%2F%60%20(absolute%20URLs)%20or%20%60%23%60%20(hash%20identifiers).%20%20For%20general%20purpose%0A%20%20%20%20%20%20%20*%20URL%20resolution%2C%20use%20%60window.URL%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20url%20URL%20to%20resolve.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20base%20Optional%20base%20URL%20to%20resolve%20against%2C%20defaults%0A%20%20%20%20%20%20%20*%20to%20the%20element's%20%60importPath%60%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Rewritten%20URL%20relative%20to%20base%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'resolveUrl'%2Cvalue%3Afunction%20resolveUrl(url%2Cbase)%7Bif(!base%26%26this.importPath)%7Bbase%3DPolymer.ResolveUrl.resolveUrl(this.importPath)%3B%7Dreturn%20Polymer.ResolveUrl.resolveUrl(url%2Cbase)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessors%60%20to%20add%20map%20of%20dynamic%20functions%20on%0A%20%20%20%20%20%20%20*%20template%20info%2C%20for%20consumption%20by%20%60PropertyEffects%60%20template%20binding%0A%20%20%20%20%20%20%20*%20code.%20This%20map%20determines%20which%20method%20templates%20should%20have%20accessors%0A%20%20%20%20%20%20%20*%20created%20for%20them.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2F%7D%5D%2C%5B%7Bkey%3A'_processStyleText'%2Cvalue%3Afunction%20_processStyleText(cssText%2CbaseURI)%7Breturn%20Polymer.ResolveUrl.resolveCss(cssText%2CbaseURI)%3B%7D%2F**%0A%20%20%20%20%20%20*%20Configures%20an%20element%20%60proto%60%20to%20function%20with%20a%20given%20%60template%60.%0A%20%20%20%20%20%20*%20The%20element%20name%20%60is%60%20and%20extends%20%60ext%60%20must%20be%20specified%20for%20ShadyCSS%0A%20%20%20%20%20%20*%20style%20scoping.%0A%20%20%20%20%20%20*%0A%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20is%20Tag%20name%20(or%20type%20extension%20name)%20for%20this%20element%0A%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_finalizeTemplate'%2Cvalue%3Afunction%20_finalizeTemplate(is)%7B%2F**%20%40const%20%7BHTMLTemplateElement%7D%20*%2Fvar%20template%3Dthis.prototype._template%3Bif(template%26%26!template.__polymerFinalized)%7Btemplate.__polymerFinalized%3Dtrue%3Bvar%20importPath%3Dthis.importPath%3Bvar%20baseURI%3DimportPath%3FPolymer.ResolveUrl.resolveUrl(importPath)%3A''%3B%2F%2F%20e.g.%20support%20%60include%3D%22module-name%22%60%2C%20and%20ShadyCSS%0AprocessElementStyles(this%2Ctemplate%2Cis%2CbaseURI)%3Bthis.prototype._bindTemplate(template)%3B%7D%7D%7D%2C%7Bkey%3A'_parseTemplateContent'%2Cvalue%3Afunction%20_parseTemplateContent(template%2CtemplateInfo%2CnodeInfo)%7BtemplateInfo.dynamicFns%3DtemplateInfo.dynamicFns%7C%7Cthis._properties%3Breturn%20_get(PolymerElement.__proto__%7C%7CObject.getPrototypeOf(PolymerElement)%2C'_parseTemplateContent'%2Cthis).call(this%2Ctemplate%2CtemplateInfo%2CnodeInfo)%3B%7D%7D%5D)%3Breturn%20PolymerElement%3B%7D(polymerElementBase)%3Breturn%20PolymerElement%3B%7D)%3B%2F**%0A%20%20%20*%20When%20using%20the%20ShadyCSS%20scoping%20and%20custom%20property%20shim%2C%20causes%20all%0A%20%20%20*%20shimmed%20%60styles%60%20(via%20%60custom-style%60)%20in%20the%20document%20(and%20its%20subtree)%0A%20%20%20*%20to%20be%20updated%20based%20on%20current%20custom%20property%20values.%0A%20%20%20*%0A%20%20%20*%20The%20optional%20parameter%20overrides%20inline%20custom%20property%20styles%20with%20an%0A%20%20%20*%20object%20of%20properties%20where%20the%20keys%20are%20CSS%20properties%2C%20and%20the%20values%0A%20%20%20*%20are%20strings.%0A%20%20%20*%0A%20%20%20*%20Example%3A%20%60Polymer.updateStyles(%7B'--color'%3A%20'blue'%7D)%60%0A%20%20%20*%0A%20%20%20*%20These%20properties%20are%20retained%20unless%20a%20value%20of%20%60null%60%20is%20set.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%3D%7D%20props%20Bag%20of%20custom%20property%20key%2Fvalues%20to%0A%20%20%20*%20%20%20apply%20to%20the%20document.%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.updateStyles%3Dfunction(props)%7Bif(window.ShadyCSS)%7Bwindow.ShadyCSS.styleDocument(props)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Felement-mixin.html.js%0A",
            "totalBytes": 30666,
            "wastedBytes": 21056,
            "wastedPercent": 68.66236222526577
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7Dfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F%2F%20Base%20class%20for%20HTMLTemplateElement%20extension%20that%20has%20property%20effects%0A%2F%2F%20machinery%20for%20propagating%20host%20properties%20to%20children.%20This%20is%20an%20ES5%0A%2F%2F%20class%20only%20because%20Babel%20(incorrectly)%20requires%20super()%20in%20the%20class%0A%2F%2F%20constructor%20even%20though%20no%20%60this%60%20is%20used%20and%20it%20returns%20an%20instance.%0Avar%20newInstance%3Dnull%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BHTMLTemplateElement%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20HTMLTemplateElementExtension()%7Breturn%20newInstance%3B%7DHTMLTemplateElementExtension.prototype%3DObject.create(HTMLTemplateElement.prototype%2C%7Bconstructor%3A%7Bvalue%3AHTMLTemplateElementExtension%2Cwritable%3Atrue%7D%7D)%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40extends%20%7BHTMLTemplateElementExtension%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20DataTemplate%3DPolymer.PropertyEffects(HTMLTemplateElementExtension)%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_MutableData%7D%0A%20%20%20%20%20*%20%40extends%20%7BDataTemplate%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20MutableDataTemplate%3DPolymer.MutableData(DataTemplate)%3B%2F%2F%20Applies%20a%20DataTemplate%20subclass%20to%20a%20%3Ctemplate%3E%20instance%0Afunction%20upgradeTemplate(template%2Cconstructor)%7BnewInstance%3Dtemplate%3BObject.setPrototypeOf(template%2Cconstructor.prototype)%3Bnew%20constructor()%3BnewInstance%3Dnull%3B%7D%2F**%0A%20%20%20%20%20*%20Base%20class%20for%20TemplateInstance.%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20base%3DPolymer.PropertyEffects(function()%7Bfunction%20_class()%7B_classCallCheck(this%2C_class)%3B%7Dreturn%20_class%3B%7D())%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40customElement%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.PropertyEffects%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20TemplateInstanceBase%3Dfunction(_base)%7B_inherits(TemplateInstanceBase%2C_base)%3Bfunction%20TemplateInstanceBase(props)%7B_classCallCheck(this%2CTemplateInstanceBase)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(TemplateInstanceBase.__proto__%7C%7CObject.getPrototypeOf(TemplateInstanceBase)).call(this))%3B_this._configureProperties(props)%3B_this.root%3D_this._stampTemplate(_this.__dataHost)%3B%2F%2F%20Save%20list%20of%20stamped%20children%0Avar%20children%3D_this.children%3D%5B%5D%3Bfor(var%20n%3D_this.root.firstChild%3Bn%3Bn%3Dn.nextSibling)%7Bchildren.push(n)%3Bn.__templatizeInstance%3D_this%3B%7Dif(_this.__templatizeOwner%26%26_this.__templatizeOwner.__hideTemplateChildren__)%7B_this._showHideChildren(true)%3B%7D%2F%2F%20Flush%20props%20only%20when%20props%20are%20passed%20if%20instance%20props%20exist%0A%2F%2F%20or%20when%20there%20isn't%20instance%20props.%0Avar%20options%3D_this.__templatizeOptions%3Bif(props%26%26options.instanceProps%7C%7C!options.instanceProps)%7B_this._enableProperties()%3B%7Dreturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Configure%20the%20given%20%60props%60%20by%20calling%20%60_setPendingProperty%60.%20Also%0A%20%20%20%20%20%20%20*%20sets%20any%20properties%20stored%20in%20%60__hostProps%60.%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Object%20of%20property%20name-value%20pairs%20to%20set.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F_createClass(TemplateInstanceBase%2C%5B%7Bkey%3A'_configureProperties'%2Cvalue%3Afunction%20_configureProperties(props)%7Bvar%20options%3Dthis.__templatizeOptions%3Bif(options.forwardHostProp)%7Bfor(var%20hprop%20in%20this.__hostProps)%7Bthis._setPendingProperty(hprop%2Cthis.__dataHost%5B'_host_'%2Bhprop%5D)%3B%7D%7D%2F%2F%20Any%20instance%20props%20passed%20in%20the%20constructor%20will%20overwrite%20host%20props%3B%0A%2F%2F%20normally%20this%20would%20be%20a%20user%20error%20but%20we%20don't%20specifically%20filter%20them%0Afor(var%20iprop%20in%20props)%7Bthis._setPendingProperty(iprop%2Cprops%5Biprop%5D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Forwards%20a%20host%20property%20to%20this%20instance.%20%20This%20method%20should%20be%0A%20%20%20%20%20%20%20*%20called%20on%20instances%20from%20the%20%60options.forwardHostProp%60%20callback%0A%20%20%20%20%20%20%20*%20to%20propagate%20changes%20of%20host%20properties%20to%20each%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20this%20method%20enqueues%20the%20change%2C%20which%20are%20flushed%20as%20a%20batch.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20or%20path%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20the%20property%20to%20forward%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'forwardHostProp'%2Cvalue%3Afunction%20forwardHostProp(prop%2Cvalue)%7Bif(this._setPendingPropertyOrPath(prop%2Cvalue%2Cfalse%2Ctrue))%7Bthis.__dataHost._enqueueClient(this)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20point%20for%20adding%20custom%20or%20simulated%20event%20handling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20event%20listener%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20add%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addEventListenerToNode'%2Cvalue%3Afunction%20_addEventListenerToNode(node%2CeventName%2Chandler)%7Bvar%20_this2%3Dthis%3Bif(this._methodHost%26%26this.__templatizeOptions.parentModel)%7B%2F%2F%20If%20this%20instance%20should%20be%20considered%20a%20parent%20model%2C%20decorate%0A%2F%2F%20events%20this%20template%20instance%20as%20%60model%60%0Athis._methodHost._addEventListenerToNode(node%2CeventName%2Cfunction(e)%7Be.model%3D_this2%3Bhandler(e)%3B%7D)%3B%7Delse%7B%2F%2F%20Otherwise%20delegate%20to%20the%20template's%20host%20(which%20could%20be)%0A%2F%2F%20another%20template%20instance%0Avar%20templateHost%3Dthis.__dataHost.__dataHost%3Bif(templateHost)%7BtemplateHost._addEventListenerToNode(node%2CeventName%2Chandler)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Shows%20or%20hides%20the%20template%20instance%20top%20level%20child%20elements.%20For%0A%20%20%20%20%20%20%20*%20text%20nodes%2C%20%60textContent%60%20is%20removed%20while%20%22hidden%22%20and%20replaced%20when%0A%20%20%20%20%20%20%20*%20%22shown.%22%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hide%20Set%20to%20true%20to%20hide%20the%20children%3B%0A%20%20%20%20%20%20%20*%20set%20to%20false%20to%20show%20them.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_showHideChildren'%2Cvalue%3Afunction%20_showHideChildren(hide)%7Bvar%20c%3Dthis.children%3Bfor(var%20i%3D0%3Bi%3Cc.length%3Bi%2B%2B)%7Bvar%20n%3Dc%5Bi%5D%3B%2F%2F%20Ignore%20non-changes%0Aif(Boolean(hide)!%3DBoolean(n.__hideTemplateChildren__))%7Bif(n.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bif(hide)%7Bn.__polymerTextContent__%3Dn.textContent%3Bn.textContent%3D''%3B%7Delse%7Bn.textContent%3Dn.__polymerTextContent__%3B%7D%2F%2F%20remove%20and%20replace%20slot%0A%7Delse%20if(n.localName%3D%3D%3D'slot')%7Bif(hide)%7Bn.__polymerReplaced__%3Ddocument.createComment('hidden-slot')%3Bn.parentNode.replaceChild(n.__polymerReplaced__%2Cn)%3B%7Delse%7Bvar%20replace%3Dn.__polymerReplaced__%3Bif(replace)%7Breplace.parentNode.replaceChild(n%2Creplace)%3B%7D%7D%7Delse%20if(n.style)%7Bif(hide)%7Bn.__polymerDisplay__%3Dn.style.display%3Bn.style.display%3D'none'%3B%7Delse%7Bn.style.display%3Dn.__polymerDisplay__%3B%7D%7D%7Dn.__hideTemplateChildren__%3Dhide%3Bif(n._showHideChildren)%7Bn._showHideChildren(hide)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20default%20property-effects%20implementation%20to%20intercept%0A%20%20%20%20%20%20%20*%20textContent%20bindings%20while%20children%20are%20%22hidden%22%20and%20cache%20in%0A%20%20%20%20%20%20%20*%20private%20storage%20for%20later%20retrieval.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20The%20node%20to%20set%20a%20property%20on%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20The%20property%20to%20set%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20to%20set%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setUnmanagedPropertyToNode'%2Cvalue%3Afunction%20_setUnmanagedPropertyToNode(node%2Cprop%2Cvalue)%7Bif(node.__hideTemplateChildren__%26%26node.nodeType%3D%3DNode.TEXT_NODE%26%26prop%3D%3D'textContent')%7Bnode.__polymerTextContent__%3Dvalue%3B%7Delse%7B_get(TemplateInstanceBase.prototype.__proto__%7C%7CObject.getPrototypeOf(TemplateInstanceBase.prototype)%2C'_setUnmanagedPropertyToNode'%2Cthis).call(this%2Cnode%2Cprop%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Find%20the%20parent%20model%20of%20this%20template%20instance.%20%20The%20parent%20model%0A%20%20%20%20%20%20%20*%20is%20either%20another%20templatize%20instance%20that%20had%20option%20%60parentModel%3A%20true%60%2C%0A%20%20%20%20%20%20%20*%20or%20else%20the%20host%20element.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7B!Polymer_PropertyEffects%7D%20The%20parent%20model%20of%20this%20instance%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'dispatchEvent'%2C%2F**%0A%20%20%20%20%20%20%20*%20Stub%20of%20HTMLElement's%20%60dispatchEvent%60%2C%20so%20that%20effects%20that%20may%0A%20%20%20%20%20%20%20*%20dispatch%20events%20safely%20no-op.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BEvent%7D%20event%20Event%20to%20dispatch%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Always%20true.%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20dispatchEvent(event)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Areturn%20true%3B%7D%7D%2C%7Bkey%3A'parentModel'%2Cget%3Afunction%20get()%7Bvar%20model%3Dthis.__parentModel%3Bif(!model)%7Bvar%20options%3Dvoid%200%3Bmodel%3Dthis%3Bdo%7B%2F%2F%20A%20template%20instance's%20%60__dataHost%60%20is%20a%20%3Ctemplate%3E%0A%2F%2F%20%60model.__dataHost.__dataHost%60%20is%20the%20template's%20host%0Amodel%3Dmodel.__dataHost.__dataHost%3B%7Dwhile((options%3Dmodel.__templatizeOptions)%26%26!options.parentModel)%3Bthis.__parentModel%3Dmodel%3B%7Dreturn%20model%3B%7D%7D%5D)%3Breturn%20TemplateInstanceBase%3B%7D(base)%3B%2F**%20%40type%20%7B!DataTemplate%7D%20*%2FTemplateInstanceBase.prototype.__dataHost%3B%2F**%20%40type%20%7B!TemplatizeOptions%7D%20*%2FTemplateInstanceBase.prototype.__templatizeOptions%3B%2F**%20%40type%20%7B!Polymer_PropertyEffects%7D%20*%2FTemplateInstanceBase.prototype._methodHost%3B%2F**%20%40type%20%7B!Object%7D%20*%2FTemplateInstanceBase.prototype.__templatizeOwner%3B%2F**%20%40type%20%7B!Object%7D%20*%2FTemplateInstanceBase.prototype.__hostProps%3B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BTemplateInstanceBase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_MutableData%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20MutableTemplateInstanceBase%3DPolymer.MutableData(TemplateInstanceBase)%3Bfunction%20findMethodHost(template)%7B%2F%2F%20Technically%20this%20should%20be%20the%20owner%20of%20the%20outermost%20template.%0A%2F%2F%20In%20shadow%20dom%2C%20this%20is%20always%20getRootNode().host%2C%20but%20we%20can%0A%2F%2F%20approximate%20this%20via%20cooperation%20with%20our%20dataHost%20always%20setting%0A%2F%2F%20%60_methodHost%60%20as%20long%20as%20there%20were%20bindings%20(or%20id's)%20on%20this%0A%2F%2F%20instance%20causing%20it%20to%20get%20a%20dataHost.%0Avar%20templateHost%3Dtemplate.__dataHost%3Breturn%20templateHost%26%26templateHost._methodHost%7C%7CtemplateHost%3B%7D%2F*%20eslint-disable%20valid-jsdoc%20*%2F%2F**%0A%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20class.prototype%20is%20not%20defined%20for%20some%20reason%0A%20%20%20%20%20*%2Ffunction%20createTemplatizerClass(template%2CtemplateInfo%2Coptions)%7B%2F%2F%20Anonymous%20class%20created%20by%20the%20templatize%0Avar%20base%3Doptions.mutableData%3FMutableTemplateInstanceBase%3ATemplateInstanceBase%3B%2F%2F%20Affordance%20for%20global%20mixins%20onto%20TemplatizeInstance%0Aif(Polymer.Templatize.mixin)%7Bbase%3DPolymer.Templatize.mixin(base)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fvar%20klass%3Dfunction(_base2)%7B_inherits(klass%2C_base2)%3Bfunction%20klass()%7B_classCallCheck(this%2Cklass)%3Breturn%20_possibleConstructorReturn(this%2C(klass.__proto__%7C%7CObject.getPrototypeOf(klass)).apply(this%2Carguments))%3B%7Dreturn%20klass%3B%7D(base)%3Bklass.prototype.__templatizeOptions%3Doptions%3Bklass.prototype._bindTemplate(template)%3BaddNotifyEffects(klass%2Ctemplate%2CtemplateInfo%2Coptions)%3Breturn%20klass%3B%7D%2F**%0A%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20class.prototype%20is%20not%20defined%20for%20some%20reason%0A%20%20%20%20%20*%2Ffunction%20addPropagateEffects(template%2CtemplateInfo%2Coptions)%7Bvar%20userForwardHostProp%3Doptions.forwardHostProp%3Bif(userForwardHostProp)%7B%2F%2F%20Provide%20data%20API%20and%20property%20effects%20on%20memoized%20template%20class%0Avar%20klass%3DtemplateInfo.templatizeTemplateClass%3Bif(!klass)%7Bvar%20_base3%3Doptions.mutableData%3FMutableDataTemplate%3ADataTemplate%3B%2F**%20%40private%20*%2Fklass%3DtemplateInfo.templatizeTemplateClass%3Dfunction(_base4)%7B_inherits(TemplatizedTemplate%2C_base4)%3Bfunction%20TemplatizedTemplate()%7B_classCallCheck(this%2CTemplatizedTemplate)%3Breturn%20_possibleConstructorReturn(this%2C(TemplatizedTemplate.__proto__%7C%7CObject.getPrototypeOf(TemplatizedTemplate)).apply(this%2Carguments))%3B%7Dreturn%20TemplatizedTemplate%3B%7D(_base3)%3B%2F%2F%20Add%20template%20-%20%3Einstances%20effects%0A%2F%2F%20and%20host%20%3C-%20template%20effects%0Avar%20hostProps%3DtemplateInfo.hostProps%3Bfor(var%20prop%20in%20hostProps)%7Bklass.prototype._addPropertyEffect('_host_'%2Bprop%2Cklass.prototype.PROPERTY_EFFECT_TYPES.PROPAGATE%2C%7Bfn%3AcreateForwardHostPropEffect(prop%2CuserForwardHostProp)%7D)%3Bklass.prototype._createNotifyingProperty('_host_'%2Bprop)%3B%7D%7DupgradeTemplate(template%2Cklass)%3B%2F%2F%20Mix%20any%20pre-bound%20data%20into%20__data%3B%20no%20need%20to%20flush%20this%20to%0A%2F%2F%20instances%20since%20they%20pull%20from%20the%20template%20at%20instance-time%0Aif(template.__dataProto)%7B%2F%2F%20Note%2C%20generally%20%60__dataProto%60%20could%20be%20chained%2C%20but%20it's%20guaranteed%0A%2F%2F%20to%20not%20be%20since%20this%20is%20a%20vanilla%20template%20we%20just%20added%20effects%20to%0AObject.assign(template.__data%2Ctemplate.__dataProto)%3B%7D%2F%2F%20Clear%20any%20pending%20data%20for%20performance%0Atemplate.__dataTemp%3D%7B%7D%3Btemplate.__dataPending%3Dnull%3Btemplate.__dataOld%3Dnull%3Btemplate._enableProperties()%3B%7D%7D%2F*%20eslint-enable%20valid-jsdoc%20*%2Ffunction%20createForwardHostPropEffect(hostProp%2CuserForwardHostProp)%7Breturn%20function%20forwardHostProp(template%2Cprop%2Cprops)%7BuserForwardHostProp.call(template.__templatizeOwner%2Cprop.substring('_host_'.length)%2Cprops%5Bprop%5D)%3B%7D%3B%7Dfunction%20addNotifyEffects(klass%2Ctemplate%2CtemplateInfo%2Coptions)%7Bvar%20hostProps%3DtemplateInfo.hostProps%7C%7C%7B%7D%3Bfor(var%20iprop%20in%20options.instanceProps)%7Bdelete%20hostProps%5Biprop%5D%3Bvar%20userNotifyInstanceProp%3Doptions.notifyInstanceProp%3Bif(userNotifyInstanceProp)%7Bklass.prototype._addPropertyEffect(iprop%2Cklass.prototype.PROPERTY_EFFECT_TYPES.NOTIFY%2C%7Bfn%3AcreateNotifyInstancePropEffect(iprop%2CuserNotifyInstanceProp)%7D)%3B%7D%7Dif(options.forwardHostProp%26%26template.__dataHost)%7Bfor(var%20hprop%20in%20hostProps)%7Bklass.prototype._addPropertyEffect(hprop%2Cklass.prototype.PROPERTY_EFFECT_TYPES.NOTIFY%2C%7Bfn%3AcreateNotifyHostPropEffect()%7D)%3B%7D%7D%7Dfunction%20createNotifyInstancePropEffect(instProp%2CuserNotifyInstanceProp)%7Breturn%20function%20notifyInstanceProp(inst%2Cprop%2Cprops)%7BuserNotifyInstanceProp.call(inst.__templatizeOwner%2Cinst%2Cprop%2Cprops%5Bprop%5D)%3B%7D%3B%7Dfunction%20createNotifyHostPropEffect()%7Breturn%20function%20notifyHostProp(inst%2Cprop%2Cprops)%7Binst.__dataHost._setPendingPropertyOrPath('_host_'%2Bprop%2Cprops%5Bprop%5D%2Ctrue%2Ctrue)%3B%7D%3B%7D%2F**%0A%20%20%20%20%20*%20Module%20for%20preparing%20and%20stamping%20instances%20of%20templates%20that%20utilize%0A%20%20%20%20%20*%20Polymer's%20data-binding%20and%20declarative%20event%20listener%20features.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Get%20a%20template%20from%20somewhere%2C%20e.g.%20light%20DOM%0A%20%20%20%20%20*%20%20%20%20%20let%20template%20%3D%20this.querySelector('template')%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Prepare%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20let%20TemplateClass%20%3D%20Polymer.Templatize.templatize(template)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Instance%20the%20template%20with%20an%20initial%20data%20model%0A%20%20%20%20%20*%20%20%20%20%20let%20instance%20%3D%20new%20TemplateClass(%7BmyProp%3A%20'initial'%7D)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Insert%20the%20instance's%20DOM%20somewhere%2C%20e.g.%20element's%20shadow%20DOM%0A%20%20%20%20%20*%20%20%20%20%20this.shadowRoot.appendChild(instance.root)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Changing%20a%20property%20on%20the%20instance%20will%20propagate%20to%20bindings%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20in%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20instance.myProp%20%3D%20'new%20value'%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20%60options%60%20dictionary%20passed%20to%20%60templatize%60%20allows%20for%20customizing%0A%20%20%20%20%20*%20features%20of%20the%20generated%20template%20class%2C%20including%20how%20outer-scope%20host%0A%20%20%20%20%20*%20properties%20should%20be%20forwarded%20into%20template%20instances%2C%20how%20any%20instance%0A%20%20%20%20%20*%20properties%20added%20into%20the%20template's%20scope%20should%20be%20notified%20out%20to%0A%20%20%20%20%20*%20the%20host%2C%20and%20whether%20the%20instance%20should%20be%20decorated%20as%20a%20%22parent%20model%22%0A%20%20%20%20%20*%20of%20any%20event%20handlers.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Customize%20property%20forwarding%20and%20event%20model%20decoration%0A%20%20%20%20%20*%20%20%20%20%20let%20TemplateClass%20%3D%20Polymer.Templatize.templatize(template%2C%20this%2C%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20parentModel%3A%20true%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20forwardHostProp(property%2C%20value)%20%7B...%7D%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20instanceProps%3A%20%7B...%7D%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20notifyInstanceProp(instance%2C%20property%2C%20value)%20%7B...%7D%2C%0A%20%20%20%20%20*%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40summary%20Module%20for%20preparing%20and%20stamping%20instances%20of%20templates%0A%20%20%20%20%20*%20%20%20utilizing%20Polymer%20templating%20features.%0A%20%20%20%20%20*%2FPolymer.Templatize%3D%7B%2F**%0A%20%20%20%20%20%20%20*%20Returns%20an%20anonymous%20%60Polymer.PropertyEffects%60%20class%20bound%20to%20the%0A%20%20%20%20%20%20%20*%20%60%3Ctemplate%3E%60%20provided.%20%20Instancing%20the%20class%20will%20result%20in%20the%0A%20%20%20%20%20%20%20*%20template%20being%20stamped%20into%20a%20document%20fragment%20stored%20as%20the%20instance's%0A%20%20%20%20%20%20%20*%20%60root%60%20property%2C%20after%20which%20it%20can%20be%20appended%20to%20the%20DOM.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Templates%20may%20utilize%20all%20Polymer%20data-binding%20features%20as%20well%20as%0A%20%20%20%20%20%20%20*%20declarative%20event%20listeners.%20%20Event%20listeners%20and%20inline%20computing%0A%20%20%20%20%20%20%20*%20functions%20in%20the%20template%20will%20be%20called%20on%20the%20host%20of%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20constructor%20returned%20takes%20a%20single%20argument%20dictionary%20of%20initial%0A%20%20%20%20%20%20%20*%20property%20values%20to%20propagate%20into%20template%20bindings.%20%20Additionally%0A%20%20%20%20%20%20%20*%20host%20properties%20can%20be%20forwarded%20in%2C%20and%20instance%20properties%20can%20be%0A%20%20%20%20%20%20%20*%20notified%20out%20by%20providing%20optional%20callbacks%20in%20the%20%60options%60%20dictionary.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Valid%20configuration%20in%20%60options%60%20are%20as%20follows%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20-%20%60forwardHostProp(property%2C%20value)%60%3A%20Called%20when%20a%20property%20referenced%0A%20%20%20%20%20%20%20*%20%20%20in%20the%20template%20changed%20on%20the%20template's%20host.%20As%20this%20library%20does%0A%20%20%20%20%20%20%20*%20%20%20not%20retain%20references%20to%20templates%20instanced%20by%20the%20user%2C%20it%20is%20the%0A%20%20%20%20%20%20%20*%20%20%20templatize%20owner's%20responsibility%20to%20forward%20host%20property%20changes%20into%0A%20%20%20%20%20%20%20*%20%20%20user-stamped%20instances.%20%20The%20%60instance.forwardHostProp(property%2C%20value)%60%0A%20%20%20%20%20%20%20*%20%20%20%20method%20on%20the%20generated%20class%20should%20be%20called%20to%20forward%20host%0A%20%20%20%20%20%20%20*%20%20%20properties%20into%20the%20template%20to%20prevent%20unnecessary%20property-changed%0A%20%20%20%20%20%20%20*%20%20%20notifications.%20Any%20properties%20referenced%20in%20the%20template%20that%20are%20not%0A%20%20%20%20%20%20%20*%20%20%20defined%20in%20%60instanceProps%60%20will%20be%20notified%20up%20to%20the%20template's%20host%0A%20%20%20%20%20%20%20*%20%20%20automatically.%0A%20%20%20%20%20%20%20*%20-%20%60instanceProps%60%3A%20Dictionary%20of%20property%20names%20that%20will%20be%20added%0A%20%20%20%20%20%20%20*%20%20%20to%20the%20instance%20by%20the%20templatize%20owner.%20%20These%20properties%20shadow%20any%0A%20%20%20%20%20%20%20*%20%20%20host%20properties%2C%20and%20changes%20within%20the%20template%20to%20these%20properties%0A%20%20%20%20%20%20%20*%20%20%20will%20result%20in%20%60notifyInstanceProp%60%20being%20called.%0A%20%20%20%20%20%20%20*%20-%20%60mutableData%60%3A%20When%20%60true%60%2C%20the%20generated%20class%20will%20skip%20strict%0A%20%20%20%20%20%20%20*%20%20%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%0A%20%20%20%20%20%20%20*%20%20%20%22dirty%22).%0A%20%20%20%20%20%20%20*%20-%20%60notifyInstanceProp(instance%2C%20property%2C%20value)%60%3A%20Called%20when%0A%20%20%20%20%20%20%20*%20%20%20an%20instance%20property%20changes.%20%20Users%20may%20choose%20to%20call%20%60notifyPath%60%0A%20%20%20%20%20%20%20*%20%20%20on%20e.g.%20the%20owner%20to%20notify%20the%20change.%0A%20%20%20%20%20%20%20*%20-%20%60parentModel%60%3A%20When%20%60true%60%2C%20events%20handled%20by%20declarative%20event%20listeners%0A%20%20%20%20%20%20%20*%20%20%20(%60on-event%3D%22handler%22%60)%20will%20be%20decorated%20with%20a%20%60model%60%20property%20pointing%0A%20%20%20%20%20%20%20*%20%20%20to%20the%20template%20instance%20that%20stamped%20it.%20%20It%20will%20also%20be%20returned%0A%20%20%20%20%20%20%20*%20%20%20from%20%60instance.parentModel%60%20in%20cases%20where%20template%20instance%20nesting%0A%20%20%20%20%20%20%20*%20%20%20causes%20an%20inner%20model%20to%20shadow%20an%20outer%20model.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20All%20callbacks%20are%20called%20bound%20to%20the%20%60owner%60.%20Any%20context%0A%20%20%20%20%20%20%20*%20needed%20for%20the%20callbacks%20(such%20as%20references%20to%20%60instances%60%20stamped)%0A%20%20%20%20%20%20%20*%20should%20be%20stored%20on%20the%20%60owner%60%20such%20that%20they%20can%20be%20retrieved%20via%0A%20%20%20%20%20%20%20*%20%60this%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20When%20%60options.forwardHostProp%60%20is%20declared%20as%20an%20option%2C%20any%20properties%0A%20%20%20%20%20%20%20*%20referenced%20in%20the%20template%20will%20be%20automatically%20forwarded%20from%20the%20host%20of%0A%20%20%20%20%20%20%20*%20the%20%60%3Ctemplate%3E%60%20to%20instances%2C%20with%20the%20exception%20of%20any%20properties%20listed%20in%0A%20%20%20%20%20%20%20*%20the%20%60options.instanceProps%60%20object.%20%20%60instanceProps%60%20are%20assumed%20to%20be%0A%20%20%20%20%20%20%20*%20managed%20by%20the%20owner%20of%20the%20instances%2C%20either%20passed%20into%20the%20constructor%0A%20%20%20%20%20%20%20*%20or%20set%20after%20the%20fact.%20%20Note%2C%20any%20properties%20passed%20into%20the%20constructor%20will%0A%20%20%20%20%20%20%20*%20always%20be%20set%20to%20the%20instance%20(regardless%20of%20whether%20they%20would%20normally%0A%20%20%20%20%20%20%20*%20be%20forwarded%20from%20the%20host).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20%60templatize()%60%20can%20be%20run%20only%20once%20for%20a%20given%20%60%3Ctemplate%3E%60.%0A%20%20%20%20%20%20%20*%20Further%20calls%20will%20result%20in%20an%20error.%20Also%2C%20there%20is%20a%20special%0A%20%20%20%20%20%20%20*%20behavior%20if%20the%20template%20was%20duplicated%20through%20a%20mechanism%20such%20as%0A%20%20%20%20%20%20%20*%20%60%3Cdom-repeat%3E%60%20or%20%60%3Ctest-fixture%3E%60.%20In%20this%20case%2C%20all%20calls%20to%0A%20%20%20%20%20%20%20*%20%60templatize()%60%20return%20the%20same%20class%20for%20all%20duplicates%20of%20a%20template.%0A%20%20%20%20%20%20%20*%20The%20class%20returned%20from%20%60templatize()%60%20is%20generated%20only%20once%20using%0A%20%20%20%20%20%20%20*%20the%20%60options%60%20from%20the%20first%20call.%20This%20means%20that%20any%20%60options%60%0A%20%20%20%20%20%20%20*%20provided%20to%20subsequent%20calls%20will%20be%20ignored.%20Therefore%2C%20it%20is%20very%0A%20%20%20%20%20%20%20*%20important%20not%20to%20close%20over%20any%20variables%20inside%20the%20callbacks.%20Also%2C%0A%20%20%20%20%20%20%20*%20arrow%20functions%20must%20be%20avoided%20because%20they%20bind%20the%20outer%20%60this%60.%0A%20%20%20%20%20%20%20*%20Inside%20the%20callbacks%2C%20any%20contextual%20information%20can%20be%20accessed%0A%20%20%20%20%20%20%20*%20through%20%60this%60%2C%20which%20points%20to%20the%20%60owner%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Templatize%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20templatize%0A%20%20%20%20%20%20%20*%20%40param%20%7BPolymer_PropertyEffects%3D%7D%20owner%20Owner%20of%20the%20template%20instances%3B%0A%20%20%20%20%20%20%20*%20%20%20any%20optional%20callbacks%20will%20be%20bound%20to%20this%20owner.%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20options%20Options%20dictionary%20(see%20summary%20for%20details)%0A%20%20%20%20%20%20%20*%20%40return%20%7Bfunction(new%3ATemplateInstanceBase)%7D%20Generated%20class%20bound%20to%20the%20template%0A%20%20%20%20%20%20%20*%20%20%20provided%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20%20%20%20%20*%2Ftemplatize%3Afunction%20templatize(template%2Cowner%2Coptions)%7B%2F%2F%20Under%20strictTemplatePolicy%2C%20the%20templatized%20element%20must%20be%20owned%0A%2F%2F%20by%20a%20(trusted)%20Polymer%20element%2C%20indicated%20by%20existence%20of%20_methodHost%3B%0A%2F%2F%20e.g.%20for%20dom-if%20%26%20dom-repeat%20in%20main%20document%2C%20_methodHost%20is%20null%0Aif(Polymer.strictTemplatePolicy%26%26!findMethodHost(template))%7Bthrow%20new%20Error('strictTemplatePolicy%3A%20template%20owner%20not%20trusted')%3B%7Doptions%3D%2F**%20%40type%20%7B!TemplatizeOptions%7D%20*%2Foptions%7C%7C%7B%7D%3Bif(template.__templatizeOwner)%7Bthrow%20new%20Error('A%20%3Ctemplate%3E%20can%20only%20be%20templatized%20once')%3B%7Dtemplate.__templatizeOwner%3Downer%3Bvar%20ctor%3Downer%3Fowner.constructor%3ATemplateInstanceBase%3Bvar%20templateInfo%3Dctor._parseTemplate(template)%3B%2F%2F%20Get%20memoized%20base%20class%20for%20the%20prototypical%20template%2C%20which%0A%2F%2F%20includes%20property%20effects%20for%20binding%20template%20%26%20forwarding%0Avar%20baseClass%3DtemplateInfo.templatizeInstanceClass%3Bif(!baseClass)%7BbaseClass%3DcreateTemplatizerClass(template%2CtemplateInfo%2Coptions)%3BtemplateInfo.templatizeInstanceClass%3DbaseClass%3B%7D%2F%2F%20Host%20property%20forwarding%20must%20be%20installed%20onto%20template%20instance%0AaddPropagateEffects(template%2CtemplateInfo%2Coptions)%3B%2F%2F%20Subclass%20base%20class%20and%20add%20reference%20for%20this%20specific%20template%0A%2F**%20%40private%20*%2Fvar%20klass%3Dfunction(_baseClass)%7B_inherits(TemplateInstance%2C_baseClass)%3Bfunction%20TemplateInstance()%7B_classCallCheck(this%2CTemplateInstance)%3Breturn%20_possibleConstructorReturn(this%2C(TemplateInstance.__proto__%7C%7CObject.getPrototypeOf(TemplateInstance)).apply(this%2Carguments))%3B%7Dreturn%20TemplateInstance%3B%7D(baseClass)%3Bklass.prototype._methodHost%3DfindMethodHost(template)%3Bklass.prototype.__dataHost%3Dtemplate%3Bklass.prototype.__templatizeOwner%3Downer%3Bklass.prototype.__hostProps%3DtemplateInfo.hostProps%3Bklass%3D%2F**%20%40type%20%7Bfunction(new%3ATemplateInstanceBase)%7D%20*%2Fklass%3B%2F%2Feslint-disable-line%20no-self-assign%0Areturn%20klass%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20template%20%22model%22%20associated%20with%20a%20given%20element%2C%20which%0A%20%20%20%20%20%20%20*%20serves%20as%20the%20binding%20scope%20for%20the%20template%20instance%20the%20element%20is%0A%20%20%20%20%20%20%20*%20contained%20in.%20A%20template%20model%20is%20an%20instance%20of%0A%20%20%20%20%20%20%20*%20%60TemplateInstanceBase%60%2C%20and%20should%20be%20used%20to%20manipulate%20data%0A%20%20%20%20%20%20%20*%20associated%20with%20this%20template%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20let%20model%20%3D%20modelForElement(el)%3B%0A%20%20%20%20%20%20%20*%20%20%20if%20(model.index%20%3C%2010)%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20model.set('item.checked'%2C%20true)%3B%0A%20%20%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Templatize%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20template%20The%20model%20will%20be%20returned%20for%0A%20%20%20%20%20%20%20*%20%20%20elements%20stamped%20from%20this%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%3D%7D%20node%20Node%20for%20which%20to%20return%20a%20template%20model.%0A%20%20%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Template%20instance%20representing%20the%0A%20%20%20%20%20%20%20*%20%20%20binding%20scope%20for%20the%20element%0A%20%20%20%20%20%20%20*%2FmodelForElement%3Afunction%20modelForElement(template%2Cnode)%7Bvar%20model%3Dvoid%200%3Bwhile(node)%7B%2F%2F%20An%20element%20with%20a%20__templatizeInstance%20marks%20the%20top%20boundary%0A%2F%2F%20of%20a%20scope%3B%20walk%20up%20until%20we%20find%20one%2C%20and%20then%20ensure%20that%0A%2F%2F%20its%20__dataHost%20matches%20%60this%60%2C%20meaning%20this%20dom-repeat%20stamped%20it%0Aif(model%3Dnode.__templatizeInstance)%7B%2F%2F%20Found%20an%20element%20stamped%20by%20another%20template%3B%20keep%20walking%20up%0A%2F%2F%20from%20its%20__dataHost%0Aif(model.__dataHost!%3Dtemplate)%7Bnode%3Dmodel.__dataHost%3B%7Delse%7Breturn%20model%3B%7D%7Delse%7B%2F%2F%20Still%20in%20a%20template%20scope%2C%20keep%20going%20up%20until%0A%2F%2F%20a%20__templatizeInstance%20is%20found%0Anode%3Dnode.parentNode%3B%7D%7Dreturn%20null%3B%7D%7D%3BPolymer.TemplateInstanceBase%3DTemplateInstanceBase%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Ftemplatize.html.js%0A",
            "totalBytes": 24612,
            "wastedBytes": 14344,
            "wastedPercent": 58.280513570615966
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20TemplateInstanceBase%3DPolymer.TemplateInstanceBase%3B%2F%2F%20eslint-disable-line%0A%2F**%0A%20%20%20*%20%40constructor%0A%20%20%20*%20%40implements%20%7BPolymer_OptionalMutableData%7D%0A%20%20%20*%20%40extends%20%7BPolymer.Element%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Fvar%20domRepeatBase%3DPolymer.OptionalMutableData(Polymer.Element)%3B%2F**%0A%20%20%20*%20The%20%60%3Cdom-repeat%3E%60%20element%20will%20automatically%20stamp%20and%20binds%20one%20instance%0A%20%20%20*%20of%20template%20content%20to%20each%20object%20in%20a%20user-provided%20array.%0A%20%20%20*%20%60dom-repeat%60%20accepts%20an%20%60items%60%20property%2C%20and%20one%20instance%20of%20the%20template%0A%20%20%20*%20is%20stamped%20for%20each%20item%20into%20the%20DOM%20at%20the%20location%20of%20the%20%60dom-repeat%60%0A%20%20%20*%20element.%20%20The%20%60item%60%20property%20will%20be%20set%20on%20each%20instance's%20binding%0A%20%20%20*%20scope%2C%20thus%20templates%20should%20bind%20to%20sub-properties%20of%20%60item%60.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3Cdom-module%20id%3D%22employee-list%22%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3Ctemplate%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdiv%3E%20Employee%20list%3A%20%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%3Cdom-repeat%20items%3D%22%7B%7Bemployees%7D%7D%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Ctemplate%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3EFirst%20name%3A%20%3Cspan%3E%7B%7Bitem.first%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3ELast%20name%3A%20%3Cspan%3E%7B%7Bitem.last%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-repeat%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%0A%20%20%20*%20%3C%2Fdom-module%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20With%20the%20following%20custom%20element%20definition%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60js%0A%20%20%20*%20class%20EmployeeList%20extends%20Polymer.Element%20%7B%0A%20%20%20*%20%20%20static%20get%20is()%20%7B%20return%20'employee-list'%3B%20%7D%0A%20%20%20*%20%20%20static%20get%20properties()%20%7B%0A%20%20%20*%20%20%20%20%20return%20%7B%0A%20%20%20*%20%20%20%20%20%20%20employees%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20value()%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20return%20%5B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Bob'%2C%20last%3A%20'Smith'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Sally'%2C%20last%3A%20'Johnson'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20...%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%20%7D%3B%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20Notifications%20for%20changes%20to%20items%20sub-properties%20will%20be%20forwarded%20to%20template%0A%20%20%20*%20instances%2C%20which%20will%20update%20via%20the%20normal%20structured%20data%20notification%20system.%0A%20%20%20*%0A%20%20%20*%20Mutations%20to%20the%20%60items%60%20array%20itself%20should%20be%20made%20using%20the%20Array%0A%20%20%20*%20mutation%20API's%20on%20%60Polymer.Base%60%20(%60push%60%2C%20%60pop%60%2C%20%60splice%60%2C%20%60shift%60%2C%0A%20%20%20*%20%60unshift%60)%2C%20and%20template%20instances%20will%20be%20kept%20in%20sync%20with%20the%20data%20in%20the%0A%20%20%20*%20array.%0A%20%20%20*%0A%20%20%20*%20Events%20caught%20by%20event%20handlers%20within%20the%20%60dom-repeat%60%20template%20will%20be%0A%20%20%20*%20decorated%20with%20a%20%60model%60%20property%2C%20which%20represents%20the%20binding%20scope%20for%0A%20%20%20*%20each%20template%20instance.%20%20The%20model%20is%20an%20instance%20of%20Polymer.Base%2C%20and%20should%0A%20%20%20*%20be%20used%20to%20manipulate%20data%20on%20the%20instance%2C%20for%20example%0A%20%20%20*%20%60event.model.set('item.checked'%2C%20true)%3B%60.%0A%20%20%20*%0A%20%20%20*%20Alternatively%2C%20the%20model%20for%20a%20template%20instance%20for%20an%20element%20stamped%20by%0A%20%20%20*%20a%20%60dom-repeat%60%20can%20be%20obtained%20using%20the%20%60modelForElement%60%20API%20on%20the%0A%20%20%20*%20%60dom-repeat%60%20that%20stamped%20it%2C%20for%20example%0A%20%20%20*%20%60this.%24.domRepeat.modelForElement(event.target).set('item.checked'%2C%20true)%3B%60.%0A%20%20%20*%20This%20may%20be%20useful%20for%20manipulating%20instance%20data%20of%20event%20targets%20obtained%0A%20%20%20*%20by%20event%20handlers%20on%20parents%20of%20the%20%60dom-repeat%60%20(event%20delegation).%0A%20%20%20*%0A%20%20%20*%20A%20view-specific%20filter%2Fsort%20may%20be%20applied%20to%20each%20%60dom-repeat%60%20by%20supplying%20a%0A%20%20%20*%20%60filter%60%20and%2For%20%60sort%60%20property.%20%20This%20may%20be%20a%20string%20that%20names%20a%20function%20on%0A%20%20%20*%20the%20host%2C%20or%20a%20function%20may%20be%20assigned%20to%20the%20property%20directly.%20%20The%20functions%0A%20%20%20*%20should%20implemented%20following%20the%20standard%20%60Array%60%20filter%2Fsort%20API.%0A%20%20%20*%0A%20%20%20*%20In%20order%20to%20re-run%20the%20filter%20or%20sort%20functions%20based%20on%20changes%20to%20sub-fields%0A%20%20%20*%20of%20%60items%60%2C%20the%20%60observe%60%20property%20may%20be%20set%20as%20a%20space-separated%20list%20of%0A%20%20%20*%20%60item%60%20sub-fields%20that%20should%20cause%20a%20re-filter%2Fsort%20when%20modified.%20%20If%0A%20%20%20*%20the%20filter%20or%20sort%20function%20depends%20on%20properties%20not%20contained%20in%20%60items%60%2C%0A%20%20%20*%20the%20user%20should%20observe%20changes%20to%20those%20properties%20and%20call%20%60render%60%20to%20update%0A%20%20%20*%20the%20view%20based%20on%20the%20dependency%20change.%0A%20%20%20*%0A%20%20%20*%20For%20example%2C%20for%20an%20%60dom-repeat%60%20with%20a%20filter%20of%20the%20following%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60js%0A%20%20%20*%20isEngineer(item)%20%7B%0A%20%20%20*%20%20%20return%20item.type%20%3D%3D%20'engineer'%20%7C%7C%20item.manager.type%20%3D%3D%20'engineer'%3B%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20Then%20the%20%60observe%60%20property%20should%20be%20configured%20as%20follows%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3Cdom-repeat%20items%3D%22%7B%7Bemployees%7D%7D%22%20filter%3D%22isEngineer%22%20observe%3D%22type%20manager.type%22%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40extends%20%7BdomRepeatBase%7D%0A%20%20%20*%20%40appliesMixin%20Polymer.OptionalMutableData%0A%20%20%20*%20%40summary%20Custom%20element%20for%20stamping%20instance%20of%20a%20template%20bound%20to%0A%20%20%20*%20%20%20items%20in%20an%20array.%0A%20%20%20*%2Fvar%20DomRepeat%3Dfunction(_domRepeatBase)%7B_inherits(DomRepeat%2C_domRepeatBase)%3B_createClass(DomRepeat%2Cnull%2C%5B%7Bkey%3A'is'%2C%2F%2F%20Not%20needed%20to%20find%20template%3B%20can%20be%20removed%20once%20the%20analyzer%0A%2F%2F%20can%20find%20the%20tag%20name%20from%20customElements.define%20call%0Aget%3Afunction%20get()%7Breturn'dom-repeat'%3B%7D%7D%2C%7Bkey%3A'template'%2Cget%3Afunction%20get()%7Breturn%20null%3B%7D%7D%2C%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7B%2F**%0A%20%20%20%20%20%20%20*%20Fired%20whenever%20DOM%20is%20added%20or%20removed%20by%20this%20template%20(by%0A%20%20%20%20%20%20%20*%20default%2C%20rendering%20occurs%20lazily).%20%20To%20force%20immediate%20rendering%2C%20call%0A%20%20%20%20%20%20%20*%20%60render%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20dom-change%0A%20%20%20%20%20%20%20*%2Freturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20An%20array%20containing%20items%20determining%20how%20many%20instances%20of%20the%20template%0A%20%20%20%20%20%20%20%20%20*%20to%20stamp%20and%20that%20that%20each%20template%20instance%20should%20bind%20to.%0A%20%20%20%20%20%20%20%20%20*%2Fitems%3A%7Btype%3AArray%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20name%20of%20the%20variable%20to%20add%20to%20the%20binding%20scope%20for%20the%20array%0A%20%20%20%20%20%20%20%20%20*%20element%20associated%20with%20a%20given%20template%20instance.%0A%20%20%20%20%20%20%20%20%20*%2Fas%3A%7Btype%3AString%2Cvalue%3A'item'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20name%20of%20the%20variable%20to%20add%20to%20the%20binding%20scope%20with%20the%20index%0A%20%20%20%20%20%20%20%20%20*%20of%20the%20instance%20in%20the%20sorted%20and%20filtered%20list%20of%20rendered%20items.%0A%20%20%20%20%20%20%20%20%20*%20Note%2C%20for%20the%20index%20in%20the%20%60this.items%60%20array%2C%20use%20the%20value%20of%20the%0A%20%20%20%20%20%20%20%20%20*%20%60itemsIndexAs%60%20property.%0A%20%20%20%20%20%20%20%20%20*%2FindexAs%3A%7Btype%3AString%2Cvalue%3A'index'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20name%20of%20the%20variable%20to%20add%20to%20the%20binding%20scope%20with%20the%20index%0A%20%20%20%20%20%20%20%20%20*%20of%20the%20instance%20in%20the%20%60this.items%60%20array.%20Note%2C%20for%20the%20index%20of%0A%20%20%20%20%20%20%20%20%20*%20this%20instance%20in%20the%20sorted%20and%20filtered%20list%20of%20rendered%20items%2C%0A%20%20%20%20%20%20%20%20%20*%20use%20the%20value%20of%20the%20%60indexAs%60%20property.%0A%20%20%20%20%20%20%20%20%20*%2FitemsIndexAs%3A%7Btype%3AString%2Cvalue%3A'itemsIndex'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20A%20function%20that%20should%20determine%20the%20sort%20order%20of%20the%20items.%20%20This%0A%20%20%20%20%20%20%20%20%20*%20property%20should%20either%20be%20provided%20as%20a%20string%2C%20indicating%20a%20method%0A%20%20%20%20%20%20%20%20%20*%20name%20on%20the%20element's%20host%2C%20or%20else%20be%20an%20actual%20function.%20%20The%0A%20%20%20%20%20%20%20%20%20*%20function%20should%20match%20the%20sort%20function%20passed%20to%20%60Array.sort%60.%0A%20%20%20%20%20%20%20%20%20*%20Using%20a%20sort%20function%20has%20no%20effect%20on%20the%20underlying%20%60items%60%20array.%0A%20%20%20%20%20%20%20%20%20*%2Fsort%3A%7Btype%3AFunction%2Cobserver%3A'__sortChanged'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20A%20function%20that%20can%20be%20used%20to%20filter%20items%20out%20of%20the%20view.%20%20This%0A%20%20%20%20%20%20%20%20%20*%20property%20should%20either%20be%20provided%20as%20a%20string%2C%20indicating%20a%20method%0A%20%20%20%20%20%20%20%20%20*%20name%20on%20the%20element's%20host%2C%20or%20else%20be%20an%20actual%20function.%20%20The%0A%20%20%20%20%20%20%20%20%20*%20function%20should%20match%20the%20sort%20function%20passed%20to%20%60Array.filter%60.%0A%20%20%20%20%20%20%20%20%20*%20Using%20a%20filter%20function%20has%20no%20effect%20on%20the%20underlying%20%60items%60%20array.%0A%20%20%20%20%20%20%20%20%20*%2Ffilter%3A%7Btype%3AFunction%2Cobserver%3A'__filterChanged'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20using%20a%20%60filter%60%20or%20%60sort%60%20function%2C%20the%20%60observe%60%20property%0A%20%20%20%20%20%20%20%20%20*%20should%20be%20set%20to%20a%20space-separated%20list%20of%20the%20names%20of%20item%0A%20%20%20%20%20%20%20%20%20*%20sub-fields%20that%20should%20trigger%20a%20re-sort%20or%20re-filter%20when%20changed.%0A%20%20%20%20%20%20%20%20%20*%20These%20should%20generally%20be%20fields%20of%20%60item%60%20that%20the%20sort%20or%20filter%0A%20%20%20%20%20%20%20%20%20*%20function%20depends%20on.%0A%20%20%20%20%20%20%20%20%20*%2Fobserve%3A%7Btype%3AString%2Cobserver%3A'__observeChanged'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20using%20a%20%60filter%60%20or%20%60sort%60%20function%2C%20the%20%60delay%60%20property%0A%20%20%20%20%20%20%20%20%20*%20determines%20a%20debounce%20time%20in%20ms%20after%20a%20change%20to%20observed%20item%0A%20%20%20%20%20%20%20%20%20*%20properties%20that%20must%20pass%20before%20the%20filter%20or%20sort%20is%20re-run.%0A%20%20%20%20%20%20%20%20%20*%20This%20is%20useful%20in%20rate-limiting%20shuffling%20of%20the%20view%20when%0A%20%20%20%20%20%20%20%20%20*%20item%20changes%20may%20be%20frequent.%0A%20%20%20%20%20%20%20%20%20*%2Fdelay%3ANumber%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Count%20of%20currently%20rendered%20items%20after%20%60filter%60%20(if%20any)%20has%20been%20applied.%0A%20%20%20%20%20%20%20%20%20*%20If%20%22chunking%20mode%22%20is%20enabled%2C%20%60renderedItemCount%60%20is%20updated%20each%20time%20a%0A%20%20%20%20%20%20%20%20%20*%20set%20of%20template%20instances%20is%20rendered.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FrenderedItemCount%3A%7Btype%3ANumber%2Cnotify%3Atrue%2CreadOnly%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20an%20initial%20count%20of%20template%20instances%20to%20render%20after%20setting%0A%20%20%20%20%20%20%20%20%20*%20the%20%60items%60%20array%2C%20before%20the%20next%20paint%2C%20and%20puts%20the%20%60dom-repeat%60%0A%20%20%20%20%20%20%20%20%20*%20into%20%22chunking%20mode%22.%20%20The%20remaining%20items%20will%20be%20created%20and%20rendered%0A%20%20%20%20%20%20%20%20%20*%20incrementally%20at%20each%20animation%20frame%20therof%20until%20all%20instances%20have%0A%20%20%20%20%20%20%20%20%20*%20been%20rendered.%0A%20%20%20%20%20%20%20%20%20*%2FinitialCount%3A%7Btype%3ANumber%2Cobserver%3A'__initializeChunking'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20%60initialCount%60%20is%20used%2C%20this%20property%20defines%20a%20frame%20rate%20(in%0A%20%20%20%20%20%20%20%20%20*%20fps)%20to%20target%20by%20throttling%20the%20number%20of%20instances%20rendered%20each%0A%20%20%20%20%20%20%20%20%20*%20frame%20to%20not%20exceed%20the%20budget%20for%20the%20target%20frame%20rate.%20%20The%0A%20%20%20%20%20%20%20%20%20*%20framerate%20is%20effectively%20the%20number%20of%20%60requestAnimationFrame%60s%20that%0A%20%20%20%20%20%20%20%20%20*%20it%20tries%20to%20allow%20to%20actually%20fire%20in%20a%20given%20second.%20It%20does%20this%0A%20%20%20%20%20%20%20%20%20*%20by%20measuring%20the%20time%20between%20%60rAF%60s%20and%20continuously%20adjusting%20the%0A%20%20%20%20%20%20%20%20%20*%20number%20of%20items%20created%20each%20%60rAF%60%20to%20maintain%20the%20target%20framerate.%0A%20%20%20%20%20%20%20%20%20*%20Setting%20this%20to%20a%20higher%20number%20allows%20lower%20latency%20and%20higher%0A%20%20%20%20%20%20%20%20%20*%20throughput%20for%20event%20handlers%20and%20other%20tasks%2C%20but%20results%20in%20a%0A%20%20%20%20%20%20%20%20%20*%20longer%20time%20for%20the%20remaining%20items%20to%20complete%20rendering.%0A%20%20%20%20%20%20%20%20%20*%2FtargetFramerate%3A%7Btype%3ANumber%2Cvalue%3A20%7D%2C_targetFrameTime%3A%7Btype%3ANumber%2Ccomputed%3A'__computeFrameTime(targetFramerate)'%7D%7D%3B%7D%7D%2C%7Bkey%3A'observers'%2Cget%3Afunction%20get()%7Breturn%5B'__itemsChanged(items.*)'%5D%3B%7D%7D%5D)%3Bfunction%20DomRepeat()%7B_classCallCheck(this%2CDomRepeat)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(DomRepeat.__proto__%7C%7CObject.getPrototypeOf(DomRepeat)).call(this))%3B_this.__instances%3D%5B%5D%3B_this.__limit%3DInfinity%3B_this.__pool%3D%5B%5D%3B_this.__renderDebouncer%3Dnull%3B_this.__itemsIdxToInstIdx%3D%7B%7D%3B_this.__chunkCount%3Dnull%3B_this.__lastChunkTime%3Dnull%3B_this.__sortFn%3Dnull%3B_this.__filterFn%3Dnull%3B_this.__observePaths%3Dnull%3B_this.__ctor%3Dnull%3B_this.__isDetached%3Dtrue%3B_this.template%3Dnull%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_createClass(DomRepeat%2C%5B%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7B_get(DomRepeat.prototype.__proto__%7C%7CObject.getPrototypeOf(DomRepeat.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3Bthis.__isDetached%3Dtrue%3Bfor(var%20i%3D0%3Bi%3Cthis.__instances.length%3Bi%2B%2B)%7Bthis.__detachInstance(i)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7B_get(DomRepeat.prototype.__proto__%7C%7CObject.getPrototypeOf(DomRepeat.prototype)%2C'connectedCallback'%2Cthis).call(this)%3Bthis.style.display%3D'none'%3B%2F%2F%20only%20perform%20attachment%20if%20the%20element%20was%20previously%20detached.%0Aif(this.__isDetached)%7Bthis.__isDetached%3Dfalse%3Bvar%20parent%3Dthis.parentNode%3Bfor(var%20i%3D0%3Bi%3Cthis.__instances.length%3Bi%2B%2B)%7Bthis.__attachInstance(i%2Cparent)%3B%7D%7D%7D%7D%2C%7Bkey%3A'__ensureTemplatized'%2Cvalue%3Afunction%20__ensureTemplatized()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Templatizing%20(generating%20the%20instance%20constructor)%20needs%20to%20wait%0A%2F%2F%20until%20ready%2C%20since%20won't%20have%20its%20template%20content%20handed%20back%20to%0A%2F%2F%20it%20until%20then%0Aif(!this.__ctor)%7Bvar%20template%3Dthis.template%3D%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Fthis.querySelector('template')%3Bif(!template)%7B%2F%2F%20%2F%2F%20Wait%20until%20childList%20changes%20and%20template%20should%20be%20there%20by%20then%0Avar%20observer%3Dnew%20MutationObserver(function()%7Bif(_this2.querySelector('template'))%7Bobserver.disconnect()%3B_this2.__render()%3B%7Delse%7Bthrow%20new%20Error('dom-repeat%20requires%20a%20%3Ctemplate%3E%20child')%3B%7D%7D)%3Bobserver.observe(this%2C%7BchildList%3Atrue%7D)%3Breturn%20false%3B%7D%2F%2F%20Template%20instance%20props%20that%20should%20be%20excluded%20from%20forwarding%0Avar%20instanceProps%3D%7B%7D%3BinstanceProps%5Bthis.as%5D%3Dtrue%3BinstanceProps%5Bthis.indexAs%5D%3Dtrue%3BinstanceProps%5Bthis.itemsIndexAs%5D%3Dtrue%3Bthis.__ctor%3DPolymer.Templatize.templatize(template%2Cthis%2C%7BmutableData%3Athis.mutableData%2CparentModel%3Atrue%2CinstanceProps%3AinstanceProps%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20to%20set%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20property%20to%0A%20%20%20%20%20%20%20%20%20%20%20*%2FforwardHostProp%3Afunction%20forwardHostProp(prop%2Cvalue)%7Bvar%20i%24%3Dthis.__instances%3Bfor(var%20i%3D0%2Cinst%3Bi%3Ci%24.length%26%26(inst%3Di%24%5Bi%5D)%3Bi%2B%2B)%7Binst.forwardHostProp(prop%2Cvalue)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20inst%20Instance%20to%20notify%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20to%20notify%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20notify%0A%20%20%20%20%20%20%20%20%20%20%20*%2FnotifyInstanceProp%3Afunction%20notifyInstanceProp(inst%2Cprop%2Cvalue)%7Bif(Polymer.Path.matches(this.as%2Cprop))%7Bvar%20idx%3Dinst%5Bthis.itemsIndexAs%5D%3Bif(prop%3D%3Dthis.as)%7Bthis.items%5Bidx%5D%3Dvalue%3B%7Dvar%20path%3DPolymer.Path.translate(this.as%2C'items.'%2Bidx%2Cprop)%3Bthis.notifyPath(path%2Cvalue)%3B%7D%7D%7D)%3B%7Dreturn%20true%3B%7D%7D%2C%7Bkey%3A'__getMethodHost'%2Cvalue%3Afunction%20__getMethodHost()%7B%2F%2F%20Technically%20this%20should%20be%20the%20owner%20of%20the%20outermost%20template.%0A%2F%2F%20In%20shadow%20dom%2C%20this%20is%20always%20getRootNode().host%2C%20but%20we%20can%0A%2F%2F%20approximate%20this%20via%20cooperation%20with%20our%20dataHost%20always%20setting%0A%2F%2F%20%60_methodHost%60%20as%20long%20as%20there%20were%20bindings%20(or%20id's)%20on%20this%0A%2F%2F%20instance%20causing%20it%20to%20get%20a%20dataHost.%0Areturn%20this.__dataHost._methodHost%7C%7Cthis.__dataHost%3B%7D%7D%2C%7Bkey%3A'__functionFromPropertyValue'%2Cvalue%3Afunction%20__functionFromPropertyValue(functionOrMethodName)%7Bif(typeof%20functionOrMethodName%3D%3D%3D'string')%7Bvar%20methodName%3DfunctionOrMethodName%3Bvar%20obj%3Dthis.__getMethodHost()%3Breturn%20function()%7Breturn%20obj%5BmethodName%5D.apply(obj%2Carguments)%3B%7D%3B%7Dreturn%20functionOrMethodName%3B%7D%7D%2C%7Bkey%3A'__sortChanged'%2Cvalue%3Afunction%20__sortChanged(sort)%7Bthis.__sortFn%3Dthis.__functionFromPropertyValue(sort)%3Bif(this.items)%7Bthis.__debounceRender(this.__render)%3B%7D%7D%7D%2C%7Bkey%3A'__filterChanged'%2Cvalue%3Afunction%20__filterChanged(filter)%7Bthis.__filterFn%3Dthis.__functionFromPropertyValue(filter)%3Bif(this.items)%7Bthis.__debounceRender(this.__render)%3B%7D%7D%7D%2C%7Bkey%3A'__computeFrameTime'%2Cvalue%3Afunction%20__computeFrameTime(rate)%7Breturn%20Math.ceil(1000%2Frate)%3B%7D%7D%2C%7Bkey%3A'__initializeChunking'%2Cvalue%3Afunction%20__initializeChunking()%7Bif(this.initialCount)%7Bthis.__limit%3Dthis.initialCount%3Bthis.__chunkCount%3Dthis.initialCount%3Bthis.__lastChunkTime%3Dperformance.now()%3B%7D%7D%7D%2C%7Bkey%3A'__tryRenderChunk'%2Cvalue%3Afunction%20__tryRenderChunk()%7B%2F%2F%20Debounced%20so%20that%20multiple%20calls%20through%20%60_render%60%20between%20animation%0A%2F%2F%20frames%20only%20queue%20one%20new%20rAF%20(e.g.%20array%20mutation%20%26%20chunked%20render)%0Aif(this.items%26%26this.__limit%3Cthis.items.length)%7Bthis.__debounceRender(this.__requestRenderChunk)%3B%7D%7D%7D%2C%7Bkey%3A'__requestRenderChunk'%2Cvalue%3Afunction%20__requestRenderChunk()%7Bvar%20_this3%3Dthis%3BrequestAnimationFrame(function()%7Breturn%20_this3.__renderChunk()%3B%7D)%3B%7D%7D%2C%7Bkey%3A'__renderChunk'%2Cvalue%3Afunction%20__renderChunk()%7B%2F%2F%20Simple%20auto%20chunkSize%20throttling%20algorithm%20based%20on%20feedback%20loop%3A%0A%2F%2F%20measure%20actual%20time%20between%20frames%20and%20scale%20chunk%20count%20by%20ratio%0A%2F%2F%20of%20target%2Factual%20frame%20time%0Avar%20currChunkTime%3Dperformance.now()%3Bvar%20ratio%3Dthis._targetFrameTime%2F(currChunkTime-this.__lastChunkTime)%3Bthis.__chunkCount%3DMath.round(this.__chunkCount*ratio)%7C%7C1%3Bthis.__limit%2B%3Dthis.__chunkCount%3Bthis.__lastChunkTime%3DcurrChunkTime%3Bthis.__debounceRender(this.__render)%3B%7D%7D%2C%7Bkey%3A'__observeChanged'%2Cvalue%3Afunction%20__observeChanged()%7Bthis.__observePaths%3Dthis.observe%26%26this.observe.replace('.*'%2C'.').split('%20')%3B%7D%7D%2C%7Bkey%3A'__itemsChanged'%2Cvalue%3Afunction%20__itemsChanged(change)%7Bif(this.items%26%26!Array.isArray(this.items))%7Bconsole.warn('dom-repeat%20expected%20array%20for%20%60items%60%2C%20found'%2Cthis.items)%3B%7D%2F%2F%20If%20path%20was%20to%20an%20item%20(e.g.%20'items.3'%20or%20'items.3.foo')%2C%20forward%20the%0A%2F%2F%20path%20to%20that%20instance%20synchronously%20(returns%20false%20for%20non-item%20paths)%0Aif(!this.__handleItemPath(change.path%2Cchange.value))%7B%2F%2F%20Otherwise%2C%20the%20array%20was%20reset%20('items')%20or%20spliced%20('items.splices')%2C%0A%2F%2F%20so%20queue%20a%20full%20refresh%0Athis.__initializeChunking()%3Bthis.__debounceRender(this.__render)%3B%7D%7D%7D%2C%7Bkey%3A'__handleObservedPaths'%2Cvalue%3Afunction%20__handleObservedPaths(path)%7B%2F%2F%20Handle%20cases%20where%20path%20changes%20should%20cause%20a%20re-sort%2Ffilter%0Aif(this.__sortFn%7C%7Cthis.__filterFn)%7Bif(!path)%7B%2F%2F%20Always%20re-render%20if%20the%20item%20itself%20changed%0Athis.__debounceRender(this.__render%2Cthis.delay)%3B%7Delse%20if(this.__observePaths)%7B%2F%2F%20Otherwise%2C%20re-render%20if%20the%20path%20changed%20matches%20an%20observed%20path%0Avar%20paths%3Dthis.__observePaths%3Bfor(var%20i%3D0%3Bi%3Cpaths.length%3Bi%2B%2B)%7Bif(path.indexOf(paths%5Bi%5D)%3D%3D%3D0)%7Bthis.__debounceRender(this.__render%2Cthis.delay)%3B%7D%7D%7D%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7Bfunction(this%3ADomRepeat)%7D%20fn%20Function%20to%20debounce.%0A%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20delay%20Delay%20in%20ms%20to%20debounce%20by.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'__debounceRender'%2Cvalue%3Afunction%20__debounceRender(fn)%7Bvar%20delay%3Darguments.length%3E1%26%26arguments%5B1%5D!%3D%3Dundefined%3Farguments%5B1%5D%3A0%3Bthis.__renderDebouncer%3DPolymer.Debouncer.debounce(this.__renderDebouncer%2Cdelay%3E0%3FPolymer.Async.timeOut.after(delay)%3APolymer.Async.microTask%2Cfn.bind(this))%3BPolymer.enqueueDebouncer(this.__renderDebouncer)%3B%7D%2F**%0A%20%20%20%20%20*%20Forces%20the%20element%20to%20render%20its%20content.%20Normally%20rendering%20is%0A%20%20%20%20%20*%20asynchronous%20to%20a%20provoking%20change.%20This%20is%20done%20for%20efficiency%20so%0A%20%20%20%20%20*%20that%20multiple%20changes%20trigger%20only%20a%20single%20render.%20The%20render%20method%0A%20%20%20%20%20*%20should%20be%20called%20if%2C%20for%20example%2C%20template%20rendering%20is%20required%20to%0A%20%20%20%20%20*%20validate%20application%20state.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'render'%2Cvalue%3Afunction%20render()%7B%2F%2F%20Queue%20this%20repeater%2C%20then%20flush%20all%20in%20order%0Athis.__debounceRender(this.__render)%3BPolymer.flush()%3B%7D%7D%2C%7Bkey%3A'__render'%2Cvalue%3Afunction%20__render()%7Bif(!this.__ensureTemplatized())%7B%2F%2F%20No%20template%20found%20yet%0Areturn%3B%7Dthis.__applyFullRefresh()%3B%2F%2F%20Reset%20the%20pool%0A%2F%2F%20TODO(kschaaf)%3A%20Reuse%20pool%20across%20turns%20and%20nested%20templates%0A%2F%2F%20Now%20that%20objects%2Farrays%20are%20re-evaluated%20when%20set%2C%20we%20can%20safely%0A%2F%2F%20reuse%20pooled%20instances%20across%20turns%2C%20however%20we%20still%20need%20to%20decide%0A%2F%2F%20semantics%20regarding%20how%20long%20to%20hold%2C%20how%20many%20to%20hold%2C%20etc.%0Athis.__pool.length%3D0%3B%2F%2F%20Set%20rendered%20item%20count%0Athis._setRenderedItemCount(this.__instances.length)%3B%2F%2F%20Notify%20users%0Athis.dispatchEvent(new%20CustomEvent('dom-change'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3B%2F%2F%20Check%20to%20see%20if%20we%20need%20to%20render%20more%20items%0Athis.__tryRenderChunk()%3B%7D%7D%2C%7Bkey%3A'__applyFullRefresh'%2Cvalue%3Afunction%20__applyFullRefresh()%7Bvar%20_this4%3Dthis%3Bvar%20items%3Dthis.items%7C%7C%5B%5D%3Bvar%20isntIdxToItemsIdx%3Dnew%20Array(items.length)%3Bfor(var%20i%3D0%3Bi%3Citems.length%3Bi%2B%2B)%7BisntIdxToItemsIdx%5Bi%5D%3Di%3B%7D%2F%2F%20Apply%20user%20filter%0Aif(this.__filterFn)%7BisntIdxToItemsIdx%3DisntIdxToItemsIdx.filter(function(i%2Cidx%2Carray)%7Breturn%20_this4.__filterFn(items%5Bi%5D%2Cidx%2Carray)%3B%7D)%3B%7D%2F%2F%20Apply%20user%20sort%0Aif(this.__sortFn)%7BisntIdxToItemsIdx.sort(function(a%2Cb)%7Breturn%20_this4.__sortFn(items%5Ba%5D%2Citems%5Bb%5D)%3B%7D)%3B%7D%2F%2F%20items-%3Einst%20map%20kept%20for%20item%20path%20forwarding%0Avar%20itemsIdxToInstIdx%3Dthis.__itemsIdxToInstIdx%3D%7B%7D%3Bvar%20instIdx%3D0%3B%2F%2F%20Generate%20instances%20and%20assign%20items%0Avar%20limit%3DMath.min(isntIdxToItemsIdx.length%2Cthis.__limit)%3Bfor(%3BinstIdx%3Climit%3BinstIdx%2B%2B)%7Bvar%20inst%3Dthis.__instances%5BinstIdx%5D%3Bvar%20itemIdx%3DisntIdxToItemsIdx%5BinstIdx%5D%3Bvar%20item%3Ditems%5BitemIdx%5D%3BitemsIdxToInstIdx%5BitemIdx%5D%3DinstIdx%3Bif(inst)%7Binst._setPendingProperty(this.as%2Citem)%3Binst._setPendingProperty(this.indexAs%2CinstIdx)%3Binst._setPendingProperty(this.itemsIndexAs%2CitemIdx)%3Binst._flushProperties()%3B%7Delse%7Bthis.__insertInstance(item%2CinstIdx%2CitemIdx)%3B%7D%7D%2F%2F%20Remove%20any%20extra%20instances%20from%20previous%20state%0Afor(var%20_i%3Dthis.__instances.length-1%3B_i%3E%3DinstIdx%3B_i--)%7Bthis.__detachAndRemoveInstance(_i)%3B%7D%7D%7D%2C%7Bkey%3A'__detachInstance'%2Cvalue%3Afunction%20__detachInstance(idx)%7Bvar%20inst%3Dthis.__instances%5Bidx%5D%3Bfor(var%20i%3D0%3Bi%3Cinst.children.length%3Bi%2B%2B)%7Bvar%20el%3Dinst.children%5Bi%5D%3Binst.root.appendChild(el)%3B%7Dreturn%20inst%3B%7D%7D%2C%7Bkey%3A'__attachInstance'%2Cvalue%3Afunction%20__attachInstance(idx%2Cparent)%7Bvar%20inst%3Dthis.__instances%5Bidx%5D%3Bparent.insertBefore(inst.root%2Cthis)%3B%7D%7D%2C%7Bkey%3A'__detachAndRemoveInstance'%2Cvalue%3Afunction%20__detachAndRemoveInstance(idx)%7Bvar%20inst%3Dthis.__detachInstance(idx)%3Bif(inst)%7Bthis.__pool.push(inst)%3B%7Dthis.__instances.splice(idx%2C1)%3B%7D%7D%2C%7Bkey%3A'__stampInstance'%2Cvalue%3Afunction%20__stampInstance(item%2CinstIdx%2CitemIdx)%7Bvar%20model%3D%7B%7D%3Bmodel%5Bthis.as%5D%3Ditem%3Bmodel%5Bthis.indexAs%5D%3DinstIdx%3Bmodel%5Bthis.itemsIndexAs%5D%3DitemIdx%3Breturn%20new%20this.__ctor(model)%3B%7D%7D%2C%7Bkey%3A'__insertInstance'%2Cvalue%3Afunction%20__insertInstance(item%2CinstIdx%2CitemIdx)%7Bvar%20inst%3Dthis.__pool.pop()%3Bif(inst)%7B%2F%2F%20TODO(kschaaf)%3A%20If%20the%20pool%20is%20shared%20across%20turns%2C%20hostProps%0A%2F%2F%20need%20to%20be%20re-set%20to%20reused%20instances%20in%20addition%20to%20item%0Ainst._setPendingProperty(this.as%2Citem)%3Binst._setPendingProperty(this.indexAs%2CinstIdx)%3Binst._setPendingProperty(this.itemsIndexAs%2CitemIdx)%3Binst._flushProperties()%3B%7Delse%7Binst%3Dthis.__stampInstance(item%2CinstIdx%2CitemIdx)%3B%7Dvar%20beforeRow%3Dthis.__instances%5BinstIdx%2B1%5D%3Bvar%20beforeNode%3DbeforeRow%3FbeforeRow.children%5B0%5D%3Athis%3Bthis.parentNode.insertBefore(inst.root%2CbeforeNode)%3Bthis.__instances%5BinstIdx%5D%3Dinst%3Breturn%20inst%3B%7D%2F%2F%20Implements%20extension%20point%20from%20Templatize%20mixin%0A%2F**%0A%20%20%20%20%20*%20Shows%20or%20hides%20the%20template%20instance%20top%20level%20child%20elements.%20For%0A%20%20%20%20%20*%20text%20nodes%2C%20%60textContent%60%20is%20removed%20while%20%22hidden%22%20and%20replaced%20when%0A%20%20%20%20%20*%20%22shown.%22%0A%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hidden%20Set%20to%20true%20to%20hide%20the%20children%3B%0A%20%20%20%20%20*%20set%20to%20false%20to%20show%20them.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_showHideChildren'%2Cvalue%3Afunction%20_showHideChildren(hidden)%7Bfor(var%20i%3D0%3Bi%3Cthis.__instances.length%3Bi%2B%2B)%7Bthis.__instances%5Bi%5D._showHideChildren(hidden)%3B%7D%7D%2F%2F%20Called%20as%20a%20side%20effect%20of%20a%20host%20items.%3Ckey%3E.%3Cpath%3E%20path%20change%2C%0A%2F%2F%20responsible%20for%20notifying%20item.%3Cpath%3E%20changes%20to%20inst%20for%20key%0A%7D%2C%7Bkey%3A'__handleItemPath'%2Cvalue%3Afunction%20__handleItemPath(path%2Cvalue)%7Bvar%20itemsPath%3Dpath.slice(6)%3B%2F%2F%20'items.'.length%20%3D%3D%206%0Avar%20dot%3DitemsPath.indexOf('.')%3Bvar%20itemsIdx%3Ddot%3C0%3FitemsPath%3AitemsPath.substring(0%2Cdot)%3B%2F%2F%20If%20path%20was%20index%20into%20array...%0Aif(itemsIdx%3D%3DparseInt(itemsIdx%2C10))%7Bvar%20itemSubPath%3Ddot%3C0%3F''%3AitemsPath.substring(dot%2B1)%3B%2F%2F%20If%20the%20path%20is%20observed%2C%20it%20will%20trigger%20a%20full%20refresh%0Athis.__handleObservedPaths(itemSubPath)%3B%2F%2F%20Note%2C%20even%20if%20a%20rull%20refresh%20is%20triggered%2C%20always%20do%20the%20path%0A%2F%2F%20notification%20because%20unless%20mutableData%20is%20used%20for%20dom-repeat%0A%2F%2F%20and%20all%20elements%20in%20the%20instance%20subtree%2C%20a%20full%20refresh%20may%0A%2F%2F%20not%20trigger%20the%20proper%20update.%0Avar%20instIdx%3Dthis.__itemsIdxToInstIdx%5BitemsIdx%5D%3Bvar%20inst%3Dthis.__instances%5BinstIdx%5D%3Bif(inst)%7Bvar%20itemPath%3Dthis.as%2B(itemSubPath%3F'.'%2BitemSubPath%3A'')%3B%2F%2F%20This%20is%20effectively%20%60notifyPath%60%2C%20but%20avoids%20some%20of%20the%20overhead%0A%2F%2F%20of%20the%20public%20API%0Ainst._setPendingPropertyOrPath(itemPath%2Cvalue%2Cfalse%2Ctrue)%3Binst._flushProperties()%3B%7Dreturn%20true%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20item%20associated%20with%20a%20given%20element%20stamped%20by%0A%20%20%20%20%20*%20this%20%60dom-repeat%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%2C%20to%20modify%20sub-properties%20of%20the%20item%2C%0A%20%20%20%20%20*%20%60modelForElement(el).set('item.%3Csub-prop%3E'%2C%20value)%60%0A%20%20%20%20%20*%20should%20be%20used.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20el%20Element%20for%20which%20to%20return%20the%20item.%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20associated%20with%20the%20element.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'itemForElement'%2Cvalue%3Afunction%20itemForElement(el)%7Bvar%20instance%3Dthis.modelForElement(el)%3Breturn%20instance%26%26instance%5Bthis.as%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20inst%20index%20for%20a%20given%20element%20stamped%20by%20this%20%60dom-repeat%60.%0A%20%20%20%20%20*%20If%20%60sort%60%20is%20provided%2C%20the%20index%20will%20reflect%20the%20sorted%20order%20(rather%0A%20%20%20%20%20*%20than%20the%20original%20array%20order).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20el%20Element%20for%20which%20to%20return%20the%20index.%0A%20%20%20%20%20*%20%40return%20%7B%3Fnumber%7D%20Row%20index%20associated%20with%20the%20element%20(note%20this%20may%0A%20%20%20%20%20*%20%20%20not%20correspond%20to%20the%20array%20index%20if%20a%20user%20%60sort%60%20is%20applied).%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'indexForElement'%2Cvalue%3Afunction%20indexForElement(el)%7Bvar%20instance%3Dthis.modelForElement(el)%3Breturn%20instance%26%26instance%5Bthis.indexAs%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20template%20%22model%22%20associated%20with%20a%20given%20element%2C%20which%0A%20%20%20%20%20*%20serves%20as%20the%20binding%20scope%20for%20the%20template%20instance%20the%20element%20is%0A%20%20%20%20%20*%20contained%20in.%20A%20template%20model%20is%20an%20instance%20of%20%60Polymer.Base%60%2C%20and%0A%20%20%20%20%20*%20should%20be%20used%20to%20manipulate%20data%20associated%20with%20this%20template%20instance.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20let%20model%20%3D%20modelForElement(el)%3B%0A%20%20%20%20%20*%20%20%20if%20(model.index%20%3C%2010)%20%7B%0A%20%20%20%20%20*%20%20%20%20%20model.set('item.checked'%2C%20true)%3B%0A%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20el%20Element%20for%20which%20to%20return%20a%20template%20model.%0A%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Model%20representing%20the%20binding%20scope%20for%0A%20%20%20%20%20*%20%20%20the%20element.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'modelForElement'%2Cvalue%3Afunction%20modelForElement(el)%7Breturn%20Polymer.Templatize.modelForElement(this.template%2Cel)%3B%7D%7D%5D)%3Breturn%20DomRepeat%3B%7D(domRepeatBase)%3BcustomElements.define(DomRepeat.is%2CDomRepeat)%3B%2F**%20%40const%20*%2FPolymer.DomRepeat%3DDomRepeat%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-repeat.html.js%0A",
            "totalBytes": 25690,
            "wastedBytes": 14164,
            "wastedPercent": 55.13429349941612
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20%2F%2F%20Generate%20unique%2C%20monotonically%20increasing%20IDs%20for%20labels%20(needed%20by%0A%20%20%2F%2F%20aria-labelledby)%20and%20add-ons.%0A%20%20Polymer.PaperInputHelper%20%3D%20%7B%7D%3B%0A%20%20Polymer.PaperInputHelper.NextLabelID%20%3D%201%3B%0A%20%20Polymer.PaperInputHelper.NextAddonID%20%3D%201%3B%0A%20%20Polymer.PaperInputHelper.NextInputID%20%3D%201%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Use%20%60Polymer.PaperInputBehavior%60%20to%20implement%20inputs%20with%20%60%3Cpaper-input-container%3E%60.%20This%0A%20%20%20*%20behavior%20is%20implemented%20by%20%60%3Cpaper-input%3E%60.%20It%20exposes%20a%20number%20of%20properties%20from%0A%20%20%20*%20%60%3Cpaper-input-container%3E%60%20and%20%60%3Cinput%20is%3D%22iron-input%22%3E%60%20and%20they%20should%20be%20bound%20in%20your%0A%20%20%20*%20template.%0A%20%20%20*%0A%20%20%20*%20The%20input%20element%20can%20be%20accessed%20by%20the%20%60inputElement%60%20property%20if%20you%20need%20to%20access%0A%20%20%20*%20properties%20or%20methods%20that%20are%20not%20exposed.%0A%20%20%20*%20%40polymerBehavior%20Polymer.PaperInputBehavior%0A%20%20%20*%2F%0A%20%20Polymer.PaperInputBehaviorImpl%20%3D%20%7B%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Fired%20when%20the%20input%20changes%20due%20to%20user%20interaction.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20change%0A%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20label%20for%20this%20input.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20%60%3Clabel%3E%60's%20content%20and%20%60hidden%60%20property%2C%20e.g.%0A%20%20%20%20%20%20%20*%20%60%3Clabel%20hidden%24%3D%22%5B%5B!label%5D%5D%22%3E%5B%5Blabel%5D%5D%3C%2Flabel%3E%60%20in%20your%20%60template%60%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20label%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20value%20for%20this%20input.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Ciron-input%3E%60's%20%60bindValue%60%0A%20%20%20%20%20%20%20*%20property%2C%20or%20the%20value%20property%20of%20your%20input%20that%20is%20%60notify%3Atrue%60.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20disable%20this%20input.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20both%20the%20%60%3Cpaper-input-container%3E%60's%20and%20the%20input's%20%60disabled%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20disabled%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20value%20is%20invalid.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%20both%20the%0A%20%20%20%20%20%20%20*%20%60%3Cpaper-input-container%3E%60's%20and%20the%20input's%20%60invalid%60%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20%60autoValidate%60%20is%20true%2C%20the%20%60invalid%60%20attribute%20is%20managed%20automatically%2C%0A%20%20%20%20%20%20%20*%20which%20can%20clobber%20attempts%20to%20manage%20it%20manually.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20this%20to%20specify%20the%20pattern%20allowed%20by%20%60preventInvalidInput%60.%20If%0A%20%20%20%20%20%20%20*%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60allowedPattern%60%0A%20%20%20%20%20%20%20*%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20allowedPattern%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20type%20of%20the%20input.%20The%20supported%20types%20are%20the%0A%20%20%20%20%20%20%20*%20%5Bnative%20input's%20types%5D(https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FHTML%2FElement%2Finput%23Form_%3Cinput%3E_types).%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%20element%2C%0A%20%20%20%20%20%20%20*%20bind%20this%20to%20the%20(Polymer%201)%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20or%20(Polymer%202)%0A%20%20%20%20%20%20%20*%20%60%3Ciron-input%3E%60's%20%60type%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20type%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20datalist%20of%20the%20input%20(if%20any).%20This%20should%20match%20the%20id%20of%20an%20existing%20%60%3Cdatalist%3E%60.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60list%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20list%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20pattern%20to%20validate%20the%20%60input%60%20with.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60pattern%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20pattern%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20mark%20the%20input%20as%20required.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60required%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20required%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20error%20message%20to%20display%20when%20the%20input%20is%20invalid.%20If%20you're%20using%0A%20%20%20%20%20%20%20*%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%20element%2C%0A%20%20%20%20%20%20%20*%20bind%20this%20to%20the%20%60%3Cpaper-input-error%3E%60's%20content%2C%20if%20using.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20errorMessage%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20show%20a%20character%20counter.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20charCounter%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20disable%20the%20floating%20label.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cpaper-input-container%3E%60's%20%60noLabelFloat%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20noLabelFloat%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20always%20float%20the%20label.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cpaper-input-container%3E%60's%20%60alwaysFloatLabel%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20alwaysFloatLabel%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20auto-validate%20the%20input%20value.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cpaper-input-container%3E%60's%20%60autoValidate%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autoValidate%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Name%20of%20the%20validator%20to%20use.%20If%20you're%20using%20PaperInputBehavior%20to%0A%20%20%20%20%20%20%20*%20implement%20your%20own%20paper-input-like%20element%2C%20bind%20this%20to%0A%20%20%20%20%20%20%20*%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60validator%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20validator%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20HTMLInputElement%20attributes%20for%20binding%20if%20needed%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autocomplete%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autocomplete%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'off'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autofocus%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autofocus%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_autofocusChanged'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60inputmode%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20inputmode%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20minimum%20length%20of%20the%20input%20value.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60minlength%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20minlength%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20maximum%20length%20of%20the%20input%20value.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60maxlength%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20maxlength%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20minimum%20(numeric%20or%20date-time)%20input%20value.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60min%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20min%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20maximum%20(numeric%20or%20date-time)%20input%20value.%0A%20%20%20%20%20%20%20*%20Can%20be%20a%20String%20(e.g.%20%60%222000-01-01%22%60)%20or%20a%20Number%20(e.g.%20%602%60).%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60max%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20max%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Limits%20the%20numeric%20or%20date-time%20increments.%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60step%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20step%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60name%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20name%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20placeholder%20string%20in%20addition%20to%20the%20label.%20If%20this%20is%20set%2C%20the%20label%20will%20always%20float.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20placeholder%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20need%20to%20set%20a%20default%20so%20_computeAlwaysFloatLabel%20is%20run%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60readonly%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20readonly%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60size%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20size%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20Nonstandard%20attributes%20for%20binding%20if%20needed%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autocapitalize%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autocapitalize%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'none'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autocorrect%60%20property.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autocorrect%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'off'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60autosave%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dsearch.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autosave%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60results%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dsearch.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20results%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%20%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60accept%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dfile.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20accept%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20you're%20using%20PaperInputBehavior%20to%20implement%20your%20own%20paper-input-like%0A%20%20%20%20%20%20%20*%20element%2C%20bind%20this%20to%20the%60%3Cinput%20is%3D%22iron-input%22%3E%60's%20%60multiple%60%20property%2C%0A%20%20%20%20%20%20%20*%20used%20with%20type%3Dfile.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20multiple%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_ariaDescribedBy%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_ariaLabelledBy%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_inputId%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20'addon-attached'%3A%20'_onAddonAttached'%2C%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20keyBindings%3A%20%7B%0A%20%20%20%20%20%20'shift%2Btab%3Akeydown'%3A%20'_onShiftTabDown'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20tabindex%3A%200%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20a%20reference%20to%20the%20input%20element.%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20inputElement()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Chrome%20generates%20audit%20errors%20if%20an%20%3Cinput%20type%3D%22password%22%3E%20has%20a%0A%20%20%20%20%20%20%2F%2F%20duplicate%20ID%2C%20which%20is%20almost%20always%20true%20in%20Shady%20DOM.%20Generate%0A%20%20%20%20%20%20%2F%2F%20a%20unique%20ID%20instead.%0A%20%20%20%20%20%20if%20(!this.%24)%20%7B%0A%20%20%20%20%20%20%20%20this.%24%20%3D%20%7B%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(!this.%24.input)%20%7B%0A%20%20%20%20%20%20%20%20this._generateInputId()%3B%0A%20%20%20%20%20%20%20%20this.%24.input%20%3D%20this.%24%24('%23'%20%2B%20this._inputId)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20this.%24.input%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20a%20reference%20to%20the%20focusable%20element.%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20_focusableElement()%20%7B%0A%20%20%20%20%20%20return%20this.inputElement%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20These%20types%20have%20some%20default%20placeholder%20text%3B%20overlapping%0A%20%20%20%20%20%20%2F%2F%20the%20label%20on%20top%20of%20it%20looks%20terrible.%20Auto-float%20the%20label%20in%20this%20case.%0A%20%20%20%20%20%20this._typesThatHaveText%20%3D%20%5B%22date%22%2C%20%22datetime%22%2C%20%22datetime-local%22%2C%20%22month%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22time%22%2C%20%22week%22%2C%20%22file%22%5D%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20this._updateAriaLabelledBy()%3B%0A%0A%20%20%20%20%20%20%2F%2F%20In%20the%202.0%20version%20of%20the%20element%2C%20this%20is%20handled%20in%20%60onIronInputReady%60%2C%0A%20%20%20%20%20%20%2F%2F%20i.e.%20after%20the%20native%20input%20has%20finished%20distributing.%20In%20the%201.0%20version%2C%0A%20%20%20%20%20%20%2F%2F%20the%20input%20is%20in%20the%20shadow%20tree%2C%20so%20it's%20already%20available.%0A%20%20%20%20%20%20if%20(!Polymer.Element%20%26%26%20this.inputElement%20%26%26%0A%20%20%20%20%20%20%20%20%20%20this._typesThatHaveText.indexOf(this.inputElement.type)%20!%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this.alwaysFloatLabel%20%3D%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_appendStringWithSpace%3A%20function(str%2C%20more)%20%7B%0A%20%20%20%20%20%20if%20(str)%20%7B%0A%20%20%20%20%20%20%20%20str%20%3D%20str%20%2B%20'%20'%20%2B%20more%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20str%20%3D%20more%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20str%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onAddonAttached%3A%20function(event)%20%7B%0A%20%20%20%20%20%20var%20target%20%3D%20Polymer.dom(event).rootTarget%3B%0A%20%20%20%20%20%20if%20(target.id)%20%7B%0A%20%20%20%20%20%20%20%20this._ariaDescribedBy%20%3D%20this._appendStringWithSpace(this._ariaDescribedBy%2C%20target.id)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20var%20id%20%3D%20'paper-input-add-on-'%20%2B%20Polymer.PaperInputHelper.NextAddonID%2B%2B%3B%0A%20%20%20%20%20%20%20%20target.id%20%3D%20id%3B%0A%20%20%20%20%20%20%20%20this._ariaDescribedBy%20%3D%20this._appendStringWithSpace(this._ariaDescribedBy%2C%20id)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Validates%20the%20input%20element%20and%20sets%20an%20error%20style%20if%20needed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20validate%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20this.inputElement.validate()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Forward%20focus%20to%20inputElement.%20Overriden%20from%20IronControlState.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_focusBlurHandler%3A%20function(event)%20%7B%0A%20%20%20%20%20%20Polymer.IronControlState._focusBlurHandler.call(this%2C%20event)%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Forward%20the%20focus%20to%20the%20nested%20input.%0A%20%20%20%20%20%20if%20(this.focused%20%26%26%20!this._shiftTabPressed%20%26%26%20this._focusableElement)%20%7B%0A%20%20%20%20%20%20%20%20this._focusableElement.focus()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Handler%20that%20is%20called%20when%20a%20shift%2Btab%20keypress%20is%20detected%20by%20the%20menu.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BCustomEvent%7D%20event%20A%20key%20combination%20event.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_onShiftTabDown%3A%20function(event)%20%7B%0A%20%20%20%20%20%20var%20oldTabIndex%20%3D%20this.getAttribute('tabindex')%3B%0A%20%20%20%20%20%20this._shiftTabPressed%20%3D%20true%3B%0A%20%20%20%20%20%20this.setAttribute('tabindex'%2C%20'-1')%3B%0A%20%20%20%20%20%20this.async(function()%20%7B%0A%20%20%20%20%20%20%20%20this.setAttribute('tabindex'%2C%20oldTabIndex)%3B%0A%20%20%20%20%20%20%20%20this._shiftTabPressed%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%2C%201)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20If%20%60autoValidate%60%20is%20true%2C%20then%20validates%20the%20element.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_handleAutoValidate%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.autoValidate)%0A%20%20%20%20%20%20%20%20this.validate()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Restores%20the%20cursor%20to%20its%20original%20position%20after%20updating%20the%20value.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20newValue%20The%20value%20that%20should%20be%20saved.%0A%20%20%20%20%20*%2F%0A%20%20%20%20updateValueAndPreserveCaret%3A%20function(newValue)%20%7B%0A%20%20%20%20%20%20%2F%2F%20Not%20all%20elements%20might%20have%20selection%2C%20and%20even%20if%20they%20have%20the%0A%20%20%20%20%20%20%2F%2F%20right%20properties%2C%20accessing%20them%20might%20throw%20an%20exception%20(like%20for%0A%20%20%20%20%20%20%2F%2F%20%3Cinput%20type%3Dnumber%3E)%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20var%20start%20%3D%20this.inputElement.selectionStart%3B%0A%20%20%20%20%20%20%20%20this.value%20%3D%20newValue%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20The%20cursor%20automatically%20jumps%20to%20the%20end%20after%20re-setting%20the%20value%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20so%20restore%20it%20to%20its%20original%20position.%0A%20%20%20%20%20%20%20%20this.inputElement.selectionStart%20%3D%20start%3B%0A%20%20%20%20%20%20%20%20this.inputElement.selectionEnd%20%3D%20start%3B%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Just%20set%20the%20value%20and%20give%20up%20on%20the%20caret.%0A%20%20%20%20%20%20%20%20this.value%20%3D%20newValue%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeAlwaysFloatLabel%3A%20function(alwaysFloatLabel%2C%20placeholder)%20%7B%0A%20%20%20%20%20%20return%20placeholder%20%7C%7C%20alwaysFloatLabel%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_updateAriaLabelledBy%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20label%20%3D%20Polymer.dom(this.root).querySelector('label')%3B%0A%20%20%20%20%20%20if%20(!label)%20%7B%0A%20%20%20%20%20%20%20%20this._ariaLabelledBy%20%3D%20''%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20labelledBy%3B%0A%20%20%20%20%20%20if%20(label.id)%20%7B%0A%20%20%20%20%20%20%20%20labelledBy%20%3D%20label.id%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20labelledBy%20%3D%20'paper-input-label-'%20%2B%20Polymer.PaperInputHelper.NextLabelID%2B%2B%3B%0A%20%20%20%20%20%20%20%20label.id%20%3D%20labelledBy%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this._ariaLabelledBy%20%3D%20labelledBy%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_generateInputId%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(!this._inputId%20%7C%7C%20this._inputId%20%3D%3D%3D%20'')%20%7B%0A%20%20%20%20%20%20%20%20this._inputId%20%3D%20%20'input-'%20%2B%20Polymer.PaperInputHelper.NextInputID%2B%2B%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onChange%3Afunction(event)%20%7B%0A%20%20%20%20%20%20%2F%2F%20In%20the%20Shadow%20DOM%2C%20the%20%60change%60%20event%20is%20not%20leaked%20into%20the%0A%20%20%20%20%20%20%2F%2F%20ancestor%20tree%2C%20so%20we%20must%20do%20this%20manually.%0A%20%20%20%20%20%20%2F%2F%20See%20https%3A%2F%2Fw3c.github.io%2Fwebcomponents%2Fspec%2Fshadow%2F%23events-that-are-not-leaked-into-ancestor-trees.%0A%20%20%20%20%20%20if%20(this.shadowRoot)%20%7B%0A%20%20%20%20%20%20%20%20this.fire(event.type%2C%20%7BsourceEvent%3A%20event%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20node%3A%20this%2C%0A%20%20%20%20%20%20%20%20%20%20bubbles%3A%20event.bubbles%2C%0A%20%20%20%20%20%20%20%20%20%20cancelable%3A%20event.cancelable%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_autofocusChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Firefox%20doesn't%20respect%20the%20autofocus%20attribute%20if%20it's%20applied%20after%0A%20%20%20%20%20%20%2F%2F%20the%20page%20is%20loaded%20(Chrome%2FWebKit%20do%20respect%20it)%2C%20preventing%20an%0A%20%20%20%20%20%20%2F%2F%20autofocus%20attribute%20specified%20in%20markup%20from%20taking%20effect%20when%20the%0A%20%20%20%20%20%20%2F%2F%20element%20is%20upgraded.%20As%20a%20workaround%2C%20if%20the%20autofocus%20property%20is%20set%2C%0A%20%20%20%20%20%20%2F%2F%20and%20the%20focus%20hasn't%20already%20been%20moved%20elsewhere%2C%20we%20take%20focus.%0A%20%20%20%20%20%20if%20(this.autofocus%20%26%26%20this._focusableElement)%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20In%20IE%2011%2C%20the%20default%20document.activeElement%20can%20be%20the%20page's%0A%20%20%20%20%20%20%20%20%2F%2F%20outermost%20html%20element%2C%20but%20there%20are%20also%20cases%20(under%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20polyfill%3F)%20in%20which%20the%20activeElement%20is%20not%20a%20real%20HTMLElement%2C%20but%0A%20%20%20%20%20%20%20%20%2F%2F%20just%20a%20plain%20object.%20We%20identify%20the%20latter%20case%20as%20having%20no%20valid%0A%20%20%20%20%20%20%20%20%2F%2F%20activeElement.%0A%20%20%20%20%20%20%20%20var%20activeElement%20%3D%20document.activeElement%3B%0A%20%20%20%20%20%20%20%20var%20isActiveElementValid%20%3D%20activeElement%20instanceof%20HTMLElement%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Has%20some%20other%20element%20has%20already%20taken%20the%20focus%3F%0A%20%20%20%20%20%20%20%20var%20isSomeElementActive%20%3D%20isActiveElementValid%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20activeElement%20!%3D%3D%20document.body%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20activeElement%20!%3D%3D%20document.documentElement%3B%20%2F*%20IE%2011%20*%2F%0A%20%20%20%20%20%20%20%20if%20(!isSomeElementActive)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20No%20specific%20element%20has%20taken%20the%20focus%20yet%2C%20so%20we%20can%20take%20it.%0A%20%20%20%20%20%20%20%20%20%20this._focusableElement.focus()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F**%20%40polymerBehavior%20*%2F%0A%20%20Polymer.PaperInputBehavior%20%3D%20%5B%0A%20%20%20%20Polymer.IronControlState%2C%0A%20%20%20%20Polymer.IronA11yKeysBehavior%2C%0A%20%20%20%20Polymer.PaperInputBehaviorImpl%0A%20%20%5D%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-behavior.html.js%0A",
            "totalBytes": 18183,
            "wastedBytes": 13925,
            "wastedPercent": 76.58252213606116
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20detect%20native%20touch%20action%20support%0Avar%20HAS_NATIVE_TA%3Dtypeof%20document.head.style.touchAction%3D%3D%3D'string'%3Bvar%20GESTURE_KEY%3D'__polymerGestures'%3Bvar%20HANDLED_OBJ%3D'__polymerGesturesHandled'%3Bvar%20TOUCH_ACTION%3D'__polymerGesturesTouchAction'%3B%2F%2F%20radius%20for%20tap%20and%20track%0Avar%20TAP_DISTANCE%3D25%3Bvar%20TRACK_DISTANCE%3D5%3B%2F%2F%20number%20of%20last%20N%20track%20positions%20to%20keep%0Avar%20TRACK_LENGTH%3D2%3B%2F%2F%20Disabling%20%22mouse%22%20handlers%20for%202500ms%20is%20enough%0Avar%20MOUSE_TIMEOUT%3D2500%3Bvar%20MOUSE_EVENTS%3D%5B'mousedown'%2C'mousemove'%2C'mouseup'%2C'click'%5D%3B%2F%2F%20an%20array%20of%20bitmask%20values%20for%20mapping%20MouseEvent.which%20to%20MouseEvent.buttons%0Avar%20MOUSE_WHICH_TO_BUTTONS%3D%5B0%2C1%2C4%2C2%5D%3Bvar%20MOUSE_HAS_BUTTONS%3Dfunction()%7Btry%7Breturn%20new%20MouseEvent('test'%2C%7Bbuttons%3A1%7D).buttons%3D%3D%3D1%3B%7Dcatch(e)%7Breturn%20false%3B%7D%7D()%3B%2F**%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%20Possible%20mouse%20event%20name%0A%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20mouse%20event%2C%20false%20if%20not%0A%20%20%20*%2Ffunction%20isMouseEvent(name)%7Breturn%20MOUSE_EVENTS.indexOf(name)%3E-1%3B%7D%2F*%20eslint%20no-empty%3A%20%5B%22error%22%2C%20%7B%20%22allowEmptyCatch%22%3A%20true%20%7D%5D%20*%2F%2F%2F%20check%20for%20passive%20event%20listeners%0Avar%20SUPPORTS_PASSIVE%3Dfalse%3B(function()%7Btry%7Bvar%20opts%3DObject.defineProperty(%7B%7D%2C'passive'%2C%7Bget%3Afunction%20get()%7BSUPPORTS_PASSIVE%3Dtrue%3B%7D%7D)%3Bwindow.addEventListener('test'%2Cnull%2Copts)%3Bwindow.removeEventListener('test'%2Cnull%2Copts)%3B%7Dcatch(e)%7B%7D%7D)()%3B%2F**%0A%20%20%20*%20Generate%20settings%20for%20event%20listeners%2C%20dependant%20on%20%60Polymer.passiveTouchGestures%60%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Event%20name%20to%20determine%20if%20%60%7Bpassive%7D%60%20option%20is%20needed%0A%20%20%20*%20%40return%20%7B%7Bpassive%3A%20boolean%7D%20%7C%20undefined%7D%20Options%20to%20use%20for%20addEventListener%20and%20removeEventListener%0A%20%20%20*%2Ffunction%20PASSIVE_TOUCH(eventName)%7Bif(isMouseEvent(eventName)%7C%7CeventName%3D%3D%3D'touchend')%7Breturn%3B%7Dif(HAS_NATIVE_TA%26%26SUPPORTS_PASSIVE%26%26Polymer.passiveTouchGestures)%7Breturn%7Bpassive%3Atrue%7D%3B%7Delse%7Breturn%3B%7D%7D%2F%2F%20Check%20for%20touch-only%20devices%0Avar%20IS_TOUCH_ONLY%3Dnavigator.userAgent.match(%2FiP(%3F%3A%5Boa%5Dd%7Chone)%7CAndroid%2F)%3Bvar%20GestureRecognizer%3Dfunction%20GestureRecognizer()%7B%7D%3B%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%20%40type%20%7Bfunction()%3A%20void%7D%20*%2FGestureRecognizer.prototype.reset%3B%2F**%20%40type%20%7Bfunction(MouseEvent)%3A%20void%20%7C%20undefined%7D%20*%2FGestureRecognizer.prototype.mousedown%3B%2F**%20%40type%20%7B(function(MouseEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.mousemove%3B%2F**%20%40type%20%7B(function(MouseEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.mouseup%3B%2F**%20%40type%20%7B(function(TouchEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.touchstart%3B%2F**%20%40type%20%7B(function(TouchEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.touchmove%3B%2F**%20%40type%20%7B(function(TouchEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.touchend%3B%2F**%20%40type%20%7B(function(MouseEvent)%3A%20void%20%7C%20undefined)%7D%20*%2FGestureRecognizer.prototype.click%3B%2F%2F%20keep%20track%20of%20any%20labels%20hit%20by%20the%20mouseCanceller%0A%2F**%20%40type%20%7B!Array%3C!HTMLLabelElement%3E%7D%20*%2Fvar%20clickedLabels%3D%5B%5D%3B%2F**%20%40type%20%7B!Object%3Cboolean%3E%7D%20*%2Fvar%20labellable%3D%7B'button'%3Atrue%2C'input'%3Atrue%2C'keygen'%3Atrue%2C'meter'%3Atrue%2C'output'%3Atrue%2C'textarea'%3Atrue%2C'progress'%3Atrue%2C'select'%3Atrue%7D%3B%2F%2F%20Defined%20at%20https%3A%2F%2Fhtml.spec.whatwg.org%2Fmultipage%2Fform-control-infrastructure.html%23enabling-and-disabling-form-controls%3A-the-disabled-attribute%0A%2F**%20%40type%20%7B!Object%3Cboolean%3E%7D%20*%2Fvar%20canBeDisabled%3D%7B'button'%3Atrue%2C'command'%3Atrue%2C'fieldset'%3Atrue%2C'input'%3Atrue%2C'keygen'%3Atrue%2C'optgroup'%3Atrue%2C'option'%3Atrue%2C'select'%3Atrue%2C'textarea'%3Atrue%7D%3B%2F**%0A%20%20%20*%20%40param%20%7BHTMLElement%7D%20el%20Element%20to%20check%20labelling%20status%0A%20%20%20*%20%40return%20%7Bboolean%7D%20element%20can%20have%20labels%0A%20%20%20*%2Ffunction%20canBeLabelled(el)%7Breturn%20labellable%5Bel.localName%5D%7C%7Cfalse%3B%7D%2F**%0A%20%20%20*%20%40param%20%7BHTMLElement%7D%20el%20Element%20that%20may%20be%20labelled.%0A%20%20%20*%20%40return%20%7B!Array%3C!HTMLLabelElement%3E%7D%20Relevant%20label%20for%20%60el%60%0A%20%20%20*%2Ffunction%20matchingLabels(el)%7Bvar%20labels%3DArray.from(%2F**%20%40type%20%7BHTMLInputElement%7D%20*%2Fel.labels%7C%7C%5B%5D)%3B%2F%2F%20IE%20doesn't%20have%20%60labels%60%20and%20Safari%20doesn't%20populate%20%60labels%60%0A%2F%2F%20if%20element%20is%20in%20a%20shadowroot.%0A%2F%2F%20In%20this%20instance%2C%20finding%20the%20non-ancestor%20labels%20is%20enough%2C%0A%2F%2F%20as%20the%20mouseCancellor%20code%20will%20handle%20ancstor%20labels%0Aif(!labels.length)%7Blabels%3D%5B%5D%3Bvar%20root%3Del.getRootNode()%3B%2F%2F%20if%20there%20is%20an%20id%20on%20%60el%60%2C%20check%20for%20all%20labels%20with%20a%20matching%20%60for%60%20attribute%0Aif(el.id)%7Bvar%20matching%3Droot.querySelectorAll('label%5Bfor%20%3D%20'%2Bel.id%2B'%5D')%3Bfor(var%20i%3D0%3Bi%3Cmatching.length%3Bi%2B%2B)%7Blabels.push(%2F**%20%40type%20%7B!HTMLLabelElement%7D%20*%2Fmatching%5Bi%5D)%3B%7D%7D%7Dreturn%20labels%3B%7D%2F%2F%20touch%20will%20make%20synthetic%20mouse%20events%0A%2F%2F%20%60preventDefault%60%20on%20touchend%20will%20cancel%20them%2C%0A%2F%2F%20but%20this%20breaks%20%60%3Cinput%3E%60%20focus%20and%20link%20clicks%0A%2F%2F%20disable%20mouse%20handlers%20for%20MOUSE_TIMEOUT%20ms%20after%0A%2F%2F%20a%20touchend%20to%20ignore%20synthetic%20mouse%20events%0Avar%20mouseCanceller%3Dfunction%20mouseCanceller(mouseEvent)%7B%2F%2F%20Check%20for%20sourceCapabilities%2C%20used%20to%20distinguish%20synthetic%20events%0A%2F%2F%20if%20mouseEvent%20did%20not%20come%20from%20a%20device%20that%20fires%20touch%20events%2C%0A%2F%2F%20it%20was%20made%20by%20a%20real%20mouse%20and%20should%20be%20counted%0A%2F%2F%20http%3A%2F%2Fwicg.github.io%2FInputDeviceCapabilities%2F%23dom-inputdevicecapabilities-firestouchevents%0Avar%20sc%3DmouseEvent.sourceCapabilities%3Bif(sc%26%26!sc.firesTouchEvents)%7Breturn%3B%7D%2F%2F%20skip%20synthetic%20mouse%20events%0AmouseEvent%5BHANDLED_OBJ%5D%3D%7Bskip%3Atrue%7D%3B%2F%2F%20disable%20%22ghost%20clicks%22%0Aif(mouseEvent.type%3D%3D%3D'click')%7Bvar%20clickFromLabel%3Dfalse%3Bvar%20path%3DmouseEvent.composedPath%26%26mouseEvent.composedPath()%3Bif(path)%7Bfor(var%20i%3D0%3Bi%3Cpath.length%3Bi%2B%2B)%7Bif(path%5Bi%5D.nodeType%3D%3D%3DNode.ELEMENT_NODE)%7Bif(path%5Bi%5D.localName%3D%3D%3D'label')%7BclickedLabels.push(path%5Bi%5D)%3B%7Delse%20if(canBeLabelled(path%5Bi%5D))%7Bvar%20ownerLabels%3DmatchingLabels(path%5Bi%5D)%3B%2F%2F%20check%20if%20one%20of%20the%20clicked%20labels%20is%20labelling%20this%20element%0Afor(var%20j%3D0%3Bj%3CownerLabels.length%3Bj%2B%2B)%7BclickFromLabel%3DclickFromLabel%7C%7CclickedLabels.indexOf(ownerLabels%5Bj%5D)%3E-1%3B%7D%7D%7Dif(path%5Bi%5D%3D%3D%3DPOINTERSTATE.mouse.target)%7Breturn%3B%7D%7D%7D%2F%2F%20if%20one%20of%20the%20clicked%20labels%20was%20labelling%20the%20target%20element%2C%0A%2F%2F%20this%20is%20not%20a%20ghost%20click%0Aif(clickFromLabel)%7Breturn%3B%7DmouseEvent.preventDefault()%3BmouseEvent.stopPropagation()%3B%7D%7D%3B%2F**%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20setup%20True%20to%20add%2C%20false%20to%20remove.%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2Ffunction%20setupTeardownMouseCanceller(setup)%7Bvar%20events%3DIS_TOUCH_ONLY%3F%5B'click'%5D%3AMOUSE_EVENTS%3Bfor(var%20i%3D0%2Cen%3Bi%3Cevents.length%3Bi%2B%2B)%7Ben%3Devents%5Bi%5D%3Bif(setup)%7B%2F%2F%20reset%20clickLabels%20array%0AclickedLabels.length%3D0%3Bdocument.addEventListener(en%2CmouseCanceller%2Ctrue)%3B%7Delse%7Bdocument.removeEventListener(en%2CmouseCanceller%2Ctrue)%3B%7D%7D%7Dfunction%20ignoreMouse(e)%7Bif(!POINTERSTATE.mouse.mouseIgnoreJob)%7BsetupTeardownMouseCanceller(true)%3B%7Dvar%20unset%3Dfunction%20unset()%7BsetupTeardownMouseCanceller()%3BPOINTERSTATE.mouse.target%3Dnull%3BPOINTERSTATE.mouse.mouseIgnoreJob%3Dnull%3B%7D%3BPOINTERSTATE.mouse.target%3De.composedPath()%5B0%5D%3BPOINTERSTATE.mouse.mouseIgnoreJob%3DPolymer.Debouncer.debounce(POINTERSTATE.mouse.mouseIgnoreJob%2CPolymer.Async.timeOut.after(MOUSE_TIMEOUT)%2Cunset)%3B%7D%2F**%0A%20%20%20*%20%40param%20%7BMouseEvent%7D%20ev%20event%20to%20test%20for%20left%20mouse%20button%20down%0A%20%20%20*%20%40return%20%7Bboolean%7D%20has%20left%20mouse%20button%20down%0A%20%20%20*%2Ffunction%20hasLeftMouseButton(ev)%7Bvar%20type%3Dev.type%3B%2F%2F%20exit%20early%20if%20the%20event%20is%20not%20a%20mouse%20event%0Aif(!isMouseEvent(type))%7Breturn%20false%3B%7D%2F%2F%20ev.button%20is%20not%20reliable%20for%20mousemove%20(0%20is%20overloaded%20as%20both%20left%20button%20and%20no%20buttons)%0A%2F%2F%20instead%20we%20use%20ev.buttons%20(bitmask%20of%20buttons)%20or%20fall%20back%20to%20ev.which%20(deprecated%2C%200%20for%20no%20buttons%2C%201%20for%20left%20button)%0Aif(type%3D%3D%3D'mousemove')%7B%2F%2F%20allow%20undefined%20for%20testing%20events%0Avar%20buttons%3Dev.buttons%3D%3D%3Dundefined%3F1%3Aev.buttons%3Bif(ev%20instanceof%20window.MouseEvent%26%26!MOUSE_HAS_BUTTONS)%7Bbuttons%3DMOUSE_WHICH_TO_BUTTONS%5Bev.which%5D%7C%7C0%3B%7D%2F%2F%20buttons%20is%20a%20bitmask%2C%20check%20that%20the%20left%20button%20bit%20is%20set%20(1)%0Areturn%20Boolean(buttons%261)%3B%7Delse%7B%2F%2F%20allow%20undefined%20for%20testing%20events%0Avar%20button%3Dev.button%3D%3D%3Dundefined%3F0%3Aev.button%3B%2F%2F%20ev.button%20is%200%20in%20mousedown%2Fmouseup%2Fclick%20for%20left%20button%20activation%0Areturn%20button%3D%3D%3D0%3B%7D%7Dfunction%20isSyntheticClick(ev)%7Bif(ev.type%3D%3D%3D'click')%7B%2F%2F%20ev.detail%20is%200%20for%20HTMLElement.click%20in%20most%20browsers%0Aif(ev.detail%3D%3D%3D0)%7Breturn%20true%3B%7D%2F%2F%20in%20the%20worst%20case%2C%20check%20that%20the%20x%2Fy%20position%20of%20the%20click%20is%20within%0A%2F%2F%20the%20bounding%20box%20of%20the%20target%20of%20the%20event%0A%2F%2F%20Thanks%20IE%2010%20%3E%3A(%0Avar%20t%3DGestures._findOriginalTarget(ev)%3B%2F%2F%20make%20sure%20the%20target%20of%20the%20event%20is%20an%20element%20so%20we%20can%20use%20getBoundingClientRect%2C%0A%2F%2F%20if%20not%2C%20just%20assume%20it%20is%20a%20synthetic%20click%0Aif(!t.nodeType%7C%7C%2F**%20%40type%20%7BElement%7D%20*%2Ft.nodeType!%3D%3DNode.ELEMENT_NODE)%7Breturn%20true%3B%7Dvar%20bcr%3D%2F**%20%40type%20%7BElement%7D%20*%2Ft.getBoundingClientRect()%3B%2F%2F%20use%20page%20x%2Fy%20to%20account%20for%20scrolling%0Avar%20x%3Dev.pageX%2Cy%3Dev.pageY%3B%2F%2F%20ev%20is%20a%20synthetic%20click%20if%20the%20position%20is%20outside%20the%20bounding%20box%20of%20the%20target%0Areturn!(x%3E%3Dbcr.left%26%26x%3C%3Dbcr.right%26%26y%3E%3Dbcr.top%26%26y%3C%3Dbcr.bottom)%3B%7Dreturn%20false%3B%7Dvar%20POINTERSTATE%3D%7Bmouse%3A%7Btarget%3Anull%2CmouseIgnoreJob%3Anull%7D%2Ctouch%3A%7Bx%3A0%2Cy%3A0%2Cid%3A-1%2CscrollDecided%3Afalse%7D%7D%3Bfunction%20firstTouchAction(ev)%7Bvar%20ta%3D'auto'%3Bvar%20path%3Dev.composedPath%26%26ev.composedPath()%3Bif(path)%7Bfor(var%20i%3D0%2Cn%3Bi%3Cpath.length%3Bi%2B%2B)%7Bn%3Dpath%5Bi%5D%3Bif(n%5BTOUCH_ACTION%5D)%7Bta%3Dn%5BTOUCH_ACTION%5D%3Bbreak%3B%7D%7D%7Dreturn%20ta%3B%7Dfunction%20trackDocument(stateObj%2Cmovefn%2Cupfn)%7BstateObj.movefn%3Dmovefn%3BstateObj.upfn%3Dupfn%3Bdocument.addEventListener('mousemove'%2Cmovefn)%3Bdocument.addEventListener('mouseup'%2Cupfn)%3B%7Dfunction%20untrackDocument(stateObj)%7Bdocument.removeEventListener('mousemove'%2CstateObj.movefn)%3Bdocument.removeEventListener('mouseup'%2CstateObj.upfn)%3BstateObj.movefn%3Dnull%3BstateObj.upfn%3Dnull%3B%7D%2F%2F%20use%20a%20document-wide%20touchend%20listener%20to%20start%20the%20ghost-click%20prevention%20mechanism%0A%2F%2F%20Use%20passive%20event%20listeners%2C%20if%20supported%2C%20to%20not%20affect%20scrolling%20performance%0Adocument.addEventListener('touchend'%2CignoreMouse%2CSUPPORTS_PASSIVE%3F%7Bpassive%3Atrue%7D%3Afalse)%3B%2F**%0A%20%20%20*%20Module%20for%20adding%20listeners%20to%20a%20node%20for%20the%20following%20normalized%0A%20%20%20*%20cross-platform%20%22gesture%22%20events%3A%0A%20%20%20*%20-%20%60down%60%20-%20mouse%20or%20touch%20went%20down%0A%20%20%20*%20-%20%60up%60%20-%20mouse%20or%20touch%20went%20up%0A%20%20%20*%20-%20%60tap%60%20-%20mouse%20click%20or%20finger%20tap%0A%20%20%20*%20-%20%60track%60%20-%20mouse%20drag%20or%20touch%20move%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20for%20adding%20cross-platform%20gesture%20event%20listeners.%0A%20%20%20*%2Fvar%20Gestures%3D%7Bgestures%3A%7B%7D%2Crecognizers%3A%5B%5D%2C%2F**%0A%20%20%20%20%20*%20Finds%20the%20element%20rendered%20on%20the%20screen%20at%20the%20provided%20coordinates.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Similar%20to%20%60document.elementFromPoint%60%2C%20but%20pierces%20through%0A%20%20%20%20%20*%20shadow%20roots.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20x%20Horizontal%20pixel%20coordinate%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20y%20Vertical%20pixel%20coordinate%0A%20%20%20%20%20*%20%40return%20%7BElement%7D%20Returns%20the%20deepest%20shadowRoot%20inclusive%20element%0A%20%20%20%20%20*%20found%20at%20the%20screen%20position%20given.%0A%20%20%20%20%20*%2FdeepTargetFind%3Afunction%20deepTargetFind(x%2Cy)%7Bvar%20node%3Ddocument.elementFromPoint(x%2Cy)%3Bvar%20next%3Dnode%3B%2F%2F%20this%20code%20path%20is%20only%20taken%20when%20native%20ShadowDOM%20is%20used%0A%2F%2F%20if%20there%20is%20a%20shadowroot%2C%20it%20may%20have%20a%20node%20at%20x%2Fy%0A%2F%2F%20if%20there%20is%20not%20a%20shadowroot%2C%20exit%20the%20loop%0Awhile(next%26%26next.shadowRoot%26%26!window.ShadyDOM)%7B%2F%2F%20if%20there%20is%20a%20node%20at%20x%2Fy%20in%20the%20shadowroot%2C%20look%20deeper%0Avar%20oldNext%3Dnext%3Bnext%3Dnext.shadowRoot.elementFromPoint(x%2Cy)%3B%2F%2F%20on%20Safari%2C%20elementFromPoint%20may%20return%20the%20shadowRoot%20host%0Aif(oldNext%3D%3D%3Dnext)%7Bbreak%3B%7Dif(next)%7Bnode%3Dnext%3B%7D%7Dreturn%20node%3B%7D%2C%2F**%0A%20%20%20%20%20*%20a%20cheaper%20check%20than%20ev.composedPath()%5B0%5D%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7BEvent%7D%20ev%20Event.%0A%20%20%20%20%20*%20%40return%20%7BEventTarget%7D%20Returns%20the%20event%20target.%0A%20%20%20%20%20*%2F_findOriginalTarget%3Afunction%20_findOriginalTarget(ev)%7B%2F%2F%20shadowdom%0Aif(ev.composedPath)%7Bvar%20targets%3D%2F**%20%40type%20%7B!Array%3C!EventTarget%3E%7D%20*%2Fev.composedPath()%3B%2F%2F%20It%20shouldn't%20be%2C%20but%20sometimes%20targets%20is%20empty%20(window%20on%20Safari).%0Areturn%20targets.length%3E0%3Ftargets%5B0%5D%3Aev.target%3B%7D%2F%2F%20shadydom%0Areturn%20ev.target%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7BEvent%7D%20ev%20Event.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_handleNative%3Afunction%20_handleNative(ev)%7Bvar%20handled%3Dvoid%200%3Bvar%20type%3Dev.type%3Bvar%20node%3Dev.currentTarget%3Bvar%20gobj%3Dnode%5BGESTURE_KEY%5D%3Bif(!gobj)%7Breturn%3B%7Dvar%20gs%3Dgobj%5Btype%5D%3Bif(!gs)%7Breturn%3B%7Dif(!ev%5BHANDLED_OBJ%5D)%7Bev%5BHANDLED_OBJ%5D%3D%7B%7D%3Bif(type.slice(0%2C5)%3D%3D%3D'touch')%7Bev%3D%2F**%20%40type%20%7BTouchEvent%7D%20*%2Fev%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Avar%20t%3Dev.changedTouches%5B0%5D%3Bif(type%3D%3D%3D'touchstart')%7B%2F%2F%20only%20handle%20the%20first%20finger%0Aif(ev.touches.length%3D%3D%3D1)%7BPOINTERSTATE.touch.id%3Dt.identifier%3B%7D%7Dif(POINTERSTATE.touch.id!%3D%3Dt.identifier)%7Breturn%3B%7Dif(!HAS_NATIVE_TA)%7Bif(type%3D%3D%3D'touchstart'%7C%7Ctype%3D%3D%3D'touchmove')%7BGestures._handleTouchAction(ev)%3B%7D%7D%7D%7Dhandled%3Dev%5BHANDLED_OBJ%5D%3B%2F%2F%20used%20to%20ignore%20synthetic%20mouse%20events%0Aif(handled.skip)%7Breturn%3B%7D%2F%2F%20reset%20recognizer%20state%0Afor(var%20i%3D0%2Cr%3Bi%3CGestures.recognizers.length%3Bi%2B%2B)%7Br%3DGestures.recognizers%5Bi%5D%3Bif(gs%5Br.name%5D%26%26!handled%5Br.name%5D)%7Bif(r.flow%26%26r.flow.start.indexOf(ev.type)%3E-1%26%26r.reset)%7Br.reset()%3B%7D%7D%7D%2F%2F%20enforce%20gesture%20recognizer%20order%0Afor(var%20_i%3D0%2C_r%3B_i%3CGestures.recognizers.length%3B_i%2B%2B)%7B_r%3DGestures.recognizers%5B_i%5D%3Bif(gs%5B_r.name%5D%26%26!handled%5B_r.name%5D)%7Bhandled%5B_r.name%5D%3Dtrue%3B_r%5Btype%5D(ev)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20ev%20Event.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_handleTouchAction%3Afunction%20_handleTouchAction(ev)%7Bvar%20t%3Dev.changedTouches%5B0%5D%3Bvar%20type%3Dev.type%3Bif(type%3D%3D%3D'touchstart')%7BPOINTERSTATE.touch.x%3Dt.clientX%3BPOINTERSTATE.touch.y%3Dt.clientY%3BPOINTERSTATE.touch.scrollDecided%3Dfalse%3B%7Delse%20if(type%3D%3D%3D'touchmove')%7Bif(POINTERSTATE.touch.scrollDecided)%7Breturn%3B%7DPOINTERSTATE.touch.scrollDecided%3Dtrue%3Bvar%20ta%3DfirstTouchAction(ev)%3Bvar%20prevent%3Dfalse%3Bvar%20dx%3DMath.abs(POINTERSTATE.touch.x-t.clientX)%3Bvar%20dy%3DMath.abs(POINTERSTATE.touch.y-t.clientY)%3Bif(!ev.cancelable)%7B%2F%2F%20scrolling%20is%20happening%0A%7Delse%20if(ta%3D%3D%3D'none')%7Bprevent%3Dtrue%3B%7Delse%20if(ta%3D%3D%3D'pan-x')%7Bprevent%3Ddy%3Edx%3B%7Delse%20if(ta%3D%3D%3D'pan-y')%7Bprevent%3Ddx%3Edy%3B%7Dif(prevent)%7Bev.preventDefault()%3B%7Delse%7BGestures.prevent('track')%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Adds%20an%20event%20listener%20to%20a%20node%20for%20the%20given%20gesture%20type.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20listener%20on%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Gesture%20type%3A%20%60down%60%2C%20%60up%60%2C%20%60track%60%2C%20or%20%60tap%60%0A%20%20%20%20%20*%20%40param%20%7B!function(!Event)%3Avoid%7D%20handler%20Event%20listener%20function%20to%20call%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20a%20gesture%20event%20listener%20was%20added.%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2FaddListener%3Afunction%20addListener(node%2CevType%2Chandler)%7Bif(this.gestures%5BevType%5D)%7Bthis._add(node%2CevType%2Chandler)%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Removes%20an%20event%20listener%20from%20a%20node%20for%20the%20given%20gesture%20type.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20remove%20listener%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Gesture%20type%3A%20%60down%60%2C%20%60up%60%2C%20%60track%60%2C%20or%20%60tap%60%0A%20%20%20%20%20*%20%40param%20%7B!function(!Event)%3Avoid%7D%20handler%20Event%20listener%20function%20previously%20passed%20to%0A%20%20%20%20%20*%20%20%60addListener%60.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20a%20gesture%20event%20listener%20was%20removed.%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2FremoveListener%3Afunction%20removeListener(node%2CevType%2Chandler)%7Bif(this.gestures%5BevType%5D)%7Bthis._remove(node%2CevType%2Chandler)%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2C%2F**%0A%20%20%20%20%20*%20automate%20the%20event%20listeners%20for%20the%20native%20events%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20node%20Node%20on%20which%20to%20add%20the%20event.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Event%20type%20to%20add.%0A%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%7D%20handler%20Event%20handler%20function.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2F_add%3Afunction%20_add(node%2CevType%2Chandler)%7Bvar%20recognizer%3Dthis.gestures%5BevType%5D%3Bvar%20deps%3Drecognizer.deps%3Bvar%20name%3Drecognizer.name%3Bvar%20gobj%3Dnode%5BGESTURE_KEY%5D%3Bif(!gobj)%7Bnode%5BGESTURE_KEY%5D%3Dgobj%3D%7B%7D%3B%7Dfor(var%20i%3D0%2Cdep%2Cgd%3Bi%3Cdeps.length%3Bi%2B%2B)%7Bdep%3Ddeps%5Bi%5D%3B%2F%2F%20don't%20add%20mouse%20handlers%20on%20iOS%20because%20they%20cause%20gray%20selection%20overlays%0Aif(IS_TOUCH_ONLY%26%26isMouseEvent(dep)%26%26dep!%3D%3D'click')%7Bcontinue%3B%7Dgd%3Dgobj%5Bdep%5D%3Bif(!gd)%7Bgobj%5Bdep%5D%3Dgd%3D%7B_count%3A0%7D%3B%7Dif(gd._count%3D%3D%3D0)%7Bnode.addEventListener(dep%2Cthis._handleNative%2CPASSIVE_TOUCH(dep))%3B%7Dgd%5Bname%5D%3D(gd%5Bname%5D%7C%7C0)%2B1%3Bgd._count%3D(gd._count%7C%7C0)%2B1%3B%7Dnode.addEventListener(evType%2Chandler)%3Bif(recognizer.touchAction)%7Bthis.setTouchAction(node%2Crecognizer.touchAction)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20automate%20event%20listener%20removal%20for%20native%20events%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20node%20Node%20on%20which%20to%20remove%20the%20event.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evType%20Event%20type%20to%20remove.%0A%20%20%20%20%20*%20%40param%20%7Bfunction(Event%3F)%7D%20handler%20Event%20handler%20function.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2F_remove%3Afunction%20_remove(node%2CevType%2Chandler)%7Bvar%20recognizer%3Dthis.gestures%5BevType%5D%3Bvar%20deps%3Drecognizer.deps%3Bvar%20name%3Drecognizer.name%3Bvar%20gobj%3Dnode%5BGESTURE_KEY%5D%3Bif(gobj)%7Bfor(var%20i%3D0%2Cdep%2Cgd%3Bi%3Cdeps.length%3Bi%2B%2B)%7Bdep%3Ddeps%5Bi%5D%3Bgd%3Dgobj%5Bdep%5D%3Bif(gd%26%26gd%5Bname%5D)%7Bgd%5Bname%5D%3D(gd%5Bname%5D%7C%7C1)-1%3Bgd._count%3D(gd._count%7C%7C1)-1%3Bif(gd._count%3D%3D%3D0)%7Bnode.removeEventListener(dep%2Cthis._handleNative%2CPASSIVE_TOUCH(dep))%3B%7D%7D%7D%7Dnode.removeEventListener(evType%2Chandler)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Registers%20a%20new%20gesture%20event%20recognizer%20for%20adding%20new%20custom%0A%20%20%20%20%20*%20gesture%20event%20types.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!GestureRecognizer%7D%20recog%20Gesture%20recognizer%20descriptor%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2Fregister%3Afunction%20register(recog)%7Bthis.recognizers.push(recog)%3Bfor(var%20i%3D0%3Bi%3Crecog.emits.length%3Bi%2B%2B)%7Bthis.gestures%5Brecog.emits%5Bi%5D%5D%3Drecog%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evName%20Event%20name.%0A%20%20%20%20%20*%20%40return%20%7BObject%7D%20Returns%20the%20gesture%20for%20the%20given%20event%20name.%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2F_findRecognizerByEvent%3Afunction%20_findRecognizerByEvent(evName)%7Bfor(var%20i%3D0%2Cr%3Bi%3Cthis.recognizers.length%3Bi%2B%2B)%7Br%3Dthis.recognizers%5Bi%5D%3Bfor(var%20j%3D0%2Cn%3Bj%3Cr.emits.length%3Bj%2B%2B)%7Bn%3Dr.emits%5Bj%5D%3Bif(n%3D%3D%3DevName)%7Breturn%20r%3B%7D%7D%7Dreturn%20null%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Sets%20scrolling%20direction%20on%20node.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20value%20is%20checked%20on%20first%20move%2C%20thus%20it%20should%20be%20called%20prior%20to%0A%20%20%20%20%20*%20adding%20event%20listeners.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7B!Element%7D%20node%20Node%20to%20set%20touch%20action%20setting%20on%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Touch%20action%20value%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FsetTouchAction%3Afunction%20setTouchAction(node%2Cvalue)%7Bif(HAS_NATIVE_TA)%7B%2F%2F%20NOTE%3A%20add%20touchAction%20async%20so%20that%20events%20can%20be%20added%20in%0A%2F%2F%20custom%20element%20constructors.%20Otherwise%20we%20run%20afoul%20of%20custom%0A%2F%2F%20elements%20restriction%20against%20settings%20attributes%20(style)%20in%20the%0A%2F%2F%20constructor.%0APolymer.Async.microTask.run(function()%7Bnode.style.touchAction%3Dvalue%3B%7D)%3B%7Dnode%5BTOUCH_ACTION%5D%3Dvalue%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Dispatches%20an%20event%20on%20the%20%60target%60%20element%20of%20%60type%60%20with%20the%20given%0A%20%20%20%20%20*%20%60detail%60.%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%20%40param%20%7B!EventTarget%7D%20target%20The%20element%20on%20which%20to%20fire%20an%20event.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20The%20type%20of%20event%20to%20fire.%0A%20%20%20%20%20*%20%40param%20%7B!Object%3D%7D%20detail%20The%20detail%20object%20to%20populate%20on%20the%20event.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_fire%3Afunction%20_fire(target%2Ctype%2Cdetail)%7Bvar%20ev%3Dnew%20Event(type%2C%7Bbubbles%3Atrue%2Ccancelable%3Atrue%2Ccomposed%3Atrue%7D)%3Bev.detail%3Ddetail%3Btarget.dispatchEvent(ev)%3B%2F%2F%20forward%20%60preventDefault%60%20in%20a%20clean%20way%0Aif(ev.defaultPrevented)%7Bvar%20preventer%3Ddetail.preventer%7C%7Cdetail.sourceEvent%3Bif(preventer%26%26preventer.preventDefault)%7Bpreventer.preventDefault()%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Prevents%20the%20dispatch%20and%20default%20action%20of%20the%20given%20event%20name.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20evName%20Event%20name.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BGestures%7D%0A%20%20%20%20%20*%2Fprevent%3Afunction%20prevent(evName)%7Bvar%20recognizer%3Dthis._findRecognizerByEvent(evName)%3Bif(recognizer.info)%7Brecognizer.info.prevent%3Dtrue%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Reset%20the%202500ms%20timeout%20on%20processing%20mouse%20input%20after%20detecting%20touch%20input.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Touch%20inputs%20create%20synthesized%20mouse%20inputs%20anywhere%20from%200%20to%202000ms%20after%20the%20touch.%0A%20%20%20%20%20*%20This%20method%20should%20only%20be%20called%20during%20testing%20with%20simulated%20touch%20inputs.%0A%20%20%20%20%20*%20Calling%20this%20method%20in%20production%20may%20cause%20duplicate%20taps%20or%20other%20Gestures.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Gestures%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FresetMouseCanceller%3Afunction%20resetMouseCanceller()%7Bif(POINTERSTATE.mouse.mouseIgnoreJob)%7BPOINTERSTATE.mouse.mouseIgnoreJob.flush()%3B%7D%7D%7D%3B%2F*%20eslint-disable%20valid-jsdoc%20*%2FGestures.register(%7Bname%3A'downup'%2Cdeps%3A%5B'mousedown'%2C'touchstart'%2C'touchend'%5D%2Cflow%3A%7Bstart%3A%5B'mousedown'%2C'touchstart'%5D%2Cend%3A%5B'mouseup'%2C'touchend'%5D%7D%2Cemits%3A%5B'down'%2C'up'%5D%2Cinfo%3A%7Bmovefn%3Anull%2Cupfn%3Anull%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Freset%3Afunction%20reset()%7BuntrackDocument(this.info)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fmousedown%3Afunction%20mousedown(e)%7Bif(!hasLeftMouseButton(e))%7Breturn%3B%7Dvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20self%3Dthis%3Bvar%20movefn%3Dfunction%20movefn(e)%7Bif(!hasLeftMouseButton(e))%7Bself._fire('up'%2Ct%2Ce)%3BuntrackDocument(self.info)%3B%7D%7D%3Bvar%20upfn%3Dfunction%20upfn(e)%7Bif(hasLeftMouseButton(e))%7Bself._fire('up'%2Ct%2Ce)%3B%7DuntrackDocument(self.info)%3B%7D%3BtrackDocument(this.info%2Cmovefn%2Cupfn)%3Bthis._fire('down'%2Ct%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchstart%3Afunction%20touchstart(e)%7Bthis._fire('down'%2CGestures._findOriginalTarget(e)%2Ce.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchend%3Afunction%20touchend(e)%7Bthis._fire('up'%2CGestures._findOriginalTarget(e)%2Ce.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%0A%20%20%20%20%20*%20%40param%20%7B!EventTarget%7D%20target%0A%20%20%20%20%20*%20%40param%20%7BEvent%7D%20event%0A%20%20%20%20%20*%20%40param%20%7BFunction%7D%20preventer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_fire%3Afunction%20_fire(type%2Ctarget%2Cevent%2Cpreventer)%7BGestures._fire(target%2Ctype%2C%7Bx%3Aevent.clientX%2Cy%3Aevent.clientY%2CsourceEvent%3Aevent%2Cpreventer%3Apreventer%2Cprevent%3Afunction%20prevent(e)%7Breturn%20Gestures.prevent(e)%3B%7D%7D)%3B%7D%7D)%3BGestures.register(%7Bname%3A'track'%2CtouchAction%3A'none'%2Cdeps%3A%5B'mousedown'%2C'touchstart'%2C'touchmove'%2C'touchend'%5D%2Cflow%3A%7Bstart%3A%5B'mousedown'%2C'touchstart'%5D%2Cend%3A%5B'mouseup'%2C'touchend'%5D%7D%2Cemits%3A%5B'track'%5D%2Cinfo%3A%7Bx%3A0%2Cy%3A0%2Cstate%3A'start'%2Cstarted%3Afalse%2Cmoves%3A%5B%5D%2C%2F**%20%40this%20%7BGestureRecognizer%7D%20*%2FaddMove%3Afunction%20addMove(move)%7Bif(this.moves.length%3ETRACK_LENGTH)%7Bthis.moves.shift()%3B%7Dthis.moves.push(move)%3B%7D%2Cmovefn%3Anull%2Cupfn%3Anull%2Cprevent%3Afalse%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Freset%3Afunction%20reset()%7Bthis.info.state%3D'start'%3Bthis.info.started%3Dfalse%3Bthis.info.moves%3D%5B%5D%3Bthis.info.x%3D0%3Bthis.info.y%3D0%3Bthis.info.prevent%3Dfalse%3BuntrackDocument(this.info)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20x%0A%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20y%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2FhasMovedEnough%3Afunction%20hasMovedEnough(x%2Cy)%7Bif(this.info.prevent)%7Breturn%20false%3B%7Dif(this.info.started)%7Breturn%20true%3B%7Dvar%20dx%3DMath.abs(this.info.x-x)%3Bvar%20dy%3DMath.abs(this.info.y-y)%3Breturn%20dx%3E%3DTRACK_DISTANCE%7C%7Cdy%3E%3DTRACK_DISTANCE%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fmousedown%3Afunction%20mousedown(e)%7Bif(!hasLeftMouseButton(e))%7Breturn%3B%7Dvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20self%3Dthis%3Bvar%20movefn%3Dfunction%20movefn(e)%7Bvar%20x%3De.clientX%2Cy%3De.clientY%3Bif(self.hasMovedEnough(x%2Cy))%7B%2F%2F%20first%20move%20is%20'start'%2C%20subsequent%20moves%20are%20'move'%2C%20mouseup%20is%20'end'%0Aself.info.state%3Dself.info.started%3Fe.type%3D%3D%3D'mouseup'%3F'end'%3A'track'%3A'start'%3Bif(self.info.state%3D%3D%3D'start')%7B%2F%2F%20if%20and%20only%20if%20tracking%2C%20always%20prevent%20tap%0AGestures.prevent('tap')%3B%7Dself.info.addMove(%7Bx%3Ax%2Cy%3Ay%7D)%3Bif(!hasLeftMouseButton(e))%7B%2F%2F%20always%20_fire%20%22end%22%0Aself.info.state%3D'end'%3BuntrackDocument(self.info)%3B%7Dself._fire(t%2Ce)%3Bself.info.started%3Dtrue%3B%7D%7D%3Bvar%20upfn%3Dfunction%20upfn(e)%7Bif(self.info.started)%7Bmovefn(e)%3B%7D%2F%2F%20remove%20the%20temporary%20listeners%0AuntrackDocument(self.info)%3B%7D%3B%2F%2F%20add%20temporary%20document%20listeners%20as%20mouse%20retargets%0AtrackDocument(this.info%2Cmovefn%2Cupfn)%3Bthis.info.x%3De.clientX%3Bthis.info.y%3De.clientY%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchstart%3Afunction%20touchstart(e)%7Bvar%20ct%3De.changedTouches%5B0%5D%3Bthis.info.x%3Dct.clientX%3Bthis.info.y%3Dct.clientY%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchmove%3Afunction%20touchmove(e)%7Bvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20ct%3De.changedTouches%5B0%5D%3Bvar%20x%3Dct.clientX%2Cy%3Dct.clientY%3Bif(this.hasMovedEnough(x%2Cy))%7Bif(this.info.state%3D%3D%3D'start')%7B%2F%2F%20if%20and%20only%20if%20tracking%2C%20always%20prevent%20tap%0AGestures.prevent('tap')%3B%7Dthis.info.addMove(%7Bx%3Ax%2Cy%3Ay%7D)%3Bthis._fire(t%2Cct)%3Bthis.info.state%3D'track'%3Bthis.info.started%3Dtrue%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchend%3Afunction%20touchend(e)%7Bvar%20t%3DGestures._findOriginalTarget(e)%3Bvar%20ct%3De.changedTouches%5B0%5D%3B%2F%2F%20only%20trackend%20if%20track%20was%20started%20and%20not%20aborted%0Aif(this.info.started)%7B%2F%2F%20reset%20started%20state%20on%20up%0Athis.info.state%3D'end'%3Bthis.info.addMove(%7Bx%3Act.clientX%2Cy%3Act.clientY%7D)%3Bthis._fire(t%2Cct%2Ce)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7B!EventTarget%7D%20target%0A%20%20%20%20%20*%20%40param%20%7BTouch%7D%20touch%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_fire%3Afunction%20_fire(target%2Ctouch)%7Bvar%20secondlast%3Dthis.info.moves%5Bthis.info.moves.length-2%5D%3Bvar%20lastmove%3Dthis.info.moves%5Bthis.info.moves.length-1%5D%3Bvar%20dx%3Dlastmove.x-this.info.x%3Bvar%20dy%3Dlastmove.y-this.info.y%3Bvar%20ddx%3Dvoid%200%2Cddy%3D0%3Bif(secondlast)%7Bddx%3Dlastmove.x-secondlast.x%3Bddy%3Dlastmove.y-secondlast.y%3B%7DGestures._fire(target%2C'track'%2C%7Bstate%3Athis.info.state%2Cx%3Atouch.clientX%2Cy%3Atouch.clientY%2Cdx%3Adx%2Cdy%3Ady%2Cddx%3Addx%2Cddy%3Addy%2CsourceEvent%3Atouch%2Chover%3Afunction%20hover()%7Breturn%20Gestures.deepTargetFind(touch.clientX%2Ctouch.clientY)%3B%7D%7D)%3B%7D%7D)%3BGestures.register(%7Bname%3A'tap'%2Cdeps%3A%5B'mousedown'%2C'click'%2C'touchstart'%2C'touchend'%5D%2Cflow%3A%7Bstart%3A%5B'mousedown'%2C'touchstart'%5D%2Cend%3A%5B'click'%2C'touchend'%5D%7D%2Cemits%3A%5B'tap'%5D%2Cinfo%3A%7Bx%3ANaN%2Cy%3ANaN%2Cprevent%3Afalse%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Freset%3Afunction%20reset()%7Bthis.info.x%3DNaN%3Bthis.info.y%3DNaN%3Bthis.info.prevent%3Dfalse%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fsave%3Afunction%20save(e)%7Bthis.info.x%3De.clientX%3Bthis.info.y%3De.clientY%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fmousedown%3Afunction%20mousedown(e)%7Bif(hasLeftMouseButton(e))%7Bthis.save(e)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BMouseEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fclick%3Afunction%20click(e)%7Bif(hasLeftMouseButton(e))%7Bthis.forward(e)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchstart%3Afunction%20touchstart(e)%7Bthis.save(e.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BTouchEvent%7D%20e%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Ftouchend%3Afunction%20touchend(e)%7Bthis.forward(e.changedTouches%5B0%5D%2Ce)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40this%20%7BGestureRecognizer%7D%0A%20%20%20%20%20*%20%40param%20%7BEvent%20%7C%20Touch%7D%20e%0A%20%20%20%20%20*%20%40param%20%7BEvent%3D%7D%20preventer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fforward%3Afunction%20forward(e%2Cpreventer)%7Bvar%20dx%3DMath.abs(e.clientX-this.info.x)%3Bvar%20dy%3DMath.abs(e.clientY-this.info.y)%3B%2F%2F%20find%20original%20target%20from%20%60preventer%60%20for%20TouchEvents%2C%20or%20%60e%60%20for%20MouseEvents%0Avar%20t%3DGestures._findOriginalTarget(%2F**%20%40type%20%7BEvent%7D%20*%2Fpreventer%7C%7Ce)%3Bif(!t%7C%7CcanBeDisabled%5B%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Ft.localName%5D%26%26t.hasAttribute('disabled'))%7Breturn%3B%7D%2F%2F%20dx%2Cdy%20can%20be%20NaN%20if%20%60click%60%20has%20been%20simulated%20and%20there%20was%20no%20%60down%60%20for%20%60start%60%0Aif(isNaN(dx)%7C%7CisNaN(dy)%7C%7Cdx%3C%3DTAP_DISTANCE%26%26dy%3C%3DTAP_DISTANCE%7C%7CisSyntheticClick(e))%7B%2F%2F%20prevent%20taps%20from%20being%20generated%20if%20an%20event%20has%20canceled%20them%0Aif(!this.info.prevent)%7BGestures._fire(t%2C'tap'%2C%7Bx%3Ae.clientX%2Cy%3Ae.clientY%2CsourceEvent%3Ae%2Cpreventer%3Apreventer%7D)%3B%7D%7D%7D%7D)%3B%2F*%20eslint-enable%20valid-jsdoc%20*%2F%2F**%20%40deprecated%20*%2FGestures.findOriginalTarget%3DGestures._findOriginalTarget%3B%2F**%20%40deprecated%20*%2FGestures.add%3DGestures.addListener%3B%2F**%20%40deprecated%20*%2FGestures.remove%3DGestures.removeListener%3BPolymer.Gestures%3DGestures%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fgestures.html.js%0A",
            "totalBytes": 26851,
            "wastedBytes": 12769,
            "wastedPercent": 47.55502588357976
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%20%40const%20%7B!AsyncInterface%7D%20*%2Fvar%20microtask%3DPolymer.Async.microTask%3B%2F**%0A%20%20%20%20%20*%20Element%20class%20mixin%20that%20provides%20basic%20meta-programming%20for%20creating%20one%0A%20%20%20%20%20*%20or%20more%20property%20accessors%20(getter%2Fsetter%20pair)%20that%20enqueue%20an%20async%0A%20%20%20%20%20*%20(batched)%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20For%20basic%20usage%20of%20this%20mixin%2C%20call%20%60MyClass.createProperties(props)%60%0A%20%20%20%20%20*%20once%20at%20class%20definition%20time%20to%20create%20property%20accessors%20for%20properties%0A%20%20%20%20%20*%20named%20in%20props%2C%20implement%20%60_propertiesChanged%60%20to%20react%20as%20desired%20to%0A%20%20%20%20%20*%20property%20changes%2C%20and%20implement%20%60static%20get%20observedAttributes()%60%20and%0A%20%20%20%20%20*%20include%20lowercase%20versions%20of%20any%20property%20names%20that%20should%20be%20set%20from%0A%20%20%20%20%20*%20attributes.%20Last%2C%20call%20%60this._enableProperties()%60%20in%20the%20element's%0A%20%20%20%20%20*%20%60connectedCallback%60%20to%20enable%20the%20accessors.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40mixinFunction%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40summary%20Element%20class%20mixin%20for%20reacting%20to%20property%20changes%20from%0A%20%20%20%20%20*%20%20%20generated%20property%20accessors.%0A%20%20%20%20%20*%2FPolymer.PropertiesChanged%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesChanged%7D%0A%20%20%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20%20%20*%2Fvar%20PropertiesChanged%3Dfunction(_superClass)%7B_inherits(PropertiesChanged%2C_superClass)%3B_createClass(PropertiesChanged%2C%5B%7Bkey%3A'_createPropertyAccessor'%2C%2F%2Feslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20setter%2Fgetter%20pair%20for%20the%20named%20property%20with%20its%20own%0A%20%20%20%20%20%20%20%20%20*%20local%20storage.%20%20The%20getter%20returns%20the%20value%20in%20the%20local%20storage%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20the%20setter%20calls%20%60_setProperty%60%2C%20which%20updates%20the%20local%20storage%0A%20%20%20%20%20%20%20%20%20*%20for%20the%20property%20and%20enqueues%20a%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20on%20a%20prototype%20or%20an%20instance.%20%20Calling%0A%20%20%20%20%20%20%20%20%20*%20this%20method%20may%20overwrite%20a%20property%20value%20that%20already%20exists%20on%0A%20%20%20%20%20%20%20%20%20*%20the%20prototype%2Finstance%20by%20creating%20the%20accessor.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20readOnly%20When%20true%2C%20no%20setter%20is%20created%3B%20the%0A%20%20%20%20%20%20%20%20%20*%20%20%20protected%20%60_setProperty%60%20function%20must%20be%20used%20to%20set%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_createPropertyAccessor(property%2CreadOnly)%7Bthis._addPropertyToAttributeMap(property)%3Bif(!this.hasOwnProperty('__dataHasAccessor'))%7Bthis.__dataHasAccessor%3DObject.assign(%7B%7D%2Cthis.__dataHasAccessor)%3B%7Dif(!this.__dataHasAccessor%5Bproperty%5D)%7Bthis.__dataHasAccessor%5Bproperty%5D%3Dtrue%3Bthis._definePropertyAccessor(property%2CreadOnly)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20the%20given%20%60property%60%20to%20a%20map%20matching%20attribute%20names%0A%20%20%20%20%20%20%20%20%20*%20to%20property%20names%2C%20using%20%60attributeNameForProperty%60.%20This%20map%20is%0A%20%20%20%20%20%20%20%20%20*%20used%20when%20deserializing%20attribute%20values%20to%20properties.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addPropertyToAttributeMap'%2Cvalue%3Afunction%20_addPropertyToAttributeMap(property)%7Bif(!this.hasOwnProperty('__dataAttributes'))%7Bthis.__dataAttributes%3DObject.assign(%7B%7D%2Cthis.__dataAttributes)%3B%7Dif(!this.__dataAttributes%5Bproperty%5D)%7Bvar%20attr%3Dthis.constructor.attributeNameForProperty(property)%3Bthis.__dataAttributes%5Battr%5D%3Dproperty%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20a%20property%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20readOnly%20When%20true%2C%20no%20setter%20is%20created%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_definePropertyAccessor'%2Cvalue%3Afunction%20_definePropertyAccessor(property%2CreadOnly)%7BObject.defineProperty(this%2Cproperty%2C%7B%2F*%20eslint-disable%20valid-jsdoc%20*%2F%2F**%20%40this%20%7BPropertiesChanged%7D%20*%2Fget%3Afunction%20get()%7Breturn%20this._getProperty(property)%3B%7D%2C%2F**%20%40this%20%7BPropertiesChanged%7D%20*%2Fset%3AreadOnly%3Ffunction()%7B%7D%3Afunction(value)%7Bthis._setProperty(property%2Cvalue)%3B%7D%2F*%20eslint-enable%20*%2F%7D)%3B%7D%7D%5D%2C%5B%7Bkey%3A'createProperties'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20property%20accessors%20for%20the%20given%20property%20names.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20props%20Object%20whose%20keys%20are%20names%20of%20accessors.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20createProperties(props)%7Bvar%20proto%3Dthis.prototype%3Bfor(var%20prop%20in%20props)%7B%2F%2F%20don't%20stomp%20an%20existing%20accessor%0Aif(!(prop%20in%20proto))%7Bproto._createPropertyAccessor(prop)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20an%20attribute%20name%20that%20corresponds%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20The%20attribute%20name%20is%20the%20lowercased%20property%20name.%20Override%20to%0A%20%20%20%20%20%20%20%20%20*%20customize%20this%20mapping.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20to%20convert%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Attribute%20name%20corresponding%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeNameForProperty'%2Cvalue%3Afunction%20attributeNameForProperty(property)%7Breturn%20property.toLowerCase()%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Override%20point%20to%20provide%20a%20type%20to%20which%20to%20deserialize%20a%20value%20to%0A%20%20%20%20%20%20%20%20%20*%20a%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20property%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'typeForProperty'%2Cvalue%3Afunction%20typeForProperty(name)%7B%7D%7D%5D)%3Bfunction%20PropertiesChanged()%7B_classCallCheck(this%2CPropertiesChanged)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(PropertiesChanged.__proto__%7C%7CObject.getPrototypeOf(PropertiesChanged)).call(this))%3B_this.__dataEnabled%3Dfalse%3B_this.__dataReady%3Dfalse%3B_this.__dataInvalid%3Dfalse%3B_this.__data%3D%7B%7D%3B_this.__dataPending%3Dnull%3B_this.__dataOld%3Dnull%3B_this.__dataInstanceProps%3Dnull%3B_this.__serializing%3Dfalse%3B_this._initializeProperties()%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Lifecycle%20callback%20called%20when%20properties%20are%20enabled%20via%0A%20%20%20%20%20%20%20%20%20*%20%60_enableProperties%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20function%20to%20implement%20behavior%20that%20is%0A%20%20%20%20%20%20%20%20%20*%20dependent%20on%20the%20element%20having%20its%20property%20data%20initialized%2C%20e.g.%0A%20%20%20%20%20%20%20%20%20*%20from%20defaults%20(initialized%20from%20%60constructor%60%2C%20%60_initializeProperties%60)%2C%0A%20%20%20%20%20%20%20%20%20*%20%60attributeChangedCallback%60%2C%20or%20values%20propagated%20from%20host%20e.g.%20via%0A%20%20%20%20%20%20%20%20%20*%20bindings.%20%20%60super.ready()%60%20must%20be%20called%20to%20ensure%20the%20data%20system%0A%20%20%20%20%20%20%20%20%20*%20becomes%20enabled.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F_createClass(PropertiesChanged%2C%5B%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7Bthis.__dataReady%3Dtrue%3Bthis._flushProperties()%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Initializes%20the%20local%20storage%20for%20property%20accessors.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Provided%20as%20an%20override%20point%20for%20performing%20any%20setup%20work%20prior%0A%20%20%20%20%20%20%20%20%20*%20to%20initializing%20the%20property%20accessor%20system.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProperties'%2Cvalue%3Afunction%20_initializeProperties()%7B%2F%2F%20Capture%20instance%20properties%3B%20these%20will%20be%20set%20into%20accessors%0A%2F%2F%20during%20first%20flush.%20Don't%20set%20them%20here%2C%20since%20we%20want%0A%2F%2F%20these%20to%20overwrite%20defaults%2Fconstructor%20assignments%0Afor(var%20p%20in%20this.__dataHasAccessor)%7Bif(this.hasOwnProperty(p))%7Bthis.__dataInstanceProps%3Dthis.__dataInstanceProps%7C%7C%7B%7D%3Bthis.__dataInstanceProps%5Bp%5D%3Dthis%5Bp%5D%3Bdelete%20this%5Bp%5D%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20ready%20time%20with%20bag%20of%20instance%20properties%20that%20overwrote%0A%20%20%20%20%20%20%20%20%20*%20accessors%20when%20the%20element%20upgraded.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20default%20implementation%20sets%20these%20properties%20back%20into%20the%0A%20%20%20%20%20%20%20%20%20*%20setter%20at%20ready%20time.%20%20This%20method%20is%20provided%20as%20an%20override%0A%20%20%20%20%20%20%20%20%20*%20point%20for%20customizing%20or%20providing%20more%20efficient%20initialization.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20property%20values%20that%20were%20overwritten%0A%20%20%20%20%20%20%20%20%20*%20%20%20when%20creating%20property%20accessors.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeInstanceProperties'%2Cvalue%3Afunction%20_initializeInstanceProperties(props)%7BObject.assign(this%2Cprops)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20local%20storage%20for%20a%20property%20(via%20%60_setPendingProperty%60)%0A%20%20%20%20%20%20%20%20%20*%20and%20enqueues%20a%20%60_proeprtiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setProperty'%2Cvalue%3Afunction%20_setProperty(property%2Cvalue)%7Bif(this._setPendingProperty(property%2Cvalue))%7Bthis._invalidateProperties()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20the%20value%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20for%20the%20given%20property%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_getProperty'%2Cvalue%3Afunction%20_getProperty(property)%7Breturn%20this.__data%5Bproperty%5D%3B%7D%2F*%20eslint-disable%20no-unused-vars%20*%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20local%20storage%20for%20a%20property%2C%20records%20the%20previous%20value%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20adds%20it%20to%20the%20set%20of%20%22pending%20changes%22%20that%20will%20be%20passed%20to%20the%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20callback.%20%20This%20method%20does%20not%20enqueue%20the%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20ext%20Not%20used%20here%3B%20affordance%20for%20closure%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%20changed%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_setPendingProperty'%2Cvalue%3Afunction%20_setPendingProperty(property%2Cvalue%2Cext)%7Bvar%20old%3Dthis.__data%5Bproperty%5D%3Bvar%20changed%3Dthis._shouldPropertyChange(property%2Cvalue%2Cold)%3Bif(changed)%7Bif(!this.__dataPending)%7Bthis.__dataPending%3D%7B%7D%3Bthis.__dataOld%3D%7B%7D%3B%7D%2F%2F%20Ensure%20old%20is%20captured%20from%20the%20last%20turn%0Aif(this.__dataOld%26%26!(property%20in%20this.__dataOld))%7Bthis.__dataOld%5Bproperty%5D%3Dold%3B%7Dthis.__data%5Bproperty%5D%3Dvalue%3Bthis.__dataPending%5Bproperty%5D%3Dvalue%3B%7Dreturn%20changed%3B%7D%2F*%20eslint-enable%20*%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Marks%20the%20properties%20as%20invalid%2C%20and%20enqueues%20an%20async%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_invalidateProperties'%2Cvalue%3Afunction%20_invalidateProperties()%7Bvar%20_this2%3Dthis%3Bif(!this.__dataInvalid%26%26this.__dataReady)%7Bthis.__dataInvalid%3Dtrue%3Bmicrotask.run(function()%7Bif(_this2.__dataInvalid)%7B_this2.__dataInvalid%3Dfalse%3B_this2._flushProperties()%3B%7D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Call%20to%20enable%20property%20accessor%20processing.%20Before%20this%20method%20is%0A%20%20%20%20%20%20%20%20%20*%20called%20accessor%20values%20will%20be%20set%20but%20side%20effects%20are%0A%20%20%20%20%20%20%20%20%20*%20queued.%20When%20called%2C%20any%20pending%20side%20effects%20occur%20immediately.%0A%20%20%20%20%20%20%20%20%20*%20For%20elements%2C%20generally%20%60connectedCallback%60%20is%20a%20normal%20spot%20to%20do%20so.%0A%20%20%20%20%20%20%20%20%20*%20It%20is%20safe%20to%20call%20this%20method%20multiple%20times%20as%20it%20only%20turns%20on%0A%20%20%20%20%20%20%20%20%20*%20property%20accessors%20once.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_enableProperties'%2Cvalue%3Afunction%20_enableProperties()%7Bif(!this.__dataEnabled)%7Bthis.__dataEnabled%3Dtrue%3Bif(this.__dataInstanceProps)%7Bthis._initializeInstanceProperties(this.__dataInstanceProps)%3Bthis.__dataInstanceProps%3Dnull%3B%7Dthis.ready()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Calls%20the%20%60_propertiesChanged%60%20callback%20with%20the%20current%20set%20of%0A%20%20%20%20%20%20%20%20%20*%20pending%20changes%20(and%20old%20values%20recorded%20when%20pending%20changes%20were%0A%20%20%20%20%20%20%20%20%20*%20set)%2C%20and%20resets%20the%20pending%20set%20of%20changes.%20Generally%2C%20this%20method%0A%20%20%20%20%20%20%20%20%20*%20should%20not%20be%20called%20in%20user%20code.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_flushProperties'%2Cvalue%3Afunction%20_flushProperties()%7Bvar%20props%3Dthis.__data%3Bvar%20changedProps%3Dthis.__dataPending%3Bvar%20old%3Dthis.__dataOld%3Bif(this._shouldPropertiesChange(props%2CchangedProps%2Cold))%7Bthis.__dataPending%3Dnull%3Bthis.__dataOld%3Dnull%3Bthis._propertiesChanged(props%2CchangedProps%2Cold)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20in%20%60_flushProperties%60%20to%20determine%20if%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20should%20be%20called.%20The%20default%20implementation%20returns%20true%20if%0A%20%20%20%20%20%20%20%20%20*%20properties%20are%20pending.%20Override%20to%20customize%20when%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20is%20called.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20true%20if%20changedProps%20is%20truthy%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_shouldPropertiesChange'%2Cvalue%3Afunction%20_shouldPropertiesChange(currentProps%2CchangedProps%2ColdProps)%7B%2F%2F%20eslint-disable-line%20no-unused-vars%0Areturn%20Boolean(changedProps)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Callback%20called%20when%20any%20properties%20with%20accessors%20created%20via%0A%20%20%20%20%20%20%20%20%20*%20%60_createPropertyAccessor%60%20have%20been%20set.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propertiesChanged'%2Cvalue%3Afunction%20_propertiesChanged(currentProps%2CchangedProps%2ColdProps)%7B%7D%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Method%20called%20to%20determine%20whether%20a%20property%20value%20should%20be%0A%20%20%20%20%20%20%20%20%20*%20considered%20as%20a%20change%20and%20cause%20the%20%60_propertiesChanged%60%20callback%0A%20%20%20%20%20%20%20%20%20*%20to%20be%20enqueued.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20default%20implementation%20returns%20%60true%60%20if%20a%20strict%20equality%0A%20%20%20%20%20%20%20%20%20*%20check%20fails.%20The%20method%20always%20returns%20false%20for%20%60NaN%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Override%20this%20method%20to%20e.g.%20provide%20stricter%20checking%20for%0A%20%20%20%20%20%20%20%20%20*%20Objects%2FArrays%20when%20using%20immutable%20patterns.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20%20%20%20%20*%20%20%20and%20enqueue%20a%20%60_proeprtiesChanged%60%20callback%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_shouldPropertyChange'%2Cvalue%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn(%2F%2F%20Strict%20equality%20check%0Aold!%3D%3Dvalue%26%26(%2F%2F%20This%20ensures%20(old%3D%3DNaN%2C%20value%3D%3DNaN)%20always%20returns%20false%0Aold%3D%3D%3Dold%7C%7Cvalue%3D%3D%3Dvalue))%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Implements%20native%20Custom%20Elements%20%60attributeChangedCallback%60%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20an%20attribute%20value%20to%20a%20property%20via%20%60_attributeToProperty%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute%20that%20changed%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20New%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20namespace%20Attribute%20namespace.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChangedCallback'%2Cvalue%3Afunction%20attributeChangedCallback(name%2Cold%2Cvalue%2Cnamespace)%7Bif(old!%3D%3Dvalue)%7Bthis._attributeToProperty(name%2Cvalue)%3B%7Dif(_get(PropertiesChanged.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesChanged.prototype)%2C'attributeChangedCallback'%2Cthis))%7B_get(PropertiesChanged.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesChanged.prototype)%2C'attributeChangedCallback'%2Cthis).call(this%2Cname%2Cold%2Cvalue%2Cnamespace)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Deserializes%20an%20attribute%20to%20its%20associated%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20calls%20the%20%60_deserializeValue%60%20method%20to%20convert%20the%20string%20to%0A%20%20%20%20%20%20%20%20%20*%20a%20typed%20value.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Name%20of%20attribute%20to%20deserialize.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20of%20the%20attribute.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20type%20type%20to%20deserialize%20to%2C%20defaults%20to%20the%20value%0A%20%20%20%20%20%20%20%20%20*%20returned%20from%20%60typeForProperty%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_attributeToProperty'%2Cvalue%3Afunction%20_attributeToProperty(attribute%2Cvalue%2Ctype)%7Bif(!this.__serializing)%7Bvar%20map%3Dthis.__dataAttributes%3Bvar%20property%3Dmap%26%26map%5Battribute%5D%7C%7Cattribute%3Bthis%5Bproperty%5D%3Dthis._deserializeValue(value%2Ctype%7C%7Cthis.constructor.typeForProperty(property))%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Serializes%20a%20property%20to%20its%20associated%20attribute.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20Closure%20can't%20figure%20out%20%60this%60%20is%20an%20element.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%20to%20reflect.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20attribute%20Attribute%20name%20to%20reflect%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Property%20value%20to%20refect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_propertyToAttribute'%2Cvalue%3Afunction%20_propertyToAttribute(property%2Cattribute%2Cvalue)%7Bthis.__serializing%3Dtrue%3Bvalue%3Darguments.length%3C3%3Fthis%5Bproperty%5D%3Avalue%3Bthis._valueToNodeAttribute(%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis%2Cvalue%2Cattribute%7C%7Cthis.constructor.attributeNameForProperty(property))%3Bthis.__serializing%3Dfalse%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20a%20typed%20value%20to%20an%20HTML%20attribute%20on%20a%20node.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20calls%20the%20%60_serializeValue%60%20method%20to%20convert%20the%20typed%0A%20%20%20%20%20%20%20%20%20*%20value%20to%20a%20string.%20%20If%20the%20%60_serializeValue%60%20method%20returns%20%60undefined%60%2C%0A%20%20%20%20%20%20%20%20%20*%20the%20attribute%20will%20be%20removed%20(this%20is%20the%20default%20for%20boolean%0A%20%20%20%20%20%20%20%20%20*%20type%20%60false%60).%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Element%20to%20set%20attribute%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20serialize.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Attribute%20name%20to%20serialize%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_valueToNodeAttribute'%2Cvalue%3Afunction%20_valueToNodeAttribute(node%2Cvalue%2Cattribute)%7Bvar%20str%3Dthis._serializeValue(value)%3Bif(str%3D%3D%3Dundefined)%7Bnode.removeAttribute(attribute)%3B%7Delse%7Bnode.setAttribute(attribute%2Cstr)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Converts%20a%20typed%20JavaScript%20value%20to%20a%20string.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20is%20called%20when%20setting%20JS%20property%20values%20to%0A%20%20%20%20%20%20%20%20%20*%20HTML%20attributes.%20%20Users%20may%20override%20this%20method%20to%20provide%0A%20%20%20%20%20%20%20%20%20*%20serialization%20for%20custom%20types.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Property%20value%20to%20serialize.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20String%20serialized%20from%20the%20provided%0A%20%20%20%20%20%20%20%20%20*%20property%20%20value.%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_serializeValue'%2Cvalue%3Afunction%20_serializeValue(value)%7Bswitch(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%7Bcase'boolean'%3Areturn%20value%3F''%3Aundefined%3Bdefault%3Areturn%20value!%3Dnull%3Fvalue.toString()%3Aundefined%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Converts%20a%20string%20to%20a%20typed%20JavaScript%20value.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20is%20called%20when%20reading%20HTML%20attribute%20values%20to%0A%20%20%20%20%20%20%20%20%20*%20JS%20properties.%20%20Users%20may%20override%20this%20method%20to%20provide%0A%20%20%20%20%20%20%20%20%20*%20deserialization%20for%20custom%20%60type%60s.%20Types%20for%20%60Boolean%60%2C%20%60String%60%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20%60Number%60%20convert%20attributes%20to%20the%20expected%20types.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Value%20to%20deserialize.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20type%20Type%20to%20deserialize%20the%20string%20to.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Typed%20value%20deserialized%20from%20the%20provided%20string.%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_deserializeValue'%2Cvalue%3Afunction%20_deserializeValue(value%2Ctype)%7Bswitch(type)%7Bcase%20Boolean%3Areturn%20value!%3D%3Dnull%3Bcase%20Number%3Areturn%20Number(value)%3Bdefault%3Areturn%20value%3B%7D%7D%7D%5D)%3Breturn%20PropertiesChanged%3B%7D(superClass)%3Breturn%20PropertiesChanged%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperties-changed.html.js%0A",
            "totalBytes": 20501,
            "wastedBytes": 12611,
            "wastedPercent": 61.51407248426906
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20walker%3Ddocument.createTreeWalker(document%2CNodeFilter.SHOW_ALL%2Cnull%2Cfalse)%3B%2F%2F%201.x%20backwards-compatible%20auto-wrapper%20for%20template%20type%20extensions%0A%2F%2F%20This%20is%20a%20clear%20layering%20violation%20and%20gives%20favored-nation%20status%20to%0A%2F%2F%20dom-if%20and%20dom-repeat%20templates.%20%20This%20is%20a%20conceit%20we're%20choosing%20to%20keep%0A%2F%2F%20a.)%20to%20ease%201.x%20backwards-compatibility%20due%20to%20loss%20of%20%60is%60%2C%20and%0A%2F%2F%20b.)%20to%20maintain%20if%2Frepeat%20capability%20in%20parser-constrained%20elements%0A%2F%2F%20%20%20%20%20(e.g.%20table%2C%20select)%20in%20lieu%20of%20native%20CE%20type%20extensions%20without%0A%2F%2F%20%20%20%20%20massive%20new%20invention%20in%20this%20space%20(e.g.%20directive%20system)%0Avar%20templateExtensions%3D%7B'dom-if'%3Atrue%2C'dom-repeat'%3Atrue%7D%3Bfunction%20wrapTemplateExtension(node)%7Bvar%20is%3Dnode.getAttribute('is')%3Bif(is%26%26templateExtensions%5Bis%5D)%7Bvar%20t%3Dnode%3Bt.removeAttribute('is')%3Bnode%3Dt.ownerDocument.createElement(is)%3Bt.parentNode.replaceChild(node%2Ct)%3Bnode.appendChild(t)%3Bwhile(t.attributes.length)%7Bnode.setAttribute(t.attributes%5B0%5D.name%2Ct.attributes%5B0%5D.value)%3Bt.removeAttribute(t.attributes%5B0%5D.name)%3B%7D%7Dreturn%20node%3B%7Dfunction%20findTemplateNode(root%2CnodeInfo)%7B%2F%2F%20recursively%20ascend%20tree%20until%20we%20hit%20root%0Avar%20parent%3DnodeInfo.parentInfo%26%26findTemplateNode(root%2CnodeInfo.parentInfo)%3B%2F%2F%20unwind%20the%20stack%2C%20returning%20the%20indexed%20node%20at%20each%20level%0Aif(parent)%7B%2F%2F%20note%3A%20marginally%20faster%20than%20indexing%20via%20childNodes%0A%2F%2F%20(http%3A%2F%2Fjsperf.com%2Fchildnodes-lookup)%0Awalker.currentNode%3Dparent%3Bfor(var%20n%3Dwalker.firstChild()%2Ci%3D0%3Bn%3Bn%3Dwalker.nextSibling())%7Bif(nodeInfo.parentIndex%3D%3D%3Di%2B%2B)%7Breturn%20n%3B%7D%7D%7Delse%7Breturn%20root%3B%7D%7D%2F%2F%20construct%20%60%24%60%20map%20(from%20id%20annotations)%0Afunction%20applyIdToMap(inst%2Cmap%2Cnode%2CnodeInfo)%7Bif(nodeInfo.id)%7Bmap%5BnodeInfo.id%5D%3Dnode%3B%7D%7D%2F%2F%20install%20event%20listeners%20(from%20event%20annotations)%0Afunction%20applyEventListener(inst%2Cnode%2CnodeInfo)%7Bif(nodeInfo.events%26%26nodeInfo.events.length)%7Bfor(var%20j%3D0%2Ce%24%3DnodeInfo.events%2Ce%3Bj%3Ce%24.length%26%26(e%3De%24%5Bj%5D)%3Bj%2B%2B)%7Binst._addMethodEventListenerToNode(node%2Ce.name%2Ce.value%2Cinst)%3B%7D%7D%7D%2F%2F%20push%20configuration%20references%20at%20configure%20time%0Afunction%20applyTemplateContent(inst%2Cnode%2CnodeInfo)%7Bif(nodeInfo.templateInfo)%7Bnode._templateInfo%3DnodeInfo.templateInfo%3B%7D%7Dfunction%20createNodeEventHandler(context%2CeventName%2CmethodName)%7B%2F%2F%20Instances%20can%20optionally%20have%20a%20_methodHost%20which%20allows%20redirecting%20where%0A%2F%2F%20to%20find%20methods.%20Currently%20used%20by%20%60templatize%60.%0Acontext%3Dcontext._methodHost%7C%7Ccontext%3Bvar%20handler%3Dfunction%20handler(e)%7Bif(context%5BmethodName%5D)%7Bcontext%5BmethodName%5D(e%2Ce.detail)%3B%7Delse%7Bconsole.warn('listener%20method%20%60'%2BmethodName%2B'%60%20not%20defined')%3B%7D%7D%3Breturn%20handler%3B%7D%2F**%0A%20%20%20*%20Element%20mixin%20that%20provides%20basic%20template%20parsing%20and%20stamping%2C%20including%0A%20%20%20*%20the%20following%20template-related%20features%20for%20stamped%20templates%3A%0A%20%20%20*%0A%20%20%20*%20-%20Declarative%20event%20listeners%20(%60on-eventname%3D%22listener%22%60)%0A%20%20%20*%20-%20Map%20of%20node%20id's%20to%20stamped%20node%20instances%20(%60this.%24.id%60)%0A%20%20%20*%20-%20Nested%20template%20content%20caching%2Fremoval%20and%20re-installation%20(performance%0A%20%20%20*%20%20%20optimization)%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20basic%20template%20parsing%20and%20stamping%0A%20%20%20*%2FPolymer.TemplateStamp%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_TemplateStamp%7D%0A%20%20%20%20%20*%2Fvar%20TemplateStamp%3Dfunction(_superClass)%7B_inherits(TemplateStamp%2C_superClass)%3Bfunction%20TemplateStamp()%7B_classCallCheck(this%2CTemplateStamp)%3Breturn%20_possibleConstructorReturn(this%2C(TemplateStamp.__proto__%7C%7CObject.getPrototypeOf(TemplateStamp)).apply(this%2Carguments))%3B%7D_createClass(TemplateStamp%2C%5B%7Bkey%3A'_stampTemplate'%2C%2F**%0A%20%20%20%20%20%20%20*%20Clones%20the%20provided%20template%20content%20and%20returns%20a%20document%20fragment%0A%20%20%20%20%20%20%20*%20containing%20the%20cloned%20dom.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20template%20is%20parsed%20(once%20and%20memoized)%20using%20this%20library's%0A%20%20%20%20%20%20%20*%20template%20parsing%20features%2C%20and%20provides%20the%20following%20value-added%0A%20%20%20%20%20%20%20*%20features%3A%0A%20%20%20%20%20%20%20*%20*%20Adds%20declarative%20event%20listeners%20for%20%60on-event%3D%22handler%22%60%20attributes%0A%20%20%20%20%20%20%20*%20*%20Generates%20an%20%22id%20map%22%20for%20all%20nodes%20with%20id's%20under%20%60%24%60%20on%20returned%0A%20%20%20%20%20%20%20*%20%20%20document%20fragment%0A%20%20%20%20%20%20%20*%20*%20Passes%20template%20info%20including%20%60content%60%20back%20to%20templates%20as%0A%20%20%20%20%20%20%20*%20%20%20%60_templateInfo%60%20(a%20performance%20optimization%20to%20avoid%20deep%20template%0A%20%20%20%20%20%20%20*%20%20%20cloning)%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20the%20memoized%20template%20parsing%20process%20is%20destructive%20to%20the%0A%20%20%20%20%20%20%20*%20template%3A%20attributes%20for%20bindings%20and%20declarative%20event%20listeners%20are%0A%20%20%20%20%20%20%20*%20removed%20after%20being%20noted%20in%20notes%2C%20and%20any%20nested%20%60%3Ctemplate%3E.content%60%0A%20%20%20%20%20%20%20*%20is%20removed%20and%20stored%20in%20notes%20as%20well.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20stamp%0A%20%20%20%20%20%20%20*%20%40return%20%7B!StampedTemplate%7D%20Cloned%20template%20content%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_stampTemplate(template)%7B%2F%2F%20Polyfill%20support%3A%20bootstrap%20the%20template%20if%20it%20has%20not%20already%20been%0Aif(template%26%26!template.content%26%26window.HTMLTemplateElement%26%26HTMLTemplateElement.decorate)%7BHTMLTemplateElement.decorate(template)%3B%7Dvar%20templateInfo%3Dthis.constructor._parseTemplate(template)%3Bvar%20nodeInfo%3DtemplateInfo.nodeInfoList%3Bvar%20content%3DtemplateInfo.content%7C%7Ctemplate.content%3Bvar%20dom%3D%2F**%20%40type%20%7BDocumentFragment%7D%20*%2Fdocument.importNode(content%2Ctrue)%3B%2F%2F%20NOTE%3A%20ShadyDom%20optimization%20indicating%20there%20is%20an%20insertion%20point%0Adom.__noInsertionPoint%3D!templateInfo.hasInsertionPoint%3Bvar%20nodes%3Ddom.nodeList%3Dnew%20Array(nodeInfo.length)%3Bdom.%24%3D%7B%7D%3Bfor(var%20i%3D0%2Cl%3DnodeInfo.length%2Cinfo%3Bi%3Cl%26%26(info%3DnodeInfo%5Bi%5D)%3Bi%2B%2B)%7Bvar%20node%3Dnodes%5Bi%5D%3DfindTemplateNode(dom%2Cinfo)%3BapplyIdToMap(this%2Cdom.%24%2Cnode%2Cinfo)%3BapplyTemplateContent(this%2Cnode%2Cinfo)%3BapplyEventListener(this%2Cnode%2Cinfo)%3B%7Ddom%3D%2F**%20%40type%20%7B!StampedTemplate%7D%20*%2Fdom%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Areturn%20dom%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Adds%20an%20event%20listener%20by%20method%20name%20for%20the%20event%20provided.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20generates%20a%20handler%20function%20that%20looks%20up%20the%20method%0A%20%20%20%20%20%20%20*%20name%20at%20handling%20time.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20listener%20on%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20methodName%20Name%20of%20method%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20context%20Context%20the%20method%20will%20be%20called%20on%20(defaults%0A%20%20%20%20%20%20%20*%20%20%20to%20%60node%60)%0A%20%20%20%20%20%20%20*%20%40return%20%7BFunction%7D%20Generated%20handler%20function%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addMethodEventListenerToNode'%2Cvalue%3Afunction%20_addMethodEventListenerToNode(node%2CeventName%2CmethodName%2Ccontext)%7Bcontext%3Dcontext%7C%7Cnode%3Bvar%20handler%3DcreateNodeEventHandler(context%2CeventName%2CmethodName)%3Bthis._addEventListenerToNode(node%2CeventName%2Chandler)%3Breturn%20handler%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20point%20for%20adding%20custom%20or%20simulated%20event%20handling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20add%20event%20listener%20to%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20add%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_addEventListenerToNode'%2Cvalue%3Afunction%20_addEventListenerToNode(node%2CeventName%2Chandler)%7Bnode.addEventListener(eventName%2Chandler)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Override%20point%20for%20adding%20custom%20or%20simulated%20event%20handling.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20remove%20event%20listener%20from%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20Name%20of%20event%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!Event)%3Avoid%7D%20handler%20Listener%20function%20to%20remove%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_removeEventListenerFromNode'%2Cvalue%3Afunction%20_removeEventListenerFromNode(node%2CeventName%2Chandler)%7Bnode.removeEventListener(eventName%2Chandler)%3B%7D%7D%5D%2C%5B%7Bkey%3A'_parseTemplate'%2C%2F**%0A%20%20%20%20%20%20%20*%20Scans%20a%20template%20to%20produce%20template%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Template-specific%20metadata%20are%20stored%20in%20the%20object%20returned%2C%20and%20node-%0A%20%20%20%20%20%20%20*%20specific%20metadata%20are%20stored%20in%20objects%20in%20its%20flattened%20%60nodeInfoList%60%0A%20%20%20%20%20%20%20*%20array.%20%20Only%20nodes%20in%20the%20template%20that%20were%20parsed%20as%20nodes%20of%0A%20%20%20%20%20%20%20*%20interest%20contain%20an%20object%20in%20%60nodeInfoList%60.%20%20Each%20%60nodeInfo%60%20object%0A%20%20%20%20%20%20%20*%20contains%20an%20%60index%60%20(%60childNodes%60%20index%20in%20parent)%20and%20optionally%0A%20%20%20%20%20%20%20*%20%60parent%60%2C%20which%20points%20to%20node%20info%20of%20its%20parent%20(including%20its%20index).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20template%20metadata%20object%20returned%20from%20this%20method%20has%20the%20following%0A%20%20%20%20%20%20%20*%20structure%20(many%20fields%20optional)%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60%60%60js%0A%20%20%20%20%20%20%20*%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Flattened%20list%20of%20node%20metadata%20(for%20nodes%20that%20generated%20metadata)%0A%20%20%20%20%20%20%20*%20%20%20%20%20nodeInfoList%3A%20%5B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20%60id%60%20attribute%20for%20any%20nodes%20with%20id's%20for%20generating%20%60%24%60%20map%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20id%3A%20%7Bstring%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20%60on-event%3D%22handler%22%60%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20events%3A%20%5B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20name%3A%20%7Bstring%7D%2C%20%20%20%2F%2F%20event%20name%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%7Bstring%7D%2C%20%20%2F%2F%20handler%20method%20name%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20...%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20Notes%20when%20the%20template%20contained%20a%20%60%3Cslot%3E%60%20for%20shady%20DOM%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20optimization%20purposes%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20hasInsertionPoint%3A%20%7Bboolean%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20For%20nested%20%60%3Ctemplate%3E%60%60%20nodes%2C%20nested%20template%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20templateInfo%3A%20%7Bobject%7D%2C%20%2F%2F%20nested%20template%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20Metadata%20to%20allow%20efficient%20retrieval%20of%20instanced%20node%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%2F%2F%20corresponding%20to%20this%20metadata%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20parentInfo%3A%20%7Bnumber%7D%2C%20%20%20%2F%2F%20reference%20to%20parent%20nodeInfo%3E%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20parentIndex%3A%20%7Bnumber%7D%2C%20%20%2F%2F%20index%20in%20parent's%20%60childNodes%60%20collection%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20infoIndex%3A%20%7Bnumber%7D%2C%20%20%20%20%2F%2F%20index%20of%20this%20%60nodeInfo%60%20in%20%60templateInfo.nodeInfoList%60%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20...%0A%20%20%20%20%20%20%20*%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20When%20true%2C%20the%20template%20had%20the%20%60strip-whitespace%60%20attribute%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20or%20was%20nested%20in%20a%20template%20with%20that%20setting%0A%20%20%20%20%20%20%20*%20%20%20%20%20stripWhitespace%3A%20%7Bboolean%7D%2C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20For%20nested%20templates%2C%20nested%20template%20content%20is%20moved%20into%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20a%20document%20fragment%20stored%20here%3B%20this%20is%20an%20optimization%20to%0A%20%20%20%20%20%20%20*%20%20%20%20%20%2F%2F%20avoid%20the%20cost%20of%20nested%20template%20cloning%0A%20%20%20%20%20%20%20*%20%20%20%20%20content%3A%20%7BDocumentFragment%7D%0A%20%20%20%20%20%20%20*%20%20%20%7D%0A%20%20%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20kicks%20off%20a%20recursive%20treewalk%20as%20follows%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20%20%20*%20%20%20%20_parseTemplate%20%3C---------------------%2B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20_parseTemplateContent%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20_parseTemplateNode%20%20%3C------------%7C--%2B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20_parseTemplateNestedTemplate%20--%2B%20%20%7C%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20_parseTemplateChildNodes%20---------%2B%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20_parseTemplateNodeAttributes%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20_parseTemplateNodeAttribute%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20These%20methods%20may%20be%20overridden%20to%20add%20custom%20metadata%20about%20templates%0A%20%20%20%20%20%20%20*%20to%20either%20%60templateInfo%60%20or%20%60nodeInfo%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20this%20method%20may%20be%20destructive%20to%20the%20template%2C%20in%20that%0A%20%20%20%20%20%20%20*%20e.g.%20event%20annotations%20may%20be%20removed%20after%20being%20noted%20in%20the%0A%20%20%20%20%20%20%20*%20template%20metadata.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%3D%7D%20outerTemplateInfo%20Template%20metadata%20from%20the%20outer%0A%20%20%20%20%20%20%20*%20%20%20template%2C%20for%20parsing%20nested%20templates%0A%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Parsed%20template%20metadata%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_parseTemplate(template%2CouterTemplateInfo)%7B%2F%2F%20since%20a%20template%20may%20be%20re-used%2C%20memo-ize%20metadata%0Aif(!template._templateInfo)%7Bvar%20templateInfo%3Dtemplate._templateInfo%3D%7B%7D%3BtemplateInfo.nodeInfoList%3D%5B%5D%3BtemplateInfo.stripWhiteSpace%3DPolymer.legacyOptimizations%7C%7CouterTemplateInfo%26%26outerTemplateInfo.stripWhiteSpace%7C%7Ctemplate.hasAttribute('strip-whitespace')%3Bthis._parseTemplateContent(template%2CtemplateInfo%2C%7Bparent%3Anull%7D)%3B%7Dreturn%20template._templateInfo%3B%7D%7D%2C%7Bkey%3A'_parseTemplateContent'%2Cvalue%3Afunction%20_parseTemplateContent(template%2CtemplateInfo%2CnodeInfo)%7Breturn%20this._parseTemplateNode(template.content%2CtemplateInfo%2CnodeInfo)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20node%20and%20adds%20template%20and%20node%20metadata%20based%20on%0A%20%20%20%20%20%20%20*%20the%20current%20node%2C%20and%20its%20%60childNodes%60%20and%20%60attributes%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20may%20be%20overridden%20to%20add%20custom%20node%20or%20template%20specific%0A%20%20%20%20%20%20%20*%20metadata%20based%20on%20this%20node.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7B!TemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNode'%2Cvalue%3Afunction%20_parseTemplateNode(node%2CtemplateInfo%2CnodeInfo)%7Bvar%20noted%3Dvoid%200%3Bvar%20element%3D%2F**%20%40type%20%7BElement%7D%20*%2Fnode%3Bif(element.localName%3D%3D'template'%26%26!element.hasAttribute('preserve-content'))%7Bnoted%3Dthis._parseTemplateNestedTemplate(element%2CtemplateInfo%2CnodeInfo)%7C%7Cnoted%3B%7Delse%20if(element.localName%3D%3D%3D'slot')%7B%2F%2F%20For%20ShadyDom%20optimization%2C%20indicating%20there%20is%20an%20insertion%20point%0AtemplateInfo.hasInsertionPoint%3Dtrue%3B%7Dwalker.currentNode%3Delement%3Bif(walker.firstChild())%7Bnoted%3Dthis._parseTemplateChildNodes(element%2CtemplateInfo%2CnodeInfo)%7C%7Cnoted%3B%7Dif(element.hasAttributes%26%26element.hasAttributes())%7Bnoted%3Dthis._parseTemplateNodeAttributes(element%2CtemplateInfo%2CnodeInfo)%7C%7Cnoted%3B%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20child%20nodes%20for%20the%20given%20root%20node.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20also%20wraps%20whitelisted%20legacy%20template%20extensions%0A%20%20%20%20%20%20%20*%20(%60is%3D%22dom-if%22%60%20and%20%60is%3D%22dom-repeat%22%60)%20with%20their%20equivalent%20element%0A%20%20%20%20%20%20%20*%20wrappers%2C%20collapses%20text%20nodes%2C%20and%20strips%20whitespace%20from%20the%20template%0A%20%20%20%20%20%20%20*%20if%20the%20%60templateInfo.stripWhitespace%60%20setting%20was%20provided.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20root%20Root%20node%20whose%20%60childNodes%60%20will%20be%20parsed%0A%20%20%20%20%20%20%20*%20%40param%20%7B!TemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateChildNodes'%2Cvalue%3Afunction%20_parseTemplateChildNodes(root%2CtemplateInfo%2CnodeInfo)%7Bif(root.localName%3D%3D%3D'script'%7C%7Croot.localName%3D%3D%3D'style')%7Breturn%3B%7Dwalker.currentNode%3Droot%3Bfor(var%20node%3Dwalker.firstChild()%2CparentIndex%3D0%2Cnext%3Bnode%3Bnode%3Dnext)%7B%2F%2F%20Wrap%20templates%0Aif(node.localName%3D%3D'template')%7Bnode%3DwrapTemplateExtension(node)%3B%7D%2F%2F%20collapse%20adjacent%20textNodes%3A%20fixes%20an%20IE%20issue%20that%20can%20cause%0A%2F%2F%20text%20nodes%20to%20be%20inexplicably%20split%20%3D(%0A%2F%2F%20note%20that%20root.normalize()%20should%20work%20but%20does%20not%20so%20we%20do%20this%0A%2F%2F%20manually.%0Awalker.currentNode%3Dnode%3Bnext%3Dwalker.nextSibling()%3Bif(node.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bvar%2F**%20Node%20*%2Fn%3Dnext%3Bwhile(n%26%26n.nodeType%3D%3D%3DNode.TEXT_NODE)%7Bnode.textContent%2B%3Dn.textContent%3Bnext%3Dwalker.nextSibling()%3Broot.removeChild(n)%3Bn%3Dnext%3B%7D%2F%2F%20optionally%20strip%20whitespace%0Aif(templateInfo.stripWhiteSpace%26%26!node.textContent.trim())%7Broot.removeChild(node)%3Bcontinue%3B%7D%7Dvar%20childInfo%3D%7BparentIndex%3AparentIndex%2CparentInfo%3AnodeInfo%7D%3Bif(this._parseTemplateNode(node%2CtemplateInfo%2CchildInfo))%7BchildInfo.infoIndex%3DtemplateInfo.nodeInfoList.push(%2F**%20%40type%20%7B!NodeInfo%7D%20*%2FchildInfo)-1%3B%7D%2F%2F%20Increment%20if%20not%20removed%0Awalker.currentNode%3Dnode%3Bif(walker.parentNode())%7BparentIndex%2B%2B%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20content%20for%20the%20given%20nested%20%60%3Ctemplate%3E%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Nested%20template%20info%20is%20stored%20as%20%60templateInfo%60%20in%20the%20current%20node's%0A%20%20%20%20%20%20%20*%20%60nodeInfo%60.%20%60template.content%60%20is%20removed%20and%20stored%20in%20%60templateInfo%60.%0A%20%20%20%20%20%20%20*%20It%20will%20then%20be%20the%20responsibility%20of%20the%20host%20to%20set%20it%20back%20to%20the%0A%20%20%20%20%20%20%20*%20template%20and%20for%20users%20stamping%20nested%20templates%20to%20use%20the%0A%20%20%20%20%20%20%20*%20%60_contentForTemplate%60%20method%20to%20retrieve%20the%20content%20for%20this%20template%0A%20%20%20%20%20%20%20*%20(an%20optimization%20to%20avoid%20the%20cost%20of%20cloning%20nested%20template%20content).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20node%20Node%20to%20parse%20(a%20%3Ctemplate%3E)%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20outerTemplateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%20%20that%20includes%20the%20template%20%60node%60%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNestedTemplate'%2Cvalue%3Afunction%20_parseTemplateNestedTemplate(node%2CouterTemplateInfo%2CnodeInfo)%7Bvar%20templateInfo%3Dthis._parseTemplate(node%2CouterTemplateInfo)%3Bvar%20content%3DtemplateInfo.content%3Dnode.content.ownerDocument.createDocumentFragment()%3Bcontent.appendChild(node.content)%3BnodeInfo.templateInfo%3DtemplateInfo%3Breturn%20true%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20template%20node%20attributes%20and%20adds%20node%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%20for%20nodes%20of%20interest.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNodeAttributes'%2Cvalue%3Afunction%20_parseTemplateNodeAttributes(node%2CtemplateInfo%2CnodeInfo)%7B%2F%2F%20Make%20copy%20of%20original%20attribute%20list%2C%20since%20the%20order%20may%20change%0A%2F%2F%20as%20attributes%20are%20added%20and%20removed%0Avar%20noted%3Dfalse%3Bvar%20attrs%3DArray.from(node.attributes)%3Bfor(var%20i%3Dattrs.length-1%2Ca%3Ba%3Dattrs%5Bi%5D%3Bi--)%7Bnoted%3Dthis._parseTemplateNodeAttribute(node%2CtemplateInfo%2CnodeInfo%2Ca.name%2Ca.value)%7C%7Cnoted%3B%7Dreturn%20noted%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Parses%20a%20single%20template%20node%20attribute%20and%20adds%20node%20metadata%20to%0A%20%20%20%20%20%20%20*%20%60nodeInfo%60%20for%20attributes%20of%20interest.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20implementation%20adds%20metadata%20for%20%60on-event%3D%22handler%22%60%20attributes%0A%20%20%20%20%20%20%20*%20and%20%60id%60%20attributes.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20*%20%40param%20%7B!TemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20*%20%40param%20%7B!NodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Attribute%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Attribute%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_parseTemplateNodeAttribute'%2Cvalue%3Afunction%20_parseTemplateNodeAttribute(node%2CtemplateInfo%2CnodeInfo%2Cname%2Cvalue)%7B%2F%2F%20events%20(on-*)%0Aif(name.slice(0%2C3)%3D%3D%3D'on-')%7Bnode.removeAttribute(name)%3BnodeInfo.events%3DnodeInfo.events%7C%7C%5B%5D%3BnodeInfo.events.push(%7Bname%3Aname.slice(3)%2Cvalue%3Avalue%7D)%3Breturn%20true%3B%7D%2F%2F%20static%20id%0Aelse%20if(name%3D%3D%3D'id')%7BnodeInfo.id%3Dvalue%3Breturn%20true%3B%7Dreturn%20false%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20%60content%60%20document%20fragment%20for%20a%20given%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20For%20nested%20templates%2C%20Polymer%20performs%20an%20optimization%20to%20cache%20nested%0A%20%20%20%20%20%20%20*%20template%20content%20to%20avoid%20the%20cost%20of%20cloning%20deeply%20nested%20templates.%0A%20%20%20%20%20%20%20*%20This%20method%20retrieves%20the%20cached%20content%20for%20a%20given%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLTemplateElement%7D%20template%20Template%20to%20retrieve%20%60content%60%20for%0A%20%20%20%20%20%20%20*%20%40return%20%7BDocumentFragment%7D%20Content%20fragment%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_contentForTemplate'%2Cvalue%3Afunction%20_contentForTemplate(template)%7Bvar%20templateInfo%3D%2F**%20%40type%20%7BHTMLTemplateElementWithInfo%7D%20*%2Ftemplate._templateInfo%3Breturn%20templateInfo%26%26templateInfo.content%7C%7Ctemplate.content%3B%7D%7D%5D)%3Breturn%20TemplateStamp%3B%7D(superClass)%3Breturn%20TemplateStamp%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Ftemplate-stamp.html.js%0A",
            "totalBytes": 19930,
            "wastedBytes": 12190,
            "wastedPercent": 61.16407425990968
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20lifecycleProps%3D%7Battached%3Atrue%2Cdetached%3Atrue%2Cready%3Atrue%2Ccreated%3Atrue%2CbeforeRegister%3Atrue%2Cregistered%3Atrue%2CattributeChanged%3Atrue%2Clisteners%3Atrue%2ChostAttributes%3Atrue%7D%3Bvar%20excludeOnInfo%3D%7Battached%3Atrue%2Cdetached%3Atrue%2Cready%3Atrue%2Ccreated%3Atrue%2CbeforeRegister%3Atrue%2Cregistered%3Atrue%2CattributeChanged%3Atrue%2Cbehaviors%3Atrue%2C_noAccessors%3Atrue%7D%3Bvar%20excludeOnBehaviors%3DObject.assign(%7Blisteners%3Atrue%2ChostAttributes%3Atrue%2Cproperties%3Atrue%2Cobservers%3Atrue%7D%2CexcludeOnInfo)%3Bfunction%20copyProperties(source%2Ctarget%2CexcludeProps)%7Bvar%20noAccessors%3Dsource._noAccessors%3Bfor(var%20p%20in%20source)%7Bif(!(p%20in%20excludeProps))%7Bif(noAccessors)%7Btarget%5Bp%5D%3Dsource%5Bp%5D%3B%7Delse%7Bvar%20pd%3DObject.getOwnPropertyDescriptor(source%2Cp)%3Bif(pd)%7B%2F%2F%20ensure%20property%20is%20configurable%20so%20that%20a%20later%20behavior%20can%0A%2F%2F%20re-configure%20it.%0Apd.configurable%3Dtrue%3BObject.defineProperty(target%2Cp%2Cpd)%3B%7D%7D%7D%7D%7D%2F**%0A%20%20%20%20%20*%20Applies%20a%20%22legacy%22%20behavior%20or%20array%20of%20behaviors%20to%20the%20provided%20class.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20this%20method%20will%20automatically%20also%20apply%20the%20%60Polymer.LegacyElementMixin%60%0A%20%20%20%20%20*%20to%20ensure%20that%20any%20legacy%20behaviors%20can%20rely%20on%20legacy%20Polymer%20API%20on%0A%20%20%20%20%20*%20the%20underlying%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40template%20T%0A%20%20%20%20%20*%20%40param%20%7B!Object%7C!Array%3C!Object%3E%7D%20behaviors%20Behavior%20object%20or%20array%20of%20behaviors.%0A%20%20%20%20%20*%20%40param%20%7Bfunction(new%3AT)%7D%20klass%20Element%20class.%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3AT)%7D%20Returns%20a%20new%20Element%20class%20extended%20by%20the%0A%20%20%20%20%20*%20passed%20in%20%60behaviors%60%20and%20also%20by%20%60Polymer.LegacyElementMixin%60.%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%2C%20checkTypes%7D%0A%20%20%20%20%20*%2Ffunction%20mixinBehaviors(behaviors%2Cklass)%7Breturn%20GenerateClassFromInfo(%7B%7D%2CPolymer.LegacyElementMixin(klass)%2Cbehaviors)%3B%7D%2F%2F%20NOTE%3A%0A%2F%2F%201.x%0A%2F%2F%20Behaviors%20were%20mixed%20in%20*in%20reverse%20order*%20and%20de-duped%20on%20the%20fly.%0A%2F%2F%20The%20rule%20was%20that%20behavior%20properties%20were%20copied%20onto%20the%20element%0A%2F%2F%20prototype%20if%20and%20only%20if%20the%20property%20did%20not%20already%20exist.%0A%2F%2F%20Given%3A%20Polymer%7B%20behaviors%3A%20%5BA%2C%20B%2C%20C%2C%20A%2C%20B%5D%7D%2C%20property%20copy%20order%20was%3A%0A%2F%2F%20(1)%2C%20B%2C%20(2)%2C%20A%2C%20(3)%20C.%20This%20means%20prototype%20properties%20win%20over%0A%2F%2F%20B%20properties%20win%20over%20A%20win%20over%20C.%20This%20mirrors%20what%20would%20happen%0A%2F%2F%20with%20inheritance%20if%20element%20extended%20B%20extended%20A%20extended%20C.%0A%2F%2F%0A%2F%2F%20Again%20given%2C%20Polymer%7B%20behaviors%3A%20%5BA%2C%20B%2C%20C%2C%20A%2C%20B%5D%7D%2C%20the%20resulting%0A%2F%2F%20%60behaviors%60%20array%20was%20%5BC%2C%20A%2C%20B%5D.%0A%2F%2F%20Behavior%20lifecycle%20methods%20were%20called%20in%20behavior%20array%20order%0A%2F%2F%20followed%20by%20the%20element%2C%20e.g.%20(1)%20C.created%2C%20(2)%20A.created%2C%0A%2F%2F%20(3)%20B.created%2C%20(4)%20element.created.%20There%20was%20no%20support%20for%0A%2F%2F%20super%2C%20and%20%22super-behavior%22%20methods%20were%20callable%20only%20by%20name).%0A%2F%2F%0A%2F%2F%202.x%0A%2F%2F%20Behaviors%20are%20made%20into%20proper%20mixins%20which%20live%20in%20the%0A%2F%2F%20element's%20prototype%20chain.%20Behaviors%20are%20placed%20in%20the%20element%20prototype%0A%2F%2F%20eldest%20to%20youngest%20and%20de-duped%20youngest%20to%20oldest%3A%0A%2F%2F%20So%2C%20first%20%5BA%2C%20B%2C%20C%2C%20A%2C%20B%5D%20becomes%20%5BC%2C%20A%2C%20B%5D%20then%2C%0A%2F%2F%20the%20element%20prototype%20becomes%20(oldest)%20(1)%20Polymer.Element%2C%20(2)%20class(C)%2C%0A%2F%2F%20(3)%20class(A)%2C%20(4)%20class(B)%2C%20(5)%20class(Polymer(%7B...%7D)).%0A%2F%2F%20Result%3A%0A%2F%2F%20This%20means%20element%20properties%20win%20over%20B%20properties%20win%20over%20A%20win%0A%2F%2F%20over%20C.%20(same%20as%201.x)%0A%2F%2F%20If%20lifecycle%20is%20called%20(super%20then%20me)%2C%20order%20is%0A%2F%2F%20(1)%20C.created%2C%20(2)%20A.created%2C%20(3)%20B.created%2C%20(4)%20element.created%0A%2F%2F%20(again%20same%20as%201.x)%0Afunction%20applyBehaviors(proto%2Cbehaviors%2Clifecycle)%7Bfor(var%20i%3D0%3Bi%3Cbehaviors.length%3Bi%2B%2B)%7BapplyInfo(proto%2Cbehaviors%5Bi%5D%2Clifecycle%2CexcludeOnBehaviors)%3B%7D%7Dfunction%20applyInfo(proto%2Cinfo%2Clifecycle%2CexcludeProps)%7BcopyProperties(info%2Cproto%2CexcludeProps)%3Bfor(var%20p%20in%20lifecycleProps)%7Bif(info%5Bp%5D)%7Blifecycle%5Bp%5D%3Dlifecycle%5Bp%5D%7C%7C%5B%5D%3Blifecycle%5Bp%5D.push(info%5Bp%5D)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BArray%7D%20behaviors%20List%20of%20behaviors%20to%20flatten.%0A%20%20%20%20%20*%20%40param%20%7BArray%3D%7D%20list%20Target%20list%20to%20flatten%20behaviors%20into.%0A%20%20%20%20%20*%20%40param%20%7BArray%3D%7D%20exclude%20List%20of%20behaviors%20to%20exclude%20from%20the%20list.%0A%20%20%20%20%20*%20%40return%20%7B!Array%7D%20Returns%20the%20list%20of%20flattened%20behaviors.%0A%20%20%20%20%20*%2Ffunction%20flattenBehaviors(behaviors%2Clist%2Cexclude)%7Blist%3Dlist%7C%7C%5B%5D%3Bfor(var%20i%3Dbehaviors.length-1%3Bi%3E%3D0%3Bi--)%7Bvar%20b%3Dbehaviors%5Bi%5D%3Bif(b)%7Bif(Array.isArray(b))%7BflattenBehaviors(b%2Clist)%3B%7Delse%7B%2F%2F%20dedup%0Aif(list.indexOf(b)%3C0%26%26(!exclude%7C%7Cexclude.indexOf(b)%3C0))%7Blist.unshift(b)%3B%7D%7D%7Delse%7Bconsole.warn('behavior%20is%20null%2C%20check%20for%20missing%20or%20404%20import')%3B%7D%7Dreturn%20list%3B%7D%2F*%20Note%20about%20construction%20and%20extension%20of%20legacy%20classes.%0A%20%20%20%20%20%20%5BChanged%20in%20Q4%202018%20to%20optimize%20performance.%5D%0A%0A%20%20%20%20%20%20When%20calling%20%60Polymer%60%20or%20%60mixinBehaviors%60%2C%20the%20generated%20class%20below%20is%0A%20%20%20%20%20%20made.%20The%20list%20of%20behaviors%20was%20previously%20made%20into%20one%20generated%20class%20per%0A%20%20%20%20%20%20behavior%2C%20but%20this%20is%20no%20longer%20the%20case%20as%20behaviors%20are%20now%20called%0A%20%20%20%20%20%20manually.%20Note%2C%20there%20may%20*still*%20be%20multiple%20generated%20classes%20in%20the%0A%20%20%20%20%20%20element's%20prototype%20chain%20if%20extension%20is%20used%20with%20%60mixinBehaviors%60.%0A%0A%20%20%20%20%20%20The%20generated%20class%20is%20directly%20tied%20to%20the%20info%20object%20and%20behaviors%0A%20%20%20%20%20%20used%20to%20create%20it.%20That%20list%20of%20behaviors%20is%20filtered%20so%20it's%20only%20the%0A%20%20%20%20%20%20behaviors%20not%20active%20on%20the%20superclass.%20In%20order%20to%20call%20through%20to%20the%0A%20%20%20%20%20%20entire%20list%20of%20lifecycle%20methods%2C%20it's%20important%20to%20call%20%60super%60.%0A%0A%20%20%20%20%20%20The%20element's%20%60properties%60%20and%20%60observers%60%20are%20controlled%20via%20the%20finalization%0A%20%20%20%20%20%20mechanism%20provided%20by%20%60PropertiesMixin%60.%20%60Properties%60%20and%20%60observers%60%20are%0A%20%20%20%20%20%20collected%20by%20manually%20traversing%20the%20prototype%20chain%20and%20merging.%0A%0A%20%20%20%20%20%20To%20limit%20changes%2C%20the%20%60_registered%60%20method%20is%20called%20via%20%60_initializeProperties%60%0A%20%20%20%20%20%20and%20not%20%60_finalizeClass%60.%0A%20%20%20%20*%2F%2F**%0A%20%20%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Polymer%20info%20object%0A%20%20%20%20%20*%20%40param%20%7Bfunction(new%3AHTMLElement)%7D%20Base%20base%20class%20to%20extend%20with%20info%20object%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20behaviors%20behaviors%20to%20copy%20into%20the%20element%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3AHTMLElement)%7D%20Generated%20class%0A%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Ffunction%20GenerateClassFromInfo(info%2CBase%2Cbehaviors)%7B%2F%2F%20manages%20behavior%20and%20lifecycle%20processing%20(filled%20in%20after%20class%20definition)%0Avar%20behaviorList%3Dvoid%200%3Bvar%20lifecycle%3D%7B%7D%3B%2F**%20%40private%20*%2Fvar%20PolymerGenerated%3Dfunction(_Base)%7B_inherits(PolymerGenerated%2C_Base)%3Bfunction%20PolymerGenerated()%7B_classCallCheck(this%2CPolymerGenerated)%3Breturn%20_possibleConstructorReturn(this%2C(PolymerGenerated.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated)).apply(this%2Carguments))%3B%7D_createClass(PolymerGenerated%2C%5B%7Bkey%3A'created'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20created()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'created'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.created%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_registered'%2Cvalue%3Afunction%20_registered()%7B%2F*%20NOTE%3A%20%60beforeRegister%60%20is%20called%20here%20for%20bc%2C%20but%20the%20behavior%0A%20%20%20%20%20%20%20%20%20%20%20%20is%20different%20than%20in%201.x.%20In%201.0%2C%20the%20method%20was%20called%20*after*%0A%20%20%20%20%20%20%20%20%20%20%20%20mixing%20prototypes%20together%20but%20*before*%20processing%20of%20meta-objects.%0A%20%20%20%20%20%20%20%20%20%20%20%20However%2C%20dynamic%20effects%20can%20still%20be%20set%20here%20and%20can%20be%20done%20either%0A%20%20%20%20%20%20%20%20%20%20%20%20in%20%60beforeRegister%60%20or%20%60registered%60.%20It%20is%20no%20longer%20possible%20to%20set%0A%20%20%20%20%20%20%20%20%20%20%20%20%60is%60%20in%20%60beforeRegister%60%20as%20you%20could%20in%201.x.%0A%20%20%20%20%20%20%20%20%20%20*%2F%2F%2F%20only%20proceed%20if%20the%20generated%20class'%20prototype%20has%20not%20been%20registered.%0Avar%20generatedProto%3DPolymerGenerated.prototype%3Bif(!generatedProto.hasOwnProperty('__hasRegisterFinished'))%7BgeneratedProto.__hasRegisterFinished%3Dtrue%3B%2F%2F%20ensure%20superclass%20is%20registered%20first.%0A_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'_registered'%2Cthis).call(this)%3B%2F%2F%20copy%20properties%20onto%20the%20generated%20class%20lazily%20if%20we're%20optimizing%2C%0Aif(Polymer.legacyOptimizations)%7BcopyPropertiesToProto(generatedProto)%3B%7D%2F%2F%20make%20sure%20legacy%20lifecycle%20is%20called%20on%20the%20*element*'s%20prototype%0A%2F%2F%20and%20not%20the%20generated%20class%20prototype%3B%20if%20the%20element%20has%20been%0A%2F%2F%20extended%2C%20these%20are%20*not*%20the%20same.%0Avar%20proto%3DObject.getPrototypeOf(this)%3Bvar%20list%3Dlifecycle.beforeRegister%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(proto)%3B%7D%7Dlist%3Dlifecycle.registered%3Bif(list)%7Bfor(var%20_i%3D0%3B_i%3Clist.length%3B_i%2B%2B)%7Blist%5B_i%5D.call(proto)%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_applyListeners'%2Cvalue%3Afunction%20_applyListeners()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'_applyListeners'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.listeners%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Bvar%20listeners%3Dlist%5Bi%5D%3Bif(listeners)%7Bfor(var%20l%20in%20listeners)%7Bthis._addMethodEventListenerToNode(this%2Cl%2Clisteners%5Bl%5D)%3B%7D%7D%7D%7D%7D%2F%2F%20note%3A%20exception%20to%20%22super%20then%20me%22%20rule%3B%0A%2F%2F%20do%20work%20before%20calling%20super%20so%20that%20super%20attributes%0A%2F%2F%20only%20apply%20if%20not%20already%20set.%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_ensureAttributes'%2Cvalue%3Afunction%20_ensureAttributes()%7Bvar%20list%3Dlifecycle.hostAttributes%3Bif(list)%7Bfor(var%20i%3Dlist.length-1%3Bi%3E%3D0%3Bi--)%7Bvar%20hostAttributes%3Dlist%5Bi%5D%3Bfor(var%20a%20in%20hostAttributes)%7Bthis._ensureAttribute(a%2ChostAttributes%5Ba%5D)%3B%7D%7D%7D_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'_ensureAttributes'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'ready'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.ready%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attached'%2Cvalue%3Afunction%20attached()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'attached'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.attached%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'detached'%2Cvalue%3Afunction%20detached()%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'detached'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.detached%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Implements%20native%20Custom%20Elements%20%60attributeChangedCallback%60%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20an%20attribute%20value%20to%20a%20property%20via%20%60_attributeToProperty%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute%20that%20changed%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20New%20attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeChanged'%2Cvalue%3Afunction%20attributeChanged(name%2Cold%2Cvalue)%7B_get(PolymerGenerated.prototype.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated.prototype)%2C'attributeChanged'%2Cthis).call(this)%3Bvar%20list%3Dlifecycle.attributeChanged%3Bif(list)%7Bfor(var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B)%7Blist%5Bi%5D.call(this%2Cname%2Cold%2Cvalue)%3B%7D%7D%7D%7D%5D%2C%5B%7Bkey%3A'_finalizeClass'%2C%2F%2F%20explicitly%20not%20calling%20super._finalizeClass%0Avalue%3Afunction%20_finalizeClass()%7B%2F%2F%20if%20calling%20via%20a%20subclass%20that%20hasn't%20been%20generated%2C%20pass%20through%20to%20super%0Aif(!this.hasOwnProperty(window.JSCompiler_renameProperty('generatedFrom'%2Cthis)))%7B_get(PolymerGenerated.__proto__%7C%7CObject.getPrototypeOf(PolymerGenerated)%2C'_finalizeClass'%2Cthis).call(this)%3B%7Delse%7B%2F%2F%20interleave%20properties%20and%20observers%20per%20behavior%20and%20%60info%60%0Aif(behaviorList)%7Bfor(var%20i%3D0%2Cb%3Bi%3CbehaviorList.length%3Bi%2B%2B)%7Bb%3DbehaviorList%5Bi%5D%3Bif(b.properties)%7Bthis.createProperties(b.properties)%3B%7Dif(b.observers)%7Bthis.createObservers(b.observers%2Cb.properties)%3B%7D%7D%7Dif(info.properties)%7Bthis.createProperties(info.properties)%3B%7Dif(info.observers)%7Bthis.createObservers(info.observers%2Cinfo.properties)%3B%7D%2F%2F%20make%20sure%20to%20prepare%20the%20element%20template%0Athis._prepareTemplate()%3B%7D%7D%7D%2C%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Bvar%20properties%3D%7B%7D%3Bif(behaviorList)%7Bfor(var%20i%3D0%3Bi%3CbehaviorList.length%3Bi%2B%2B)%7BObject.assign(properties%2CbehaviorList%5Bi%5D.properties)%3B%7D%7DObject.assign(properties%2Cinfo.properties)%3Breturn%20properties%3B%7D%7D%2C%7Bkey%3A'observers'%2Cget%3Afunction%20get()%7Bvar%20observers%3D%5B%5D%3Bif(behaviorList)%7Bfor(var%20i%3D0%2Cb%3Bi%3CbehaviorList.length%3Bi%2B%2B)%7Bb%3DbehaviorList%5Bi%5D%3Bif(b.observers)%7Bobservers%3Dobservers.concat(b.observers)%3B%7D%7D%7Dif(info.observers)%7Bobservers%3Dobservers.concat(info.observers)%3B%7Dreturn%20observers%3B%7D%7D%5D)%3Breturn%20PolymerGenerated%3B%7D(Base)%3B%2F%2F%20apply%20behaviors%2C%20note%20actual%20copying%20is%20done%20lazily%20at%20first%20instance%20creation%0Aif(behaviors)%7B%2F%2F%20NOTE%3A%20ensure%20the%20behavior%20is%20extending%20a%20class%20with%0A%2F%2F%20legacy%20element%20api.%20This%20is%20necessary%20since%20behaviors%20expect%20to%20be%20able%0A%2F%2F%20to%20access%201.x%20legacy%20api.%0Aif(!Array.isArray(behaviors))%7Bbehaviors%3D%5Bbehaviors%5D%3B%7Dvar%20superBehaviors%3DBase.prototype.behaviors%3B%2F%2F%20get%20flattened%2C%20deduped%20list%20of%20behaviors%20*not*%20already%20on%20super%20class%0AbehaviorList%3DflattenBehaviors(behaviors%2Cnull%2CsuperBehaviors)%3BPolymerGenerated.prototype.behaviors%3DsuperBehaviors%3FsuperBehaviors.concat(behaviors)%3AbehaviorList%3B%7Dvar%20copyPropertiesToProto%3Dfunction%20copyPropertiesToProto(proto)%7Bif(behaviorList)%7BapplyBehaviors(proto%2CbehaviorList%2Clifecycle)%3B%7DapplyInfo(proto%2Cinfo%2Clifecycle%2CexcludeOnInfo)%3B%7D%3B%2F%2F%20copy%20properties%20if%20we're%20not%20optimizing%0Aif(!Polymer.legacyOptimizations)%7BcopyPropertiesToProto(PolymerGenerated.prototype)%3B%7DPolymerGenerated.generatedFrom%3Dinfo%3Breturn%20PolymerGenerated%3B%7D%2F**%0A%20%20%20%20%20*%20Generates%20a%20class%20that%20extends%20%60Polymer.LegacyElement%60%20based%20on%20the%0A%20%20%20%20%20*%20provided%20info%20object.%20%20Metadata%20objects%20on%20the%20%60info%60%20object%0A%20%20%20%20%20*%20(%60properties%60%2C%20%60observers%60%2C%20%60listeners%60%2C%20%60behaviors%60%2C%20%60is%60)%20are%20used%0A%20%20%20%20%20*%20for%20Polymer's%20meta-programming%20systems%2C%20and%20any%20functions%20are%20copied%0A%20%20%20%20%20*%20to%20the%20generated%20class.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Valid%20%22metadata%22%20values%20are%20as%20follows%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60is%60%3A%20String%20providing%20the%20tag%20name%20to%20register%20the%20element%20under.%20In%0A%20%20%20%20%20*%20addition%2C%20if%20a%20%60dom-module%60%20with%20the%20same%20id%20exists%2C%20the%20first%20template%0A%20%20%20%20%20*%20in%20that%20%60dom-module%60%20will%20be%20stamped%20into%20the%20shadow%20root%20of%20this%20element%2C%0A%20%20%20%20%20*%20with%20support%20for%20declarative%20event%20listeners%20(%60on-...%60)%2C%20Polymer%20data%0A%20%20%20%20%20*%20bindings%20(%60%5B%5B...%5D%5D%60%20and%20%60%7B%7B...%7D%7D%60)%2C%20and%20id-based%20node%20finding%20into%0A%20%20%20%20%20*%20%60this.%24%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60properties%60%3A%20Object%20describing%20property-related%20metadata%20used%20by%20Polymer%0A%20%20%20%20%20*%20features%20(key%3A%20property%20names%2C%20value%3A%20object%20containing%20property%20metadata).%0A%20%20%20%20%20*%20Valid%20keys%20in%20per-property%20metadata%20include%3A%0A%20%20%20%20%20*%20-%20%60type%60%20(String%7CNumber%7CObject%7CArray%7C...)%3A%20Used%20by%0A%20%20%20%20%20*%20%20%20%60attributeChangedCallback%60%20to%20determine%20how%20string-based%20attributes%0A%20%20%20%20%20*%20%20%20are%20deserialized%20to%20JavaScript%20property%20values.%0A%20%20%20%20%20*%20-%20%60notify%60%20(boolean)%3A%20Causes%20a%20change%20in%20the%20property%20to%20fire%20a%0A%20%20%20%20%20*%20%20%20non-bubbling%20event%20called%20%60%3Cproperty%3E-changed%60.%20Elements%20that%20have%0A%20%20%20%20%20*%20%20%20enabled%20two-way%20binding%20to%20the%20property%20use%20this%20event%20to%20observe%20changes.%0A%20%20%20%20%20*%20-%20%60readOnly%60%20(boolean)%3A%20Creates%20a%20getter%20for%20the%20property%2C%20but%20no%20setter.%0A%20%20%20%20%20*%20%20%20To%20set%20a%20read-only%20property%2C%20use%20the%20private%20setter%20method%0A%20%20%20%20%20*%20%20%20%60_setProperty(property%2C%20value)%60.%0A%20%20%20%20%20*%20-%20%60observer%60%20(string)%3A%20Observer%20method%20name%20that%20will%20be%20called%20when%0A%20%20%20%20%20*%20%20%20the%20property%20changes.%20The%20arguments%20of%20the%20method%20are%0A%20%20%20%20%20*%20%20%20%60(value%2C%20previousValue)%60.%0A%20%20%20%20%20*%20-%20%60computed%60%20(string)%3A%20String%20describing%20method%20and%20dependent%20properties%0A%20%20%20%20%20*%20%20%20for%20computing%20the%20value%20of%20this%20property%20(e.g.%20%60'computeFoo(bar%2C%20zot)'%60).%0A%20%20%20%20%20*%20%20%20Computed%20properties%20are%20read-only%20by%20default%20and%20can%20only%20be%20changed%0A%20%20%20%20%20*%20%20%20via%20the%20return%20value%20of%20the%20computing%20method.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60observers%60%3A%20Array%20of%20strings%20describing%20multi-property%20observer%20methods%0A%20%20%20%20%20*%20%20and%20their%20dependent%20properties%20(e.g.%20%60'observeABC(a%2C%20b%2C%20c)'%60).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60listeners%60%3A%20Object%20describing%20event%20listeners%20to%20be%20added%20to%20each%0A%20%20%20%20%20*%20%20instance%20of%20this%20element%20(key%3A%20event%20name%2C%20value%3A%20method%20name).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60behaviors%60%3A%20Array%20of%20additional%20%60info%60%20objects%20containing%20metadata%0A%20%20%20%20%20*%20and%20callbacks%20in%20the%20same%20format%20as%20the%20%60info%60%20object%20here%20which%20are%0A%20%20%20%20%20*%20merged%20into%20this%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60hostAttributes%60%3A%20Object%20listing%20attributes%20to%20be%20applied%20to%20the%20host%0A%20%20%20%20%20*%20%20once%20created%20(key%3A%20attribute%20name%2C%20value%3A%20attribute%20value).%20%20Values%0A%20%20%20%20%20*%20%20are%20serialized%20based%20on%20the%20type%20of%20the%20value.%20%20Host%20attributes%20should%0A%20%20%20%20%20*%20%20generally%20be%20limited%20to%20attributes%20such%20as%20%60tabIndex%60%20and%20%60aria-...%60.%0A%20%20%20%20%20*%20%20Attributes%20in%20%60hostAttributes%60%20are%20only%20applied%20if%20a%20user-supplied%0A%20%20%20%20%20*%20%20attribute%20is%20not%20already%20present%20(attributes%20in%20markup%20override%0A%20%20%20%20%20*%20%20%60hostAttributes%60).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20In%20addition%2C%20the%20following%20Polymer-specific%20callbacks%20may%20be%20provided%3A%0A%20%20%20%20%20*%20-%20%60registered%60%3A%20called%20after%20first%20instance%20of%20this%20element%2C%0A%20%20%20%20%20*%20-%20%60created%60%3A%20called%20during%20%60constructor%60%0A%20%20%20%20%20*%20-%20%60attached%60%3A%20called%20during%20%60connectedCallback%60%0A%20%20%20%20%20*%20-%20%60detached%60%3A%20called%20during%20%60disconnectedCallback%60%0A%20%20%20%20%20*%20-%20%60ready%60%3A%20called%20before%20first%20%60attached%60%2C%20after%20all%20properties%20of%0A%20%20%20%20%20*%20%20%20this%20element%20have%20been%20propagated%20to%20its%20template%20and%20all%20observers%0A%20%20%20%20%20*%20%20%20have%20run%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!PolymerInit%7D%20info%20Object%20containing%20Polymer%20metadata%20and%20functions%0A%20%20%20%20%20*%20%20%20to%20become%20class%20methods.%0A%20%20%20%20%20*%20%40template%20T%0A%20%20%20%20%20*%20%40param%20%7Bfunction(T)%3AT%7D%20mixin%20Optional%20mixin%20to%20apply%20to%20legacy%20base%20class%0A%20%20%20%20%20*%20%20%20before%20extending%20with%20Polymer%20metaprogramming.%0A%20%20%20%20%20*%20%40return%20%7Bfunction(new%3AHTMLElement)%7D%20Generated%20class%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%2FPolymer.Class%3Dfunction(info%2Cmixin)%7Bif(!info)%7Bconsole.warn('Polymer.Class%20requires%20%60info%60%20argument')%3B%7Dvar%20klass%3Dmixin%3Fmixin(Polymer.LegacyElementMixin(HTMLElement))%3APolymer.LegacyElementMixin(HTMLElement)%3Bklass%3DGenerateClassFromInfo(info%2Cklass%2Cinfo.behaviors)%3Bif(info._enableDisableUpgrade)%7Bklass%3DPolymer.DisableUpgradeMixin(klass)%3B%7D%2F%2F%20decorate%20klass%20with%20registration%20info%0Aklass.is%3Dklass.prototype.is%3Dinfo.is%3Breturn%20klass%3B%7D%3BPolymer.mixinBehaviors%3DmixinBehaviors%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fclass.html.js%0A",
            "totalBytes": 19044,
            "wastedBytes": 10593,
            "wastedPercent": 55.62381852551985
          },
          {
            "url": "data:text/javascript;charset=utf-8,%2F*global%20window%3Atrue*%2F%2F*global%20document%3Atrue*%2F%2F*global%20performance%3Atrue*%2F'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Slot%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerSlot%0A%20%20%20%20%20*%2Fvar%20PartnerSlot%3D%7Bproperties%3A%7B%2F**%20Exclusion%20Label%20*%2Fexclusion%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20High%20Impact%20Unit%20*%2FhighImpact%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20DFP%20Ad%20Unit%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20Mobile%20*%2Fmobile%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sizes%20to%20be%20included%20in%20the%20ad%20call.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20If%20set%20on%20the%20element%2C%20must%20be%20valid%20JSON.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20To%20set%20defaults%20for%20an%20element%2C%20override%20%60getDefaultSizes%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20(do%20not%20override%20property%20default).%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fsizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%20this.getDefaultSizes()%3B%7D%7D%2C%2F**%20Targeting%20Label%20*%2Ftargeting%3A%7Btype%3AString%2Cvalue%3A''%7D%2C%2F**%20preset%20targeting%20*%2FslotTargeting%3A%7Btype%3AObject%2Cvalue%3A%7B%7D%7D%2C%2F**%20NSF%20Targeting%20*%2FnsfTargeting%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%20this.getNsfTargeting()%3B%7D%7D%2C%2F**%20Try%20Count%20*%2FtryCount%3A%7Btype%3ANumber%2Cvalue%3A0%7D%2C%2F**%20Sticky%20ad%20slot%20!!Future%20Feature!!%20*%2Fsticky%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Render%20Behavior%20*%2FrenderBehavior%3A%7Btype%3AString%2Cvalue%3A'lazy'%7D%2C%2F**%20Fetch%20Behavior%20*%2FfetchBehavior%3A%7Btype%3AString%2Cvalue%3A'lazy'%7D%2C%2F**%20Below%20the%20fold%20declaration%20*%2Fbtf%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Set%20if%20unit%20is%20not%20currently%20active%20*%2Finactive%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20the%20'fluid'%20size%20should%20be%20included%20with%20the%20ad%20call%20*%2Ffluid%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20border%20(automatic%20on%20high%20impact%20units)%20*%2FnoBorder%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Whether%20to%20skip%20adding%20a%20label%20*%2FnoLabel%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Defer%20control%20of%20refreshing%20this%20slot%20to%20parent%20element%20*%2Fdeferred%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Enables%20Auto-refresh%20for%20this%20ad%20unit%20*%2FautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%20Last%20time%20a%20user%20engaged%20with%20the%20page%20*%2FlastEngagement%3A%7Btype%3ANumber%2Cvalue%3ADate.now%7D%2C%2F**%20Is%20window%20visible%20*%2FwindowIsVisible%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20Conditional%20sizes%20to%20add%20when%20there%20is%20enough%20available%20width%20*%2FconditionalSizes%3A%7Btype%3AArray%2Cvalue%3Afunction%20value()%7Breturn%5B%5D%3B%7D%7D%2C%2F**%20Margins%20to%20add%20to%20conditional%20size%20widths%20before%20checking%20availability%20*%2FconditionalSizesMargin%3A%7Btype%3ANumber%2Cvalue%3A1%7D%2C%2F**%20Minimum%20height%20for%20the%20unit.%20Once%20ad%20loads%2C%20height%20may%20increase%20to%20accommodate%2C%20or%20collapse%20if%20no%20ad%20was%20returned.%20*%2FminHeight%3A%7Btype%3ANumber%2Cvalue%3A0%2Cobserver%3A'_minHeightChanged'%7D%2C%2F**%20Approximate%20height%20of%20%22Advertisement%22%20label.%20Added%20to%20minHeight%20value%20to%20determine%20static%20height.%20*%2FlabelHeight%3A%7Btype%3ANumber%2Cvalue%3A20%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Ad%20Slot%20kick%20off.%20Determines%20if%20we%20are%20in%20mobile%20or%20desktop%20screen%20sizes.%0A%20%20%20%20%20%20%20%20%20*%20Establishes%20statistics%20on%20ad%20placements%2C%20adds%20appropriate%20classes%20and%20unique%20id.%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20listeners%20to%20build%20the%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3B%2F%2F%20Call%20slot%20ready%20here%2C%20since%20a%20regular%20ready%20get's%20called%20after%20this%20behavior%20finishes%0Athis.slotReady()%3B%2F%2F%20Check%20whether%20we%20should%20be%20active%0Aif(!this.shouldBeActive())%7Bthis.classList.add('partner-placement-inactive')%3Bthis.inactive%3Dtrue%3Breturn%3B%7Dthis.register()%3Bthis.defineDefer%3Dnew%20this._deferred()%3Bthis.lazyFetchDefer%3Dnew%20this._deferred()%3B%2F%2F%20Fallback%20to%20default%20sizes%20when%20sizes%20attribute%20is%20not%20parsed%20properly%20or%20no%20sizes%20are%20present%0Aif(!this.sizes%7C%7Cthis.sizes.length%3D%3D%3D0)%7Bthis.sizes%3Dthis.getDefaultSizes()%3B%7D%2F%2F%20Add%20fluid%20size%20when%20fluid%20attribute%20is%20set%2C%20if%20it%20isn't%20already%20included%20in%20the%20size%20list%0Aif(this.fluid%26%26this.sizes.indexOf('fluid')%3C0)%7Bthis.sizes.push('fluid')%3B%7D%2F%2F%20Set%20initial%20classes%0Athis.classList.add('partner-placement'%2C'partner-'%2Bthis.placement%2C'partner-loading')%3Bif(!this.noLabel)%7Bthis.classList.add('partner-label')%3B%7Dif(this.mobile)%7Bthis.classList.add('partner-placement-mobile')%3B%7D%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.ads.count%3Dwindow.ga_data.ads.count%7C%7C0%3Bthis.id%3D'partner-'%2Bthis.placement.toLowerCase().replace(%2F%5B%5Cs_%5D%2Fg%2C'-')%2B'-'%2Bwindow.ga_data.ads.count%2B%2B%3B%7Dthis.slotId%3Dthis.id%2B'-container'%3Bthis._log('Slot%20Ready')%3Bthis._broadcastEvent('slotReady')%3B%2F%2F%20Check%20if%20we%20are%20autorefresh%20enabled%20via%20config%2C%20if%20not%20set%20directly%20already%20on%20the%20slot%0Athis.autoRefresh%3D!!(this.autoRefresh%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'enabled'))%3Bif(this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'ias'%2C'enabled'))%7B%2F%2F%20Register%20as%20an%20IAS%20unit%0Athis.iasUnit%3D%7BadSlotId%3Athis.slotId%2Csize%3Athis._filterFluidSize(this.sizes)%2CadUnitPath%3Athis._generatePath()%7D%3Bwindow.ga_data.ads.iasAdUnits%3Dwindow.ga_data.ads.iasAdUnits%7C%7C%5B%5D%3Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.iasAdUnits.push(_this)%3B%7D)%3B%7D%2F%2F%20Setup%20Lazy%20fetching%20and%20rendering%0Athis.classList.add('partner-loading-shown')%3Bthis.viewportHeight%3DMath.max(document.documentElement.clientHeight%2Cwindow.innerHeight)%3Bvar%20platform%3Dthis.mobile%3F'mobile'%3A'desktop'%3Bvar%20lazySettings%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'lazy'%2Cplatform)%7C%7C%7B%7D%3Bthis.renderMultiplier%3DlazySettings.render%7C%7C0%3Bthis.fetchMultiplier%3DlazySettings.fetch%7C%7C1%3Bthis.lazy%3Dthis.renderBehavior%3D%3D%3D'lazy'%26%26!this.isVisible(this.renderMultiplier)%3Bthis.lazyFetch%3Dthis.fetchBehavior%3D%3D%3D'lazy'%26%26!this.isVisible(this.fetchMultiplier)%3Bif(this.lazyFetch)%7Bthis.lazyFetchCheckFn%3Dfunction()%7Breturn%20_this.lazyFetchCheck()%3B%7D%3Bwindow.addEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn%2Cfalse)%3Bthis.lazyFetchCheckFn()%3B%7Delse%7Bthis.lazyFetchDefer.resolve()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20slot%20ready%2C%20to%20beat%20out%20behavior%20lifecycle%20call.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FslotReady%3Afunction%20slotReady()%7B%2F%2F%20slot%20ready%20placeholder%0A%7D%2Cattached%3Afunction%20attached()%7Bvar%20_this2%3Dthis%3B%2F%2F%20When%20inactive%2C%20kill%20things%20here%0Aif(this.inactive%7C%7Cthis.adIsSetup)return%20false%3Bthis.slotAttached()%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7B_this2.lazyFetchDefer.promise.then(function()%7B_this2._log('Lazy%20Fetch%20Defer%20Resolved')%3B_this2.addListeners()%3B_this2.addConditionalSizes()%3B_this2._setupAd()%3B%7D)%3B%7D)%3B%7D%2Cdetached%3Afunction%20detached()%7Bthis.removeListeners()%3Bthis.destroy(false)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20slot%20attached%2C%20to%20beat%20out%20behavior%20lifecycle%20call.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FslotAttached%3Afunction%20slotAttached()%7B%2F%2F%20slot%20attached%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Triggers%20a%20refresh%20on%20the%20ad%20slot.%20Extended%20by%20PartnerBid%20behavior%20to%20refresh%20bids.%0A%20%20%20%20%20%20%20%20%20*%20partner-bid%20does%20a%20global%20check%20for%20this%20function%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.displayQueue%3Dwindow.ga_data.ads.displayQueue%7C%7C%5B%5D%3Bwindow.ga_data.ads.refreshQueue%3Dwindow.ga_data.ads.refreshQueue%7C%7C%5B%5D%3Bvar%20q%3Dthis.displayed%3Fwindow.ga_data.ads.refreshQueue%3Awindow.ga_data.ads.displayQueue%3Bq.push(this)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20fallback%20sizes%20for%20an%20element.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Default%20sizes%20to%20use%20for%20the%20element%0A%20%20%20%20%20%20%20%20%20*%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Default%20for%20NSF%20targeting%0A%20%20%20%20%20%20%20%20%20*%2FgetNsfTargeting%3Afunction%20getNsfTargeting()%7Breturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Register%20our%20ad%20slot%20at%20the%20page%20level%20and%20set%20ad%20count%0A%20%20%20%20%20%20%20%20%20*%2Fregister%3Afunction%20register()%7Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.stats%3Dwindow.ga_data.ads.stats%7C%7C%7Brequests%3A0%2Ctotal%3A0%7D%3Bwindow.ga_data.ads.stats.total%2B%2B%3B%2F%2F%20Register%20on%20the%20page%20as%20a%20DFP%20ad%20unit%0Awindow.ga_data.ads.units%3Dwindow.ga_data.ads.units%7C%7C%5B%5D%3Bwindow.ga_data.ads.units.push(this)%3B%2F%2F%20Ad%20Count%0Athis.adCount%3Dthis.adCount%7C%7Cthis.getAdCount()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20the%20ad%20framework%20should%20be%20active%0A%20%20%20%20%20%20%20%20%20*%2FshouldBeActive%3Afunction%20shouldBeActive()%7Bvar%20inMobileEnv%3Dthis._inMobileEnvironment()%3Breturn!(this.inactive%7C%7C%2F%2F%20Check%20if%20ads%20are%20disabled%20globally%0Athis._getNested(ga_data%2C'route'%2C'noAdvertising')%7C%7Cthis.getUrlParamValue('no_ads')%7C%7C%2F%2F%20Check%20whether%20element%20mobile%2Fdesktop%20matches%20viewport%20mobile%2Fdesktop%0AinMobileEnv!%3D%3Dthis.mobile%7C%7Cthis.isAdFreeExperience())%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Add%20document%20listeners%0A%20%20%20%20%20%20%20%20%20*%2FaddListeners%3Afunction%20addListeners()%7Bvar%20_this3%3Dthis%3Bif(this.listenersSetup)return%3B%2F%2F%20refresh%20slots%20on%20location%20change%0Athis._locationChangedFn%3Dfunction()%7Breturn%20_this3.refresh()%3B%7D%3Bwindow.addEventListener('location-changed'%2Cthis._locationChangedFn)%3B%2F%2F%20Add%20message%20listener%20for%20slots%20that%20require%20messaging%0Athis._onSafeFrameMsgFn%3Dfunction(e)%7Breturn%20_this3._onSafeFrameMsg(e)%3B%7D%3Bwindow.addEventListener('message'%2Cthis._onSafeFrameMsgFn)%3B%2F%2F%20Add%20visibility%20listener%20and%20scroll%20listener%20to%20determine%20if%20user%20is%20active%20and%20engaged%0Athis._visibilityFn%3Dfunction(e)%7Breturn%20_this3._onVisibilityChange(e)%3B%7D%3Bthis._engagementUpdateFn%3Dfunction()%7Breturn%20_this3.engagementUpdate()%3B%7D%3Bif(typeof%20document.hidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'hidden'%3Bthis.visibilityEvent%3D'visibilitychange'%3B%7Delse%20if(typeof%20document.msHidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'msHidden'%3Bthis.visibilityEvent%3D'msvisibilitychange'%3B%7Delse%20if(typeof%20document.webkitHidden!%3D%3D'undefined')%7Bthis.hiddenAttr%3D'webkitHidden'%3Bthis.visibilityEvent%3D'webkitvisibilitychange'%3B%7Ddocument.addEventListener(this.visibilityEvent%2Cthis._visibilityFn%2Cfalse)%3Bif(this.autoRefresh)%7Bwindow.addEventListener('ga-scroll'%2Cthis._engagementUpdateFn)%3B%7Dif(this.lazy)%7Bthis.lazyTriggered%3Dfalse%3Bthis.lazyRenderCheckFn%3Dfunction()%7Breturn%20_this3.lazyRenderCheck()%3B%7D%3Bwindow.addEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn%2Cfalse)%3Bthis.lazyRenderCheckFn()%3B%7Dthis.listenersSetup%3Dtrue%3B%7D%2CremoveListeners%3Afunction%20removeListeners()%7Bwindow.removeEventListener('location-changed'%2Cthis._locationChangedFn)%3Bwindow.removeEventListener('message'%2Cthis._onSafeFrameMsgFn)%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn)%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn)%3Bwindow.removeEventListener(this.visibilityEvent%2Cthis._visibilityFn)%3Bif(this.autoRefresh)%7Bwindow.removeEventListener('ga-scroll'%2Cthis._engagementUpdateFn)%3B%7Dthis.listenersSetup%3Dfalse%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20conditional%20sizes%20to%20DFP%20size%20sizes%20when%20we%20have%20enough%20available%20width%20(size%20width%20%2B%20margins)%0A%20%20%20%20%20%20%20%20%20*%2FaddConditionalSizes%3Afunction%20addConditionalSizes()%7Bvar%20_this4%3Dthis%3Bvar%20containerWidth%3Dvoid%200%3Bif(this.conditionalSizes.length)containerWidth%3Dthis._getNonZeroAttr(this.parentNode%2C'clientWidth')%3Bthis.conditionalSizes.forEach(function(s)%7Bif(Array.isArray(s)%26%26s.length%3D%3D%3D2)%7Bvar%20w%3DparseInt(s%5B0%5D%2C10)%7C%7C0%3Bvar%20minWidth%3Dw%2B_this4.conditionalSizesMargin*2%3Bif(w%26%26containerWidth%26%26containerWidth%3E%3DminWidth)%7B_this4.sizes.push(s)%3B%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Destroys%20the%20ad%20slot.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%20%7BBoolean%7D%20setupAgain%20%20whether%20to%20set%20the%20ad%20back%20up%20again%20after%20destroying.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BBoolean%7D%20success%20%20%20whether%20the%20destruction%20was%20successful%0A%20%20%20%20%20%20%20%20%20*%2Fdestroy%3Afunction%20destroy(setupAgain)%7B%2F%2F%20If%20no%20googletag%20just%20stop%20(if%20no%20googletag%20we%20haven't%20been%20setup%20anyways)%0Aif(!this._getNested(window%2C'googletag'%2C'apiReady'))%7Breturn%20false%3B%7Dvar%20success%3Dwindow.googletag.destroySlots(%5Bthis.gptSlot%5D)%3Bif(success%26%26setupAgain)%7Bthis._setupAd()%3B%7Dreturn%20success%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Scroll%20listener%20for%20lazy%20loading%0A%20%20%20%20%20%20%20%20%20*%2FlazyRenderCheck%3Afunction%20lazyRenderCheck()%7Bif(!this.lazyTriggered%26%26this.isVisible(this.renderMultiplier))%7Bthis.refresh()%3Bthis.lazyTriggered%3Dtrue%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyRenderCheckFn%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Scroll%20listener%20for%20lazy%20fetching%0A%20%20%20%20%20%20%20%20%20*%2FlazyFetchCheck%3Afunction%20lazyFetchCheck()%7Bif(this.isVisible(this.fetchMultiplier))%7Bthis.lazyFetchDefer.resolve()%3Bwindow.removeEventListener('ga-scroll'%2Cthis.lazyFetchCheckFn%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20the%20ad%20should%20be%20considered%20%22visible%22.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BBoolean%7D%20Visible%0A%20%20%20%20%20%20%20%20%20*%20*%2FisVisible%3Afunction%20isVisible(multiplier)%7Bmultiplier%3Dmultiplier%7C%7C0%3Bvar%20tolerance%3Dthis.viewportHeight*-multiplier%3Breturn%20this._checkVisible(this%2Ctolerance%2Cnull)%3D%3D%3D'visible'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20the%20last%20engagement%20metric%2C%20triggered%20by%20scroll%2Ffocus%2Fblur%0A%20%20%20%20%20%20%20%20%20*%2FengagementUpdate%3Afunction%20engagementUpdate()%7Bthis.lastEngagement%3DDate.now()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20a%20paramount%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupParamount%3Afunction%20setupParamount(data)%7Bthis._log('Paramount%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-paramount')%3Bthis.container.classList.remove('partner-bordered')%3Bthis.isParamount%3Dtrue%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20an%20inline%20spike%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupSpike%3Afunction%20setupSpike(data)%7Bthis._log('Branded%20Content%20Spike%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-spike')%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20What%20to%20do%20when%20a%20branded%20content%20tile%20ad%20is%20returned%0A%20%20%20%20%20%20%20%20%20*%2FsetupTile%3Afunction%20setupTile(data)%7Bthis._log('Branded%20Content%20Tile%20Data%20Received'%2Cdata)%3Bthis.classList.add('partner-tile')%3Bif(data.html)%7Bvar%20div%3Ddocument.createElement('div')%3Bdiv.classList.add('branded-content-tile-container')%3Bthis.parentNode.insertBefore(div%2Cthis.nextSibling)%3Bdiv.innerHTML%3Ddata.html%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Public%20method%20to%20add%20DFP%20targeting%20manually%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20key%20value%20targeting%20to%20set%20on%20the%20slot%0A%20%20%20%20%20%20%20%20%20*%20*%2FaddTargeting%3Afunction%20addTargeting(targeting)%7Bvar%20_this5%3Dthis%3Bthis.defineDefer.promise.then(function()%7B_this5._setTargeting(_this5.gptSlot%2Ctargeting)%3B%7D)%3B%7D%2CsetContainer%3Afunction%20setContainer()%7B%2F%2F%20Set%20container%20to%20load%20ad%20into%20(create%20if%20not%20in%20template)%0Athis.container%3Dthis.%24%24('.ad-container')%3Bif(!this.container)%7Bvar%20el%3Ddocument.createElement('div')%3Bel.classList.add('ad-container')%3BPolymer.dom(this.root).appendChild(el)%3Bthis.container%3Del%3B%7D%2F%2F%20Dynamic%20container%20styles%0Aif(!this.highImpact%26%26!this.noBorder)%7Bthis.container.classList.add('partner-bordered')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Displays%20an%20ad.%20Triggers%20an%20ad%20call%20that%20will%20include%20any%20defined%20slots%20that%20haven't%20been%20fetched%20yet.%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20the%20page%20level%20via%20%60window.ga_data.ads.displayQueue%60%0A%20%20%20%20%20%20%20%20%20*%2Fdisplay%3Afunction%20display()%7Bvar%20_this6%3Dthis%3Bif(!this.displayed)%7Bthis.displayed%3Dtrue%3Bthis.setContainer()%3Bwindow.googletag.cmd.push(function()%7B_this6._startDisplayedAndRenderedFallback()%3B_this6.container.id%3D_this6.slotId%3Bif(!(window.ga_privacy%26%26window.ga_privacy.gdprApplies)%26%26window.ga_data%26%26window.ga_data.utils%26%26typeof%20window.ga_data.utils.flushTcfStub%3D%3D%3D'function')%7Bwindow.ga_data.utils.flushTcfStub()%3B%7Dwindow.googletag.display(_this6.slotId)%3B%7D)%3B%2F%2F%20tracking%2Flogging%20first%20call%0Athis.request%3Dwindow.ga_data.ads.stats.requests%2B%2B%3B%2F%2F%20previously%20newrelic%0Athis._log('Displaying%20Slot')%3B%7D%7D%2C_minHeightChanged%3Afunction%20_minHeightChanged(newValue)%7Bif(newValue)this.style.minHeight%3DnewValue%2B20%2B'px'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Tells%20GPT%20to%20fetch%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%20Called%20at%20the%20page%20level%20via%20%60window.ga_data.ads.refreshQueue%60%0A%20%20%20%20%20%20%20%20%20*%20*%2FpubadsRefresh%3Afunction%20pubadsRefresh()%7Bvar%20_this7%3Dthis%3Bwindow.googletag.cmd.push(function()%7Bwindow.googletag.pubads().refresh(%5B_this7.gptSlot%5D%2C%7BchangeCorrelator%3Afalse%7D)%3B_this7._startDisplayedAndRenderedFallback()%3B%7D)%3B%2F%2F%20tracking%2Flogging%0Athis.request%3Dwindow.ga_data.ads.stats.requests%2B%2B%3B%2F%2F%20previously%20newrelic%0Athis._log('Refreshing%20Slot')%3B%7D%2C%2F%2F%20previously%20newrelic%20_mark%20function%0A%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gathers%20necessary%20information%20to%20set%20up%20a%20new%20ad%20slot%20for%20rendering.%0A%20%20%20%20%20%20%20%20%20*%2F_setupAd%3Afunction%20_setupAd()%7Bvar%20_this8%3Dthis%3Bthis._beforeSetupAd()%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3Bwindow.googletag.cmd.push(function()%7Breturn%20_this8._defineSlot()%3B%7D)%3Bthis.adIsSetup%3Dtrue%3Bthis._afterSetupAd()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Before%20Setup%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_beforeSetupAd%3Afunction%20_beforeSetupAd()%7B%2F%2F%20before%20setup%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20After%20Setup%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_afterSetupAd%3Afunction%20_afterSetupAd()%7B%2F%2F%20after%20setup%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Render%20ended%20function%20placeholder.%20To%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2FrenderEnded%3Afunction%20renderEnded(event)%7B%2F%2F%20rendered%20ended%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Render%20ended%20event%20triggered%20by%20Google%20for%20all%20slots%20when%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%201.%20Ad%20call%20is%20returned%20(after%20first%20ad%20on%20page%20is%20displayed)%2C%20and%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%202.%20Slot%20is%20displayed%20%26%20ad%20is%20rendered%20(INCONSISTENT%20as%20of%205-31-2018)%0A%20%20%20%20%20%20%20%20%20*%20Triggers%20the%20public%20rendered%20ended%20function%20if%20the%20ad%20is%20not%20empty.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20event%20DFP%20rendered%20event%20object%0A%20%20%20%20%20%20%20%20%20*%2F_renderEndedCheck%3Afunction%20_renderEndedCheck(event)%7Bif(event.slot.__gannettSlotId%3D%3D%3Dthis.slotId)%7Bif(event.isEmpty)%7Bthis._log('No%20Ad%20Delivered.%20Collapsing%20Ad')%3Bthis.style.display%3D'none'%3B%7Delse%20if(event.size%26%26event.size%5B1%5D%26%26this._checkVisible(this)%3D%3D%3D'below')%7B%2F%2F%20Resize%20if%20returned%20ad%20is%20smaller%20than%20static%20height%20and%20we're%20below%20the%20current%20viewport%0Athis.minHeight%3Devent.size%5B1%5D%3B%7Dthis.classList.remove('partner-loading')%3Bif(this.displayed)%7Bif(this.awaitingDisplayedAndRendered)%7Bif(this.displayedAndRenderedTO)clearTimeout(this.displayedAndRenderedTO)%3Bthis.awaitingDisplayedAndRendered%3Dfalse%3Bthis.onDisplayedAndRendered(event)%3B%7Delse%7B%2F%2F%20previously%20newrelic%0A%7D%7D%7D%7D%2ConDisplayedAndRendered%3Afunction%20onDisplayedAndRendered(event)%7Bthis._log('DisplayedAndRendered')%3Bif(this.autoRefresh)this._startAutoRefresh()%3B%2F%2F%20previously%20newrelic%0Athis.renderEnded(event)%3B%7D%2C_startDisplayedAndRenderedFallback%3Afunction%20_startDisplayedAndRenderedFallback()%7Bvar%20_this9%3Dthis%3Bvar%20renderFallbackTimeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'renderFallbackTimeout')%7C%7C2000%3Bthis.awaitingDisplayedAndRendered%3Dtrue%3Bthis.displayedAndRenderedTO%3DsetTimeout(function()%7B_this9.awaitingDisplayedAndRendered%3Dfalse%3B_this9.onDisplayedAndRendered(%7Bslot%3A%7B__gannettSlotId%3A_this9.slotId%7D%7D)%3B%2F%2F%20previously%20newrelic%0A%7D%2CrenderFallbackTimeout)%3B%7D%2C_startAutoRefresh%3Afunction%20_startAutoRefresh()%7Bvar%20_this10%3Dthis%3Bvar%20refreshTimeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'refreshRate')%7C%7C60000%3Bthis.canRefresh%3Dfalse%3Bif(this.autoRefreshTO)clearTimeout(this.autoRefreshTO)%3B%2F%2F%20Timeout%20before%20we%20allow%20the%20ad%20unit%20to%20refresh%0Athis.autoRefreshTO%3DsetTimeout(function()%7B_this10.canRefresh%3Dtrue%3B_this10._autoRefreshCheck()%3B%7D%2CrefreshTimeout)%3Bif(!this.viewableImpObserver)this._setupViewableImpObserver()%3B%7D%2C_activeViewCheck%3Afunction%20_activeViewCheck(event)%7Bif(event.slot.__gannettSlotId%3D%3D%3Dthis.slotId)%7Bthis._log('Activeview%20Fired')%3B%2F%2F%20previously%20newrelic%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sends%20a%20message%20to%20the%20slot's%20iframe.%0A%20%20%20%20%20%20%20%20%20*%2F_msgSlot%3Afunction%20_msgSlot(message)%7Bvar%20slot%3Dthis.slotOverride%7C%7Cthis.container.querySelector('div%20%3E%20iframe')%3Bvar%20slotWin%3Dslot%3Fslot.contentWindow%3A%7B%7D%3Bif(typeof%20slotWin.postMessage%3D%3D%3D'function')%7BslotWin.postMessage(message%2C'*')%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Defines%20a%20Google%20ad%20slot%2C%20to%20be%20filled%20by%20Google%20when%20an%20ad%20request%20is%20made.%0A%20%20%20%20%20%20%20%20%20*%2F_defineSlot%3Afunction%20_defineSlot()%7Bvar%20_this11%3Dthis%3Bif(this.gptSlot)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7Bvar%20gptSlot%3Dvoid%200%2Cpubads%3Dvoid%200%3Bvar%20adUnitPath%3D_this11._generatePath()%2Ctargeting%3D_this11._parseJsonObject(_this11.targeting.replace(%2F'%2Fg%2C'%22')%2C%7B%7D)%2Cexclusion%3D_this11.exclusion.split('%2C')%3Bpubads%3Dwindow.googletag.pubads()%3B_this11.gptSlot%3DgptSlot%3Dwindow.googletag.defineSlot(adUnitPath%2C_this11.sizes%2C_this11.slotId).addService(pubads)%3BgptSlot.__gannettSlotId%3D_this11.slotId%3B_this11._log('Slot%20Defined'%2CadUnitPath%2C_this11.sizes)%3B_this11.defineDefer.resolve()%3B%2F%2F%20Add%20event%20listener%20for%20slot%20render%20ended%0A%2F%2F%20Only%20add%20once%20to%20avoid%20adding%20multiples%20when%20destroying%2Frecreating%20slots%0Aif(!_this11.gptEventsAdded)%7Bpubads.addEventListener('slotRenderEnded'%2Cfunction(e)%7Breturn%20_this11._renderEndedCheck(e)%3B%7D)%3Bpubads.addEventListener('impressionViewable'%2Cfunction(e)%7Breturn%20_this11._activeViewCheck(e)%3B%7D)%3B_this11.gptEventsAdded%3Dtrue%3B%7D%2F%2F%20setup%20slot%20targeting%0A_this11._setupTargeting(gptSlot%2Ctargeting)%3B_this11._setExclusionTargeting(gptSlot%2Cexclusion)%3B%2F%2F%20Wrap%20in%20the%20resolved%20promise%2C%20to%20fix%20queuing%20issue%0A_this11.defineDefer.promise.then(function()%7Bif(!(_this11.lazy%7C%7C_this11.deferred))%7B_this11.refresh()%3B%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Generates%20ad%20unit%20path%20for%20DFP.%20Used%20when%20defining%20a%20new%20slot%2C%20as%20well%20as%20for%20bids%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ad%20Unit%20Path%20string%0A%20%20%20%20%20%20%20%20%20*%2F_generatePath%3Afunction%20_generatePath()%7Bvar%20overrides%3Dthis._getOverrides()%3Bvar%20dfpConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'dfp')%7C%7C%7B%7D%3Bvar%20accountId%3Doverrides.usatai%7C%7CdfpConfig.accountId%3Bvar%20accountName%3Doverrides.usatan%7C%7C(this.mobile%3FdfpConfig.mobileAccountName%3AdfpConfig.accountName)%3Bvar%20cst%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'cst')%3Bvar%20vendor%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'vendor')%3Bvar%20path%3D'%2F'%2BaccountId%2B'%2F'%2BaccountName%2B'%2F'%2Bthis.placement%3Bif(vendor)%7Bpath%2B%3D'-'%2Bvendor%3B%7Dif(cst)%7Bpath%2B%3D'%2F'%2Bcst%3B%7Dreturn%20this._sanitizeAdUnitPath(path)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sanitizes%20a%20string%20for%20use%20as%20a%20DFP%20Ad%20Unit.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%22Only%20letters%2C%20numbers%2C%20underscores%2C%20hyphens%2C%20periods%2C%20asterisks%2C%20forward%20slashes%2C%20backslashes%2C%0A%20%20%20%20%20%20%20%20%20*%20exclamations%2C%20left%20angle%20brackets%2C%20right%20angle%20brackets%2C%20colons%20and%20parentheses%20are%20allowed.%22%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fsupport.google.com%2Fdfp_premium%2Fanswer%2F177203%3Fhl%3Den%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnit%20%20string%20to%20be%20cleaned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20%20%20%20%20%20%20%20%20DFP%20compliant%20ad%20unit%20path%20string%0A%20%20%20%20%20%20%20%20%20*%2F_sanitizeAdUnitPath%3Afunction%20_sanitizeAdUnitPath(adUnit)%7Bif(typeof%20adUnit%3D%3D%3D'string')%7Breturn%20adUnit.replace(%2F%5B%5E%5Cw-*!%3C%3E%3A().%5C%5C%5C%2F%5D%2Fg%2C'')%3B%7Dreturn''%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20initial%20slot%20targeting%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20Targeting%20key%2Fvalue%20pairs%0A%20%20%20%20%20%20%20%20%20*%2F_setupTargeting%3Afunction%20_setupTargeting(gptSlot%2Ctargeting)%7B%2F%2F%20Add%20in%20some%20set%20keys%0Atargeting.position%3Dthis.placement%3Btargeting.adCount%3Dthis.adCount%3Btargeting.features%3Dthis.getFeatures()%3B%2F%2F%20Merge%20targeting%20set%20by%20the%20slot%20and%20targeting%20set%20on%20the%20element%0Atargeting%3DObject.assign(%7B%7D%2Cthis.slotTargeting%2C%7Bnsf%3Athis.nsfTargeting%7D%2Ctargeting)%3Bthis._setTargeting(gptSlot%2Ctargeting)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20targeting%20specified%20in%20the%20targeting%20object%20to%20the%20specified%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20targeting%20Targeting%20key%2Fvalue%20pairs%0A%20%20%20%20%20%20%20%20%20*%2F_setTargeting%3Afunction%20_setTargeting(gptSlot%2Ctargeting)%7Bvar%20key%3Dvoid%200%2Cvalue%3Dvoid%200%3Bfor(key%20in%20targeting)%7Bif(targeting.hasOwnProperty(key))%7Bvalue%3Dtargeting%5Bkey%5D%3Bif(!(typeof%20value%3D%3D%3D'undefined'%7C%7Cvalue%3D%3D%3Dnull%7C%7Cvalue%3D%3D%3D''%7C%7CArray.isArray(value)%26%26!value.length))%7BgptSlot.setTargeting(key%2CString(value))%3B%7D%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20targeting%20specified%20in%20the%20targeting%20object%20to%20the%20specified%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20gptSlot%20%20%20%20%20%20Google%20ad%20slot%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20%20exclusion%20%20%20%20Array%20of%20exclusion%20labels%20to%20be%20applied%0A%20%20%20%20%20%20%20%20%20*%2F_setExclusionTargeting%3Afunction%20_setExclusionTargeting(gptSlot%2Cexclusion)%7Bexclusion.forEach(function(value)%7Bif(value%26%26typeof%20value%3D%3D%3D'string')%7Bvalue.trim()%3BgptSlot.setCategoryExclusion(value)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20the%20index%20count%20of%20this%20type%20of%20ad%20placement.%20Used%20for%20ad%20targeting.%0A%20%20%20%20%20%20%20%20%20*%20Count%20is%20determined%20by%20the%20sequence%20in%20which%20ads%20are%20registered%20on%20the%20page.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7CNumber%7D%20Adcount%2C%20if%20last%20ad%20unit%2C%20will%20return%20an%20array%20with%20'last'%20and%20index%20value%0A%20%20%20%20%20%20%20%20%20*%2FgetAdCount%3Afunction%20getAdCount()%7B%2F%2F%20Add%20element%20to%20global%20placement%20list%20if%20not%20already%20present%0Aga_data.ads.placements%3Dga_data.ads.placements%7C%7C%7B%7D%3Bga_data.ads.placements%5Bthis.placement%5D%3Dga_data.ads.placements%5Bthis.placement%5D%7C%7C%5B%5D%3Bvar%20idx%3Dga_data.ads.placements%5Bthis.placement%5D.indexOf(this)%3Bif(idx%3C0)%7Bga_data.ads.placements%5Bthis.placement%5D.push(this)%3Breturn%20ga_data.ads.placements%5Bthis.placement%5D.length%3B%7Dreturn%20idx%2B1%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Compiles%20of%20list%20of%20target-able%20features%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20List%20of%20features%20for%20this%20slot%20that%20are%20enabled%0A%20%20%20%20%20%20%20%20%20*%2FgetFeatures%3Afunction%20getFeatures()%7Bvar%20features%3D%5B%5D%3Bvar%20overrides%3Dthis.getUrlParamValue('features')%3Bif(overrides)%7Breturn%20overrides.split('%2C')%3B%7Dif(this.lazy)features.push('lazy')%3Bif(this.autoRefresh)features.push('autorefresh')%3Bif(this.sticky)features.push('sticky')%3Bif(this.outstream)features.push('outstream')%3Bif(window.chrome)features.push('noautoplay')%3Breturn%20features%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Window%20listener%20for%20messages%20coming%20from%20SafeFrames%0A%20%20%20%20%20%20%20%20%20*%2F_onSafeFrameMsg%3Afunction%20_onSafeFrameMsg(e)%7B%2F%2F%20Check%20if%20the%20message%20is%20coming%20from%20a%20google%20iframe%2C%20and%20if%20we%20have%20the%20start%20of%20a%20JSON%20object%0Aif(e%26%26typeof%20e.data%3D%3D%3D'string'%26%26e.data.charAt(0)%3D%3D%3D'%7B')%7Btry%7Bvar%20data%3DJSON.parse(e.data)%3Bif(data.position%3D%3D%3Dthis.placement%26%26data.adCount%3D%3Dthis.adCount)%7Bthis._onDataReceived()%3Bswitch(data.adType)%7Bcase'spike'%3Athis.setupSpike(data)%3Bbreak%3Bcase'paramount'%3Athis.setupParamount(data)%3Bbreak%3Bcase'bcSpike'%3Athis.classList.add('partner-spike')%3Bbreak%3Bcase'tile'%3Athis.setupTile(data)%3B%7Dif(!this.viewabilityObserver)%7Bthis._setupViewabilityObserver()%3B%7Dwindow.removeEventListener('message'%2Cthis._onSafeFrameMsgFn)%3B%7D%7Dcatch(err)%7Bthis._log(this.tagName%2B'%20failed%20to%20parse%20JSON%20data'%2Cerr)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Placeholder%20for%20postmessage%20data%20recieved%20to%20be%20extended%20by%20ad%20position%20modules%0A%20%20%20%20%20%20%20%20%20*%2F_onDataReceived%3Afunction%20_onDataReceived()%7B%2F%2F%20data%20received%20placeholder%0A%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Will%20only%20allow%20autorefresh%20if%20the%20window%20is%20visible%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_onVisibilityChange%3Afunction%20_onVisibilityChange()%7Bvar%20visible%3D!document%5Bthis.hiddenAttr%5D%3Bthis.windowIsVisible%3Dvisible%3Bthis.engagementUpdate()%3Bif(visible)%7Bthis._autoRefreshCheck()%3B%7Dvar%20message%3DJSON.stringify(%7BgaMsg%3Atrue%2Cvisible%3Avisible%7D)%3Bthis._msgSlot(message)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Runs%20checks%20to%20see%20if%20the%20unit%20is%20visible%2C%20if%20the%20window%20is%20in%20focus%20and%20if%20the%20user%20has%20engaged%20with%20the%20page%20in%20the%20past%205%20minutes%20(configurable)%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_autoRefreshCheck%3Afunction%20_autoRefreshCheck()%7Bvar%20inactive_timeout%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2C'inactiveTimeout')%7C%7C300000%2Ctype%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'autorefresh'%2Cthis.placement%2C'type')%7C%7C'smart'%3Bif(this.canRefresh%26%26!this.isParamount%26%26(this.isViewable%26%26this.windowIsVisible%7C%7Ctype%3D%3D%3D'simple')%26%26this.lastEngagement%3E%3DDate.now()-inactive_timeout)%7Bvar%20navigationType%3D''%3Bif(this.windowIsVisible)%7BnavigationType%3D'adrefresh-on'%3B%7Delse%7BnavigationType%3D'adrefresh-off'%3B%7D%2F%2F%20update%20targeting%20so%20incremental%20revenue%20can%20be%20tracked%0Athis._setTargeting(this.gptSlot%2C%7BnavigationType%3AnavigationType%7D)%3Bthis.refresh()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20observer%20to%20check%20if%20the%20ad%20is%2050%25%20viewable%20for%20the%20smallest%20IAB%20standard%20size%20of%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_setupViewableImpObserver%3Afunction%20_setupViewableImpObserver()%7Bvar%20_this12%3Dthis%3Bvar%20topMargin%3Dthis._getSmallestHeight()%2F2%2Coptions%3D%7Broot%3Anull%2CrootMargin%3A'-'%2BtopMargin%2B'px%200px%200px%200px'%2Cthreshold%3A%5B0.5%5D%7D%3Bthis.viewableImpObserver%3Dnew%20IntersectionObserver(function(entries)%7Breturn%20_this12._viewableImpCheck(entries)%3B%7D%2Coptions)%3Bthis.viewableImpObserver.observe(this)%3B%7D%2C_viewableImpCheck%3Afunction%20_viewableImpCheck(entries)%7Bvar%20_this13%3Dthis%3Bentries.forEach(function(entry)%7Bvar%20ratio%3Dentry.intersectionRatio%2Cviewable%3Dratio%3E%3D0.5%3B_this13.isViewable%3Dviewable%3Bif(viewable)%7B_this13._autoRefreshCheck()%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20observer%20to%20broadcast%20viewability%20info%20to%20Paramount%20ads.%0A%20%20%20%20%20%20%20%20%20*%20Threshold%20value%20gets%20set%20in%20the%20config.%20Default%20threshold%20%3D%200.1%20(10%25%20in%20view).%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F_setupViewabilityObserver%3Afunction%20_setupViewabilityObserver()%7Bvar%20_this14%3Dthis%3Bvar%20viewabilityThreshold%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'viewability'%2C'threshold')%7C%7C0.1%3Bvar%20options%3D%7Broot%3Anull%2Cthreshold%3A%5BviewabilityThreshold%5D%7D%3Bthis.viewabilityObserver%3Dnew%20IntersectionObserver(function(entries)%7Breturn%20_this14._viewabilityCheck(entries)%3B%7D%2Coptions)%3Bthis.viewabilityObserver.observe(this)%3B%7D%2C_viewabilityCheck%3Afunction%20_viewabilityCheck(entries)%7Bvar%20_this15%3Dthis%3Bvar%20viewabilityThreshold%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'viewability'%2C'threshold')%7C%7C0.1%3Bentries.forEach(function(entry)%7Bvar%20ratio%3Dentry.intersectionRatio%2CisVisible%3Dratio%3E%3DviewabilityThreshold%2Cmessage%3DJSON.stringify(%7BgaMsg%3Atrue%2Cvisible%3AisVisible%7D)%3B_this15._msgSlot(message)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20the%20smallest%20standard%20IAB%20ad%20height%20of%20the%20ad%20slots%20defined%20sizes%2C%20defaults%20to%2050%20since%20that's%20the%20smallest%20IAB%20height%20we'd%20encounter%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BNumber%7D%20Height%20in%20px%20of%20the%20smallest%20standard%20IAB%20size%20that%20matches%20a%20size%20of%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_getSmallestHeight%3Afunction%20_getSmallestHeight()%7Bvar%20iabHeights%3D%5B50%2C90%2C250%2C600%2C1050%5D%2CslotHeights%3D(this.sizes%7C%7C%5B%5D).map(function(size)%7Breturn%20size%5B1%5D%3B%7D)%3Breturn%20iabHeights.find(function(height)%7Bif(slotHeights.indexOf(height)!%3D%3D-1)return%20height%3B%7D)%7C%7C50%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Slot%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerSlot%3DPartnerSlot%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-slot.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-slot.html.js%0A",
            "totalBytes": 28581,
            "wastedBytes": 10292,
            "wastedPercent": 36.00993667121515
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20'use%20strict'%3B%0A%0A%20%20Polymer(%7B%0A%0A%20%20%20%20is%3A%20'iron-ajax'%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20before%20a%20request%20is%20sent.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20iron-ajax-presend%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20a%20request%20is%20sent.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20request%0A%20%20%20%20%20*%20%40event%20iron-ajax-request%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20a%20response%20is%20received.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20response%0A%20%20%20%20%20*%20%40event%20iron-ajax-response%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Fired%20when%20an%20error%20is%20received.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40event%20error%0A%20%20%20%20%20*%20%40event%20iron-ajax-error%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20hidden%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20URL%20target%20of%20the%20request.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20url%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20An%20object%20that%20contains%20query%20parameters%20to%20be%20appended%20to%20the%0A%20%20%20%20%20%20%20*%20specified%20%60url%60%20when%20generating%20a%20request.%20If%20you%20wish%20to%20set%20the%20body%0A%20%20%20%20%20%20%20*%20content%20when%20making%20a%20POST%20request%2C%20you%20should%20use%20the%20%60body%60%20property%0A%20%20%20%20%20%20%20*%20instead.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20params%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20HTTP%20method%20to%20use%20such%20as%20'GET'%2C%20'POST'%2C%20'PUT'%2C%20or%20'DELETE'.%0A%20%20%20%20%20%20%20*%20Default%20is%20'GET'.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20method%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'GET'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20HTTP%20request%20headers%20to%20send.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%20%3Ciron-ajax%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20auto%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20url%3D%22http%3A%2F%2Fsomesite.com%22%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20headers%3D'%7B%22X-Requested-With%22%3A%20%22XMLHttpRequest%22%7D'%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20handle-as%3D%22json%22%3E%3C%2Firon-ajax%3E%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%3A%20setting%20a%20%60Content-Type%60%20header%20here%20will%20override%20the%20value%0A%20%20%20%20%20%20%20*%20specified%20by%20the%20%60contentType%60%20property%20of%20this%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20headers%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Content%20type%20to%20use%20when%20sending%20data.%20If%20the%20%60contentType%60%20property%0A%20%20%20%20%20%20%20*%20is%20set%20and%20a%20%60Content-Type%60%20header%20is%20specified%20in%20the%20%60headers%60%0A%20%20%20%20%20%20%20*%20property%2C%20the%20%60headers%60%20property%20value%20will%20take%20precedence.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Varies%20the%20handling%20of%20the%20%60body%60%20param.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20contentType%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20null%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Body%20content%20to%20send%20with%20the%20request%2C%20typically%20used%20with%20%22POST%22%0A%20%20%20%20%20%20%20*%20requests.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20body%20is%20a%20string%20it%20will%20be%20sent%20unmodified.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20If%20Content-Type%20is%20set%20to%20a%20value%20listed%20below%2C%20then%0A%20%20%20%20%20%20%20*%20the%20body%20will%20be%20encoded%20accordingly.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20*%20%60content-type%3D%22application%2Fjson%22%60%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20*%20body%20is%20encoded%20like%20%60%7B%22foo%22%3A%22bar%20baz%22%2C%22x%22%3A1%7D%60%0A%20%20%20%20%20%20%20*%20%20%20%20*%20%60content-type%3D%22application%2Fx-www-form-urlencoded%22%60%0A%20%20%20%20%20%20%20*%20%20%20%20%20%20*%20body%20is%20encoded%20like%20%60foo%3Dbar%2Bbaz%26x%3D1%60%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Otherwise%20the%20body%20will%20be%20passed%20to%20the%20browser%20unmodified%2C%20and%20it%0A%20%20%20%20%20%20%20*%20will%20handle%20any%20encoding%20(e.g.%20for%20FormData%2C%20Blob%2C%20ArrayBuffer).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20(ArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7Cnull%7Cstring%7Cundefined%7CObject)%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20body%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20null%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Toggle%20whether%20XHR%20is%20synchronous%20or%20asynchronous.%20Don't%20change%20this%0A%20%20%20%20%20%20%20*%20to%20true%20unless%20You%20Know%20What%20You%20Are%20Doing%E2%84%A2.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20sync%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Specifies%20what%20data%20to%20store%20in%20the%20%60response%60%20property%2C%20and%0A%20%20%20%20%20%20%20*%20to%20deliver%20as%20%60event.detail.response%60%20in%20%60response%60%20events.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20One%20of%3A%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60text%60%3A%20uses%20%60XHR.responseText%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60xml%60%3A%20uses%20%60XHR.responseXML%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60json%60%3A%20uses%20%60XHR.responseText%60%20parsed%20as%20JSON.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60arraybuffer%60%3A%20uses%20%60XHR.response%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60blob%60%3A%20uses%20%60XHR.response%60.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%20%20%20%60document%60%3A%20uses%20%60XHR.response%60.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20handleAs%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'json'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20withCredentials%20flag%20on%20the%20request.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20withCredentials%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20the%20timeout%20flag%20on%20the%20request.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20timeout%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20value%3A%200%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20automatically%20performs%20an%20Ajax%20request%20when%20either%20%60url%60%20or%0A%20%20%20%20%20%20%20*%20%60params%60%20changes.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20auto%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20error%20messages%20will%20automatically%20be%20logged%20to%20the%20console.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20verbose%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20most%20recent%20request%20made%20by%20this%20iron-ajax%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastRequest%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20%60progress%60%20property%20of%20this%20element's%20%60lastRequest%60.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastProgress%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20while%20lastRequest%20is%20in%20flight.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20loading%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20lastRequest's%20response.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Note%20that%20lastResponse%20and%20lastError%20are%20set%20when%20lastRequest%20finishes%2C%0A%20%20%20%20%20%20%20*%20so%20if%20loading%20is%20true%2C%20then%20lastResponse%20and%20lastError%20will%20correspond%0A%20%20%20%20%20%20%20*%20to%20the%20result%20of%20the%20previous%20request.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20type%20of%20the%20response%20is%20determined%20by%20the%20value%20of%20%60handleAs%60%20at%0A%20%20%20%20%20%20%20*%20the%20time%20that%20the%20request%20was%20generated.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BObject%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastResponse%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20lastRequest's%20error%2C%20if%20any.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BObject%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20lastError%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20An%20Array%20of%20all%20in-flight%20requests%20originating%20from%20this%20iron-ajax%0A%20%20%20%20%20%20%20*%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20activeRequests%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Length%20of%20time%20in%20milliseconds%20to%20debounce%20multiple%20automatically%20generated%20requests.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20debounceDuration%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20value%3A%200%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Prefix%20to%20be%20stripped%20from%20a%20JSON%20response%20before%20parsing%20it.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20In%20order%20to%20prevent%20an%20attack%20using%20CSRF%20with%20Array%20responses%0A%20%20%20%20%20%20%20*%20(http%3A%2F%2Fhaacked.com%2Farchive%2F2008%2F11%2F20%2Fanatomy-of-a-subtle-json-vulnerability.aspx%2F)%0A%20%20%20%20%20%20%20*%20many%20backends%20will%20mitigate%20this%20by%20prefixing%20all%20JSON%20response%20bodies%0A%20%20%20%20%20%20%20*%20with%20a%20string%20that%20would%20be%20nonsensical%20to%20a%20JavaScript%20parser.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20jsonPrefix%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20By%20default%2C%20iron-ajax's%20events%20do%20not%20bubble.%20Setting%20this%20attribute%20will%20cause%20its%0A%20%20%20%20%20%20%20*%20request%20and%20response%20events%20as%20well%20as%20its%20iron-ajax-request%2C%20-response%2C%20%20and%20-error%0A%20%20%20%20%20%20%20*%20events%20to%20bubble%20to%20the%20window%20object.%20The%20vanilla%20error%20event%20never%20bubbles%20when%0A%20%20%20%20%20%20%20*%20using%20shadow%20dom%20even%20if%20this.bubbles%20is%20true%20because%20a%20scoped%20flag%20is%20not%20passed%20with%0A%20%20%20%20%20%20%20*%20it%20(first%20link)%20and%20because%20the%20shadow%20dom%20spec%20did%20not%20used%20to%20allow%20certain%20events%2C%0A%20%20%20%20%20%20%20*%20including%20events%20named%20error%2C%20to%20leak%20outside%20of%20shadow%20trees%20(second%20link).%0A%20%20%20%20%20%20%20*%20https%3A%2F%2Fwww.w3.org%2FTR%2Fshadow-dom%2F%23scoped-flag%0A%20%20%20%20%20%20%20*%20https%3A%2F%2Fwww.w3.org%2FTR%2F2015%2FWD-shadow-dom-20151215%2F%23events-that-are-not-leaked-into-ancestor-trees%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20bubbles%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Changes%20the%20%5B%60completes%60%5D(iron-request%23property-completes)%20promise%20chain%20%0A%20%20%20%20%20%20%20*%20from%20%60generateRequest%60%20to%20reject%20with%20an%20object%0A%20%20%20%20%20%20%20*%20containing%20the%20original%20request%2C%20as%20well%20an%20error%20message.%0A%20%20%20%20%20%20%20*%20If%20false%20(default)%2C%20the%20promise%20rejects%20with%20an%20error%20message%20only.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20rejectWithRequest%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundHandleResponse%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._handleResponse.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20observers%3A%20%5B%0A%20%20%20%20%20%20'_requestOptionsChanged(url%2C%20method%2C%20params.*%2C%20headers%2C%20contentType%2C%20'%20%2B%0A%20%20%20%20%20%20%20%20%20%20'body%2C%20sync%2C%20handleAs%2C%20jsonPrefix%2C%20withCredentials%2C%20timeout%2C%20auto)'%0A%20%20%20%20%5D%2C%0A%0A%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20this._boundOnProgressChanged%20%3D%20this._onProgressChanged.bind(this)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20query%20string%20that%20should%20be%20appended%20to%20the%20%60url%60%2C%20serialized%20from%0A%20%20%20%20%20*%20the%20current%20value%20of%20%60params%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20queryString%20()%20%7B%0A%20%20%20%20%20%20var%20queryParts%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20var%20param%3B%0A%20%20%20%20%20%20var%20value%3B%0A%0A%20%20%20%20%20%20for%20(param%20in%20this.params)%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20this.params%5Bparam%5D%3B%0A%20%20%20%20%20%20%20%20param%20%3D%20window.encodeURIComponent(param)%3B%0A%0A%20%20%20%20%20%20%20%20if%20(Array.isArray(value))%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20value.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20queryParts.push(param%20%2B%20'%3D'%20%2B%20window.encodeURIComponent(value%5Bi%5D))%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(value%20!%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20queryParts.push(param%20%2B%20'%3D'%20%2B%20window.encodeURIComponent(value))%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20queryParts.push(param)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20queryParts.join('%26')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20The%20%60url%60%20with%20query%20string%20(if%20%60params%60%20are%20specified)%2C%20suitable%20for%0A%20%20%20%20%20*%20providing%20to%20an%20%60iron-request%60%20instance.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20requestUrl()%20%7B%0A%20%20%20%20%20%20var%20queryString%20%3D%20this.queryString%3B%0A%20%20%20%20%20%20var%20url%20%3D%20this.url%20%7C%7C%20''%3B%0A%0A%20%20%20%20%20%20if%20(queryString)%20%7B%0A%20%20%20%20%20%20%20%20var%20bindingChar%20%3D%20url.indexOf('%3F')%20%3E%3D%200%20%3F%20'%26'%20%3A%20'%3F'%3B%0A%20%20%20%20%20%20%20%20return%20url%20%2B%20bindingChar%20%2B%20queryString%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20url%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20An%20object%20that%20maps%20header%20names%20to%20header%20values%2C%20first%20applying%20the%0A%20%20%20%20%20*%20the%20value%20of%20%60Content-Type%60%20and%20then%20overlaying%20the%20headers%20specified%0A%20%20%20%20%20*%20in%20the%20%60headers%60%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BObject%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20requestHeaders()%20%7B%0A%20%20%20%20%20%20var%20headers%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20var%20contentType%20%3D%20this.contentType%3B%0A%20%20%20%20%20%20if%20(contentType%20%3D%3D%20null%20%26%26%20(typeof%20this.body%20%3D%3D%3D%20'string'))%20%7B%0A%20%20%20%20%20%20%20%20contentType%20%3D%20'application%2Fx-www-form-urlencoded'%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(contentType)%20%7B%0A%20%20%20%20%20%20%20%20headers%5B'content-type'%5D%20%3D%20contentType%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20header%3B%0A%0A%20%20%20%20%20%20if%20(typeof%20this.headers%20%3D%3D%3D%20'object')%20%7B%0A%20%20%20%20%20%20%20%20for%20(header%20in%20this.headers)%20%7B%0A%20%20%20%20%20%20%20%20%20%20headers%5Bheader%5D%20%3D%20this.headers%5Bheader%5D.toString()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20headers%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onProgressChanged%3A%20function(event)%20%7B%0A%20%20%20%20%20%20this._setLastProgress(event.detail.value)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Request%20options%20suitable%20for%20generating%20an%20%60iron-request%60%20instance%20based%0A%20%20%20%20%20*%20on%20the%20current%20state%20of%20the%20%60iron-ajax%60%20instance's%20properties.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B%7B%0A%20%20%20%20%20*%20%20%20url%3A%20string%2C%0A%20%20%20%20%20*%20%20%20method%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20async%3A%20(boolean%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20body%3A%20(ArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7Cnull%7Cstring%7Cundefined%7CObject)%2C%0A%20%20%20%20%20*%20%20%20headers%3A%20(Object%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20handleAs%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20jsonPrefix%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20withCredentials%3A%20(boolean%7Cundefined)%7D%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20toRequestOptions%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20url%3A%20this.requestUrl%20%7C%7C%20''%2C%0A%20%20%20%20%20%20%20%20method%3A%20this.method%2C%0A%20%20%20%20%20%20%20%20headers%3A%20this.requestHeaders%2C%0A%20%20%20%20%20%20%20%20body%3A%20this.body%2C%0A%20%20%20%20%20%20%20%20async%3A%20!this.sync%2C%0A%20%20%20%20%20%20%20%20handleAs%3A%20this.handleAs%2C%0A%20%20%20%20%20%20%20%20jsonPrefix%3A%20this.jsonPrefix%2C%0A%20%20%20%20%20%20%20%20withCredentials%3A%20this.withCredentials%2C%0A%20%20%20%20%20%20%20%20timeout%3A%20this.timeout%2C%0A%20%20%20%20%20%20%20%20rejectWithRequest%3A%20this.rejectWithRequest%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Performs%20an%20AJAX%20request%20to%20the%20specified%20URL.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!IronRequestElement%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20generateRequest%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20request%20%3D%20%2F**%20%40type%20%7B!IronRequestElement%7D%20*%2F%20(document.createElement('iron-request'))%3B%0A%20%20%20%20%20%20var%20requestOptions%20%3D%20this.toRequestOptions()%3B%0A%0A%20%20%20%20%20%20this.push('activeRequests'%2C%20request)%3B%0A%0A%20%20%20%20%20%20request.completes.then(%0A%20%20%20%20%20%20%20%20this._boundHandleResponse%0A%20%20%20%20%20%20).catch(%0A%20%20%20%20%20%20%20%20this._handleError.bind(this%2C%20request)%0A%20%20%20%20%20%20).then(%0A%20%20%20%20%20%20%20%20this._discardRequest.bind(this%2C%20request)%0A%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20var%20evt%20%3D%20this.fire('iron-ajax-presend'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20options%3A%20requestOptions%0A%20%20%20%20%20%20%7D%2C%20%7Bbubbles%3A%20this.bubbles%2C%20cancelable%3A%20true%7D)%3B%0A%0A%20%20%20%20%20%20if%20(evt.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20request.abort()%3B%0A%20%20%20%20%20%20%20%20request.rejectCompletes(request)%3B%0A%20%20%20%20%20%20%20%20return%20request%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(this.lastRequest)%20%7B%0A%20%20%20%20%20%20%20%20this.lastRequest.removeEventListener('iron-request-progress-changed'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._boundOnProgressChanged)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20request.addEventListener('iron-request-progress-changed'%2C%0A%20%20%20%20%20%20%20%20%20%20this._boundOnProgressChanged)%3B%0A%0A%20%20%20%20%20%20request.send(requestOptions)%3B%0A%20%20%20%20%20%20this._setLastProgress(null)%3B%0A%20%20%20%20%20%20this._setLastRequest(request)%3B%0A%20%20%20%20%20%20this._setLoading(true)%3B%0A%0A%20%20%20%20%20%20this.fire('request'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20options%3A%20requestOptions%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20this.fire('iron-ajax-request'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20options%3A%20requestOptions%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20return%20request%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleResponse%3A%20function(request)%20%7B%0A%20%20%20%20%20%20if%20(request%20%3D%3D%3D%20this.lastRequest)%20%7B%0A%20%20%20%20%20%20%20%20this._setLastResponse(request.response)%3B%0A%20%20%20%20%20%20%20%20this._setLastError(null)%3B%0A%20%20%20%20%20%20%20%20this._setLoading(false)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this.fire('response'%2C%20request%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20this.fire('iron-ajax-response'%2C%20request%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleError%3A%20function(request%2C%20error)%20%7B%0A%20%20%20%20%20%20if%20(this.verbose)%20%7B%0A%20%20%20%20%20%20%20%20Polymer.Base._error(error)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(request%20%3D%3D%3D%20this.lastRequest)%20%7B%0A%20%20%20%20%20%20%20%20this._setLastError(%7B%0A%20%20%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20status%3A%20request.xhr.status%2C%0A%20%20%20%20%20%20%20%20%20%20statusText%3A%20request.xhr.statusText%2C%0A%20%20%20%20%20%20%20%20%20%20response%3A%20request.xhr.response%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20this._setLastResponse(null)%3B%0A%20%20%20%20%20%20%20%20this._setLoading(false)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Tests%20fail%20if%20this%20goes%20after%20the%20normal%20this.fire('error'%2C%20...)%0A%20%20%20%20%20%20this.fire('iron-ajax-error'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20error%3A%20error%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20this.fire('error'%2C%20%7B%0A%20%20%20%20%20%20%20%20request%3A%20request%2C%0A%20%20%20%20%20%20%20%20error%3A%20error%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20bubbles%3A%20this.bubbles%2C%0A%20%20%20%20%20%20%20%20composed%3A%20true%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_discardRequest%3A%20function(request)%20%7B%0A%20%20%20%20%20%20var%20requestIndex%20%3D%20this.activeRequests.indexOf(request)%3B%0A%0A%20%20%20%20%20%20if%20(requestIndex%20%3E%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this.splice('activeRequests'%2C%20requestIndex%2C%201)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_requestOptionsChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20this.debounce('generate-request'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.url%20%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(this.auto)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.generateRequest()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20this.debounceDuration)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-ajax%2Firon-ajax.html.js%0A",
            "totalBytes": 14924,
            "wastedBytes": 10118,
            "wastedPercent": 67.79922262431309
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20'use%20strict'%3B%0A%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'iron-request'%2C%0A%0A%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20hidden%3A%20true%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20XMLHttpRequest%20instance%20used%20to%20generate%20the%0A%20%20%20%20%20%20%20*%20network%20request.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BXMLHttpRequest%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20xhr%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20new%20XMLHttpRequest()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20parsed%20response%20body%2C%20if%20the%20%60xhr%60%20has%20completely%0A%20%20%20%20%20%20%20*%20resolved.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7B*%7D%0A%20%20%20%20%20%20%20*%20%40default%20null%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20response%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20status%20code%2C%20if%20the%20%60xhr%60%20has%20completely%20resolved.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20status%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Number%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%200%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20reference%20to%20the%20status%20text%2C%20if%20the%20%60xhr%60%20has%20completely%20resolved.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20statusText%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20''%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20promise%20that%20resolves%20when%20the%20%60xhr%60%20response%20comes%20back%2C%20or%20rejects%0A%20%20%20%20%20%20%20*%20if%20there%20is%20an%20error%20before%20the%20%60xhr%60%20completes.%0A%20%20%20%20%20%20%20*%20The%20resolve%20callback%20is%20called%20with%20the%20original%20request%20as%20an%20argument.%0A%20%20%20%20%20%20%20*%20By%20default%2C%20the%20reject%20callback%20is%20called%20with%20an%20%60Error%60%20as%20an%20argument.%0A%20%20%20%20%20%20%20*%20If%20%60rejectWithRequest%60%20is%20true%2C%20the%20reject%20callback%20is%20called%20with%20an%0A%20%20%20%20%20%20%20*%20object%20with%20two%20keys%3A%20%60request%60%2C%20the%20original%20request%2C%20and%20%60error%60%2C%20the%0A%20%20%20%20%20%20%20*%20error%20object.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40type%20%7BPromise%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20completes%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20new%20Promise(function(resolve%2C%20reject)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.resolveCompletes%20%3D%20resolve%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.rejectCompletes%20%3D%20reject%3B%0A%20%20%20%20%20%20%20%20%20%20%7D.bind(this))%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20An%20object%20that%20contains%20progress%20information%20emitted%20by%20the%20XHR%20if%0A%20%20%20%20%20%20%20*%20available.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40default%20%7B%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20progress%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Aborted%20will%20be%20true%20if%20an%20abort%20of%20the%20request%20is%20attempted.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20aborted%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Errored%20will%20be%20true%20if%20the%20browser%20fired%20an%20error%20event%20from%20the%0A%20%20%20%20%20%20%20*%20XHR%20object%20(mainly%20network%20errors).%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20errored%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20TimedOut%20will%20be%20true%20if%20the%20XHR%20threw%20a%20timeout%20event.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20timedOut%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Succeeded%20is%20true%20if%20the%20request%20succeeded.%20The%20request%20succeeded%20if%20it%0A%20%20%20%20%20*%20loaded%20without%20error%2C%20wasn't%20aborted%2C%20and%20the%20status%20code%20is%20%E2%89%A5%20200%2C%20and%0A%20%20%20%20%20*%20%3C%20300%2C%20or%20if%20the%20status%20code%20is%200.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20status%20code%200%20is%20accepted%20as%20a%20success%20because%20some%20schemes%20-%20e.g.%0A%20%20%20%20%20*%20file%3A%2F%2F%20-%20don't%20provide%20status%20codes.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20get%20succeeded()%20%7B%0A%20%20%20%20%20%20if%20(this.errored%20%7C%7C%20this.aborted%20%7C%7C%20this.timedOut)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20status%20%3D%20this.xhr.status%20%7C%7C%200%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Note%3A%20if%20we%20are%20using%20the%20file%3A%2F%2F%20protocol%2C%20the%20status%20code%20will%20be%200%0A%20%20%20%20%20%20%2F%2F%20for%20all%20outcomes%20(successful%20or%20otherwise).%0A%20%20%20%20%20%20return%20status%20%3D%3D%3D%200%20%7C%7C%0A%20%20%20%20%20%20%20%20(status%20%3E%3D%20200%20%26%26%20status%20%3C%20300)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Sends%20an%20HTTP%20request%20to%20the%20server%20and%20returns%20a%20promise%20(see%20the%20%60completes%60%0A%20%20%20%20%20*%20property%20for%20details).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20handling%20of%20the%20%60body%60%20parameter%20will%20vary%20based%20on%20the%20Content-Type%0A%20%20%20%20%20*%20header.%20See%20the%20docs%20for%20iron-ajax's%20%60body%60%20property%20for%20details.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20url%3A%20string%2C%0A%20%20%20%20%20*%20%20%20method%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20async%3A%20(boolean%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20body%3A%20(ArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7Cnull%7Cstring%7Cundefined%7CObject)%2C%0A%20%20%20%20%20*%20%20%20headers%3A%20(Object%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20handleAs%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20jsonPrefix%3A%20(string%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20withCredentials%3A%20(boolean%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20timeout%3A%20(Number%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20rejectWithRequest%3A%20(boolean%7Cundefined)%7D%7D%20options%20-%0A%20%20%20%20%20*%20%20%20-%20url%20The%20url%20to%20which%20the%20request%20is%20sent.%0A%20%20%20%20%20*%20%20%20-%20method%20The%20HTTP%20method%20to%20use%2C%20default%20is%20GET.%0A%20%20%20%20%20*%20%20%20-%20async%20By%20default%2C%20all%20requests%20are%20sent%20asynchronously.%20To%20send%20synchronous%20requests%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20set%20to%20false.%0A%20%20%20%20%20*%20%20%20-%20%20body%20The%20content%20for%20the%20request%20body%20for%20POST%20method.%0A%20%20%20%20%20*%20%20%20-%20%20headers%20HTTP%20request%20headers.%0A%20%20%20%20%20*%20%20%20-%20%20handleAs%20The%20response%20type.%20Default%20is%20'text'.%0A%20%20%20%20%20*%20%20%20-%20%20withCredentials%20Whether%20or%20not%20to%20send%20credentials%20on%20the%20request.%20Default%20is%20false.%0A%20%20%20%20%20*%20%20%20-%20%20timeout%20-%20Timeout%20for%20request%2C%20in%20milliseconds.%0A%20%20%20%20%20*%20%20%20-%20%20rejectWithRequest%20Set%20to%20true%20to%20include%20the%20request%20object%20with%20promise%20rejections.%0A%20%20%20%20%20*%20%40return%20%7BPromise%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20send%3A%20function(options)%20%7B%0A%20%20%20%20%20%20var%20xhr%20%3D%20this.xhr%3B%0A%0A%20%20%20%20%20%20if%20(xhr.readyState%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20xhr.addEventListener('progress'%2C%20function(progress)%20%7B%0A%20%20%20%20%20%20%20%20this._setProgress(%7B%0A%20%20%20%20%20%20%20%20%20%20lengthComputable%3A%20progress.lengthComputable%2C%0A%20%20%20%20%20%20%20%20%20%20loaded%3A%20progress.loaded%2C%0A%20%20%20%20%20%20%20%20%20%20total%3A%20progress.total%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Webcomponents%20v1%20spec%20does%20not%20fire%20*-changed%20events%20when%20not%20connected%0A%20%20%20%20%20%20%20%20this.fire('iron-request-progress-changed'%2C%20%7B%20value%3A%20this.progress%20%7D)%3B%0A%20%20%20%20%20%20%7D.bind(this))%0A%0A%20%20%20%20%20%20xhr.addEventListener('error'%2C%20function(error)%20%7B%0A%20%20%20%20%20%20%20%20this._setErrored(true)%3B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20xhr.addEventListener('timeout'%2C%20function(error)%20%7B%0A%20%20%20%20%20%20%20%20this._setTimedOut(true)%3B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20xhr.addEventListener('abort'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._setAborted(true)%3B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20var%20error%20%3D%20new%20Error('Request%20aborted.')%3B%0A%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Called%20after%20all%20of%20the%20above.%0A%20%20%20%20%20%20xhr.addEventListener('loadend'%2C%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._updateStatus()%3B%0A%20%20%20%20%20%20%20%20this._setResponse(this.parseResponse())%3B%0A%0A%20%20%20%20%20%20%20%20if%20(!this.succeeded)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20error%20%3D%20new%20Error('The%20request%20failed%20with%20status%20code%3A%20'%20%2B%20this.xhr.status)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20response%20%3D%20options.rejectWithRequest%20%3F%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20error%3A%20error%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20request%3A%20this%0A%20%20%20%20%20%20%20%20%20%20%7D%20%3A%20error%3B%0A%20%20%20%20%20%20%20%20%20%20this.rejectCompletes(response)%3B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.resolveCompletes(this)%3B%0A%20%20%20%20%20%20%7D.bind(this))%3B%0A%0A%20%20%20%20%20%20this.url%20%3D%20options.url%3B%0A%20%20%20%20%20%20var%20isXHRAsync%20%3D%20options.async%20!%3D%3D%20false%3B%0A%20%20%20%20%20%20xhr.open(%0A%20%20%20%20%20%20%20%20options.method%20%7C%7C%20'GET'%2C%0A%20%20%20%20%20%20%20%20options.url%2C%0A%20%20%20%20%20%20%20%20isXHRAsync%0A%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20var%20acceptType%20%3D%20%7B%0A%20%20%20%20%20%20%20%20'json'%3A%20'application%2Fjson'%2C%0A%20%20%20%20%20%20%20%20'text'%3A%20'text%2Fplain'%2C%0A%20%20%20%20%20%20%20%20'html'%3A%20'text%2Fhtml'%2C%0A%20%20%20%20%20%20%20%20'xml'%3A%20'application%2Fxml'%2C%0A%20%20%20%20%20%20%20%20'arraybuffer'%3A%20'application%2Foctet-stream'%0A%20%20%20%20%20%20%7D%5Boptions.handleAs%5D%3B%0A%20%20%20%20%20%20var%20headers%20%3D%20options.headers%20%7C%7C%20Object.create(null)%3B%0A%20%20%20%20%20%20var%20newHeaders%20%3D%20Object.create(null)%3B%0A%20%20%20%20%20%20for%20(var%20key%20in%20headers)%20%7B%0A%20%20%20%20%20%20%20%20newHeaders%5Bkey.toLowerCase()%5D%20%3D%20headers%5Bkey%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20headers%20%3D%20newHeaders%3B%0A%0A%20%20%20%20%20%20if%20(acceptType%20%26%26%20!headers%5B'accept'%5D)%20%7B%0A%20%20%20%20%20%20%20%20headers%5B'accept'%5D%20%3D%20acceptType%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20Object.keys(headers).forEach(function(requestHeader)%20%7B%0A%20%20%20%20%20%20%20%20if%20(%2F%5BA-Z%5D%2F.test(requestHeader))%20%7B%0A%20%20%20%20%20%20%20%20%20%20Polymer.Base._error('Headers%20must%20be%20lower%20case%2C%20got'%2C%20requestHeader)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20xhr.setRequestHeader(%0A%20%20%20%20%20%20%20%20%20%20requestHeader%2C%0A%20%20%20%20%20%20%20%20%20%20headers%5BrequestHeader%5D%0A%20%20%20%20%20%20%20%20)%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%0A%20%20%20%20%20%20if%20(isXHRAsync)%20%7B%0A%20%20%20%20%20%20%20%20xhr.timeout%20%3D%20options.timeout%3B%0A%0A%20%20%20%20%20%20%20%20var%20handleAs%20%3D%20options.handleAs%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20a%20JSON%20prefix%20is%20present%2C%20the%20responseType%20must%20be%20'text'%20or%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20browser%20won%E2%80%99t%20be%20able%20to%20parse%20the%20response.%0A%20%20%20%20%20%20%20%20if%20(!!options.jsonPrefix%20%7C%7C%20!handleAs)%20%7B%0A%20%20%20%20%20%20%20%20%20%20handleAs%20%3D%20'text'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20In%20IE%2C%20%60xhr.responseType%60%20is%20an%20empty%20string%20when%20the%20response%0A%20%20%20%20%20%20%20%20%2F%2F%20returns.%20Hence%2C%20caching%20it%20as%20%60xhr._responseType%60.%0A%20%20%20%20%20%20%20%20xhr.responseType%20%3D%20xhr._responseType%20%3D%20handleAs%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Cache%20the%20JSON%20prefix%2C%20if%20it%20exists.%0A%20%20%20%20%20%20%20%20if%20(!!options.jsonPrefix)%20%7B%0A%20%20%20%20%20%20%20%20%20%20xhr._jsonPrefix%20%3D%20options.jsonPrefix%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20xhr.withCredentials%20%3D%20!!options.withCredentials%3B%0A%0A%0A%20%20%20%20%20%20var%20body%20%3D%20this._encodeBodyObject(options.body%2C%20headers%5B'content-type'%5D)%3B%0A%0A%20%20%20%20%20%20xhr.send(%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BArrayBuffer%7CArrayBufferView%7CBlob%7CDocument%7CFormData%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20null%7Cstring%7Cundefined%7D%20*%2F%0A%20%20%20%20%20%20%20%20(body))%3B%0A%0A%20%20%20%20%20%20return%20this.completes%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Attempts%20to%20parse%20the%20response%20body%20of%20the%20XHR.%20If%20parsing%20succeeds%2C%0A%20%20%20%20%20*%20the%20value%20returned%20will%20be%20deserialized%20based%20on%20the%20%60responseType%60%0A%20%20%20%20%20*%20set%20on%20the%20XHR.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20The%20parsed%20response%2C%0A%20%20%20%20%20*%20or%20undefined%20if%20there%20was%20an%20empty%20response%20or%20parsing%20failed.%0A%20%20%20%20%20*%2F%0A%20%20%20%20parseResponse%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20xhr%20%3D%20this.xhr%3B%0A%20%20%20%20%20%20var%20responseType%20%3D%20xhr.responseType%20%7C%7C%20xhr._responseType%3B%0A%20%20%20%20%20%20var%20preferResponseText%20%3D%20!this.xhr.responseType%3B%0A%20%20%20%20%20%20var%20prefixLen%20%3D%20(xhr._jsonPrefix%20%26%26%20xhr._jsonPrefix.length)%20%7C%7C%200%3B%0A%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20switch%20(responseType)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20'json'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20the%20xhr%20object%20doesn't%20have%20a%20natural%20%60xhr.responseType%60%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20we%20can%20assume%20that%20the%20browser%20hasn't%20parsed%20the%20response%20for%20us%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20and%20so%20parsing%20is%20our%20responsibility.%20Likewise%20if%20response%20is%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20undefined%2C%20as%20there's%20no%20way%20to%20encode%20undefined%20in%20JSON.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(preferResponseText%20%7C%7C%20xhr.response%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Try%20to%20emulate%20the%20JSON%20section%20of%20the%20response%20body%20section%20of%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20spec%3A%20https%3A%2F%2Fxhr.spec.whatwg.org%2F%23response-body%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20That%20is%20to%20say%2C%20we%20try%20to%20parse%20as%20JSON%2C%20but%20if%20anything%20goes%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20wrong%20return%20null.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.parse(xhr.responseText)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(_)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.warn('Failed%20to%20parse%20JSON%20sent%20from%20'%20%2B%20xhr.responseUrl)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.response%3B%0A%20%20%20%20%20%20%20%20%20%20case%20'xml'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20%20case%20'blob'%3A%0A%20%20%20%20%20%20%20%20%20%20case%20'document'%3A%0A%20%20%20%20%20%20%20%20%20%20case%20'arraybuffer'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.response%3B%0A%20%20%20%20%20%20%20%20%20%20case%20'text'%3A%0A%20%20%20%20%20%20%20%20%20%20default%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20%60prefixLen%60%20is%20set%2C%20it%20implies%20the%20response%20should%20be%20parsed%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20as%20JSON%20once%20the%20prefix%20of%20length%20%60prefixLen%60%20is%20stripped%20from%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20it.%20Emulate%20the%20behavior%20above%20where%20null%20is%20returned%20on%20failure%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20to%20parse.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(prefixLen)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20JSON.parse(xhr.responseText.substring(prefixLen))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(_)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.warn('Failed%20to%20parse%20JSON%20sent%20from%20'%20%2B%20xhr.responseUrl)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20xhr.responseText%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0A%20%20%20%20%20%20%20%20this.rejectCompletes(new%20Error('Could%20not%20parse%20response.%20'%20%2B%20e.message))%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Aborts%20the%20request.%0A%20%20%20%20%20*%2F%0A%20%20%20%20abort%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setAborted(true)%3B%0A%20%20%20%20%20%20this.xhr.abort()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20body%20The%20given%20body%20of%20the%20request%20to%20try%20and%20encode.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20contentType%20The%20given%20content%20type%2C%20to%20infer%20an%20encoding%0A%20%20%20%20%20*%20%20%20%20%20from.%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20Either%20the%20encoded%20body%20as%20a%20string%2C%20if%20successful%2C%0A%20%20%20%20%20*%20%20%20%20%20or%20the%20unaltered%20body%20object%20if%20no%20encoding%20could%20be%20inferred.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_encodeBodyObject%3A%20function(body%2C%20contentType)%20%7B%0A%20%20%20%20%20%20if%20(typeof%20body%20%3D%3D%20'string')%20%7B%0A%20%20%20%20%20%20%20%20return%20body%3B%20%20%2F%2F%20Already%20encoded.%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20bodyObj%20%3D%20%2F**%20%40type%20%7BObject%7D%20*%2F%20(body)%3B%0A%20%20%20%20%20%20switch(contentType)%20%7B%0A%20%20%20%20%20%20%20%20case('application%2Fjson')%3A%0A%20%20%20%20%20%20%20%20%20%20return%20JSON.stringify(bodyObj)%3B%0A%20%20%20%20%20%20%20%20case('application%2Fx-www-form-urlencoded')%3A%0A%20%20%20%20%20%20%20%20%20%20return%20this._wwwFormUrlEncode(bodyObj)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20body%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20object%20The%20object%20to%20encode%20as%20x-www-form-urlencoded.%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_wwwFormUrlEncode%3A%20function(object)%20%7B%0A%20%20%20%20%20%20if%20(!object)%20%7B%0A%20%20%20%20%20%20%20%20return%20''%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20pieces%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20Object.keys(object).forEach(function(key)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20TODO(rictic)%3A%20handle%20array%20values%20here%2C%20in%20a%20consistent%20way%20with%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20iron-ajax%20params.%0A%20%20%20%20%20%20%20%20pieces.push(%0A%20%20%20%20%20%20%20%20%20%20%20%20this._wwwFormUrlEncodePiece(key)%20%2B%20'%3D'%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._wwwFormUrlEncodePiece(object%5Bkey%5D))%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20return%20pieces.join('%26')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20str%20A%20key%20or%20value%20to%20encode%20as%20x-www-form-urlencoded.%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_wwwFormUrlEncodePiece%3A%20function(str)%20%7B%0A%20%20%20%20%20%20%2F%2F%20Spec%20says%20to%20normalize%20newlines%20to%20%5Cr%5Cn%20and%20replace%20%2520%20spaces%20with%20%2B.%0A%20%20%20%20%20%20%2F%2F%20jQuery%20does%20this%20as%20well%2C%20so%20this%20is%20likely%20to%20be%20widely%20compatible.%0A%20%20%20%20%20%20if%20(str%20%3D%3D%3D%20null%20%7C%7C%20str%20%3D%3D%3D%20undefined%20%7C%7C%20!str.toString)%20%7B%0A%20%20%20%20%20%20%20%20return%20''%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20encodeURIComponent(str.toString().replace(%2F%5Cr%3F%5Cn%2Fg%2C%20'%5Cr%5Cn'))%0A%20%20%20%20%20%20%20%20.replace(%2F%2520%2Fg%2C%20'%2B')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Updates%20the%20status%20code%20and%20status%20text.%0A%20%20%20%20%20*%2F%0A%20%20%20%20_updateStatus%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setStatus(this.xhr.status)%3B%0A%20%20%20%20%20%20this._setStatusText((this.xhr.statusText%20%3D%3D%3D%20undefined)%20%3F%20''%20%3A%20this.xhr.statusText)%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-ajax%2Firon-request.html.js%0A",
            "totalBytes": 14135,
            "wastedBytes": 9053,
            "wastedPercent": 64.04359210246974
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20(function()%20%7B%0A%20%20'use%20strict'%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Chrome%20uses%20an%20older%20version%20of%20DOM%20Level%203%20Keyboard%20Events%0A%20%20%20*%0A%20%20%20*%20Most%20keys%20are%20labeled%20as%20text%2C%20but%20some%20are%20Unicode%20codepoints.%0A%20%20%20*%20Values%20taken%20from%3A%0A%20%20%20*%20http%3A%2F%2Fwww.w3.org%2FTR%2F2007%2FWD-DOM-Level-3-Events-20071221%2Fkeyset.html%23KeySet-Set%0A%20%20%20*%2F%0A%20%20var%20KEY_IDENTIFIER%20%3D%20%7B%0A%20%20%20%20'U%2B0008'%3A%20'backspace'%2C%0A%20%20%20%20'U%2B0009'%3A%20'tab'%2C%0A%20%20%20%20'U%2B001B'%3A%20'esc'%2C%0A%20%20%20%20'U%2B0020'%3A%20'space'%2C%0A%20%20%20%20'U%2B007F'%3A%20'del'%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Special%20table%20for%20KeyboardEvent.keyCode.%0A%20%20%20*%20KeyboardEvent.keyIdentifier%20is%20better%2C%20and%20KeyBoardEvent.key%20is%20even%20better%0A%20%20%20*%20than%20that.%0A%20%20%20*%0A%20%20%20*%20Values%20from%3A%0A%20%20%20*%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FKeyboardEvent.keyCode%23Value_of_keyCode%0A%20%20%20*%2F%0A%20%20var%20KEY_CODE%20%3D%20%7B%0A%20%20%20%208%3A%20'backspace'%2C%0A%20%20%20%209%3A%20'tab'%2C%0A%20%20%20%2013%3A%20'enter'%2C%0A%20%20%20%2027%3A%20'esc'%2C%0A%20%20%20%2033%3A%20'pageup'%2C%0A%20%20%20%2034%3A%20'pagedown'%2C%0A%20%20%20%2035%3A%20'end'%2C%0A%20%20%20%2036%3A%20'home'%2C%0A%20%20%20%2032%3A%20'space'%2C%0A%20%20%20%2037%3A%20'left'%2C%0A%20%20%20%2038%3A%20'up'%2C%0A%20%20%20%2039%3A%20'right'%2C%0A%20%20%20%2040%3A%20'down'%2C%0A%20%20%20%2046%3A%20'del'%2C%0A%20%20%20%20106%3A%20'*'%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20MODIFIER_KEYS%20maps%20the%20short%20name%20for%20modifier%20keys%20used%20in%20a%20key%0A%20%20%20*%20combo%20string%20to%20the%20property%20name%20that%20references%20those%20same%20keys%0A%20%20%20*%20in%20a%20KeyboardEvent%20instance.%0A%20%20%20*%2F%0A%20%20var%20MODIFIER_KEYS%20%3D%20%7B%0A%20%20%20%20'shift'%3A%20'shiftKey'%2C%0A%20%20%20%20'ctrl'%3A%20'ctrlKey'%2C%0A%20%20%20%20'alt'%3A%20'altKey'%2C%0A%20%20%20%20'meta'%3A%20'metaKey'%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20KeyboardEvent.key%20is%20mostly%20represented%20by%20printable%20character%20made%20by%0A%20%20%20*%20the%20keyboard%2C%20with%20unprintable%20keys%20labeled%20nicely.%0A%20%20%20*%0A%20%20%20*%20However%2C%20on%20OS%20X%2C%20Alt%2Bchar%20can%20make%20a%20Unicode%20character%20that%20follows%20an%0A%20%20%20*%20Apple-specific%20mapping.%20In%20this%20case%2C%20we%20fall%20back%20to%20.keyCode.%0A%20%20%20*%2F%0A%20%20var%20KEY_CHAR%20%3D%20%2F%5Ba-z0-9*%5D%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20a%20keyIdentifier%20string.%0A%20%20%20*%2F%0A%20%20var%20IDENT_CHAR%20%3D%20%2FU%5C%2B%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20arrow%20keys%20in%20Gecko%2027.0%2B%0A%20%20%20*%2F%0A%20%20var%20ARROW_KEY%20%3D%20%2F%5Earrow%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20space%20keys%20everywhere%20(notably%20including%20IE10's%20exceptional%20name%0A%20%20%20*%20%60spacebar%60).%0A%20%20%20*%2F%0A%20%20var%20SPACE_KEY%20%3D%20%2F%5Espace(bar)%3F%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Matches%20ESC%20key.%0A%20%20%20*%0A%20%20%20*%20Value%20from%3A%20http%3A%2F%2Fw3c.github.io%2Fuievents-key%2F%23key-Escape%0A%20%20%20*%2F%0A%20%20var%20ESC_KEY%20%3D%20%2F%5Eescape%24%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Transforms%20the%20key.%0A%20%20%20*%20%40param%20%7Bstring%7D%20key%20The%20KeyBoardEvent.key%0A%20%20%20*%20%40param%20%7BBoolean%7D%20%5BnoSpecialChars%5D%20Limits%20the%20transformation%20to%0A%20%20%20*%20alpha-numeric%20characters.%0A%20%20%20*%2F%0A%20%20function%20transformKey(key%2C%20noSpecialChars)%20%7B%0A%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20if%20(key)%20%7B%0A%20%20%20%20%20%20var%20lKey%20%3D%20key.toLowerCase()%3B%0A%20%20%20%20%20%20if%20(lKey%20%3D%3D%3D%20'%20'%20%7C%7C%20SPACE_KEY.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'space'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(ESC_KEY.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'esc'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(lKey.length%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!noSpecialChars%20%7C%7C%20KEY_CHAR.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20%20%20validKey%20%3D%20lKey%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20(ARROW_KEY.test(lKey))%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20lKey.replace('arrow'%2C%20'')%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(lKey%20%3D%3D%20'multiply')%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20numpad%20'*'%20can%20map%20to%20Multiply%20on%20IE%2FWindows%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'*'%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20lKey%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20validKey%3B%0A%20%20%7D%0A%0A%20%20function%20transformKeyIdentifier(keyIdent)%20%7B%0A%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20if%20(keyIdent)%20%7B%0A%20%20%20%20%20%20if%20(keyIdent%20in%20KEY_IDENTIFIER)%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20KEY_IDENTIFIER%5BkeyIdent%5D%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(IDENT_CHAR.test(keyIdent))%20%7B%0A%20%20%20%20%20%20%20%20keyIdent%20%3D%20parseInt(keyIdent.replace('U%2B'%2C%20'0x')%2C%2016)%3B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String.fromCharCode(keyIdent).toLowerCase()%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20keyIdent.toLowerCase()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20validKey%3B%0A%20%20%7D%0A%0A%20%20function%20transformKeyCode(keyCode)%20%7B%0A%20%20%20%20var%20validKey%20%3D%20''%3B%0A%20%20%20%20if%20(Number(keyCode))%20%7B%0A%20%20%20%20%20%20if%20(keyCode%20%3E%3D%2065%20%26%26%20keyCode%20%3C%3D%2090)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20ascii%20a-z%0A%20%20%20%20%20%20%20%20%2F%2F%20lowercase%20is%2032%20offset%20from%20uppercase%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String.fromCharCode(32%20%2B%20keyCode)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%20112%20%26%26%20keyCode%20%3C%3D%20123)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20function%20keys%20f1-f12%0A%20%20%20%20%20%20%20%20validKey%20%3D%20'f'%20%2B%20(keyCode%20-%20112%20%2B%201)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%2048%20%26%26%20keyCode%20%3C%3D%2057)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20top%200-9%20keys%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String(keyCode%20-%2048)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(keyCode%20%3E%3D%2096%20%26%26%20keyCode%20%3C%3D%20105)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20num%20pad%200-9%0A%20%20%20%20%20%20%20%20validKey%20%3D%20String(keyCode%20-%2096)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20validKey%20%3D%20KEY_CODE%5BkeyCode%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20validKey%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Calculates%20the%20normalized%20key%20for%20a%20KeyboardEvent.%0A%20%20%20*%20%40param%20%7BKeyboardEvent%7D%20keyEvent%0A%20%20%20*%20%40param%20%7BBoolean%7D%20%5BnoSpecialChars%5D%20Set%20to%20true%20to%20limit%20keyEvent.key%0A%20%20%20*%20transformation%20to%20alpha-numeric%20chars.%20This%20is%20useful%20with%20key%0A%20%20%20*%20combinations%20like%20shift%20%2B%202%2C%20which%20on%20FF%20for%20MacOS%20produces%0A%20%20%20*%20keyEvent.key%20%3D%20%40%0A%20%20%20*%20To%20get%202%20returned%2C%20set%20noSpecialChars%20%3D%20true%0A%20%20%20*%20To%20get%20%40%20returned%2C%20set%20noSpecialChars%20%3D%20false%0A%20%20%20*%2F%0A%20%20function%20normalizedKeyForEvent(keyEvent%2C%20noSpecialChars)%20%7B%0A%20%20%20%20%2F%2F%20Fall%20back%20from%20.key%2C%20to%20.detail.key%20for%20artifical%20keyboard%20events%2C%0A%20%20%20%20%2F%2F%20and%20then%20to%20deprecated%20.keyIdentifier%20and%20.keyCode.%0A%20%20%20%20if%20(keyEvent.key)%20%7B%0A%20%20%20%20%20%20return%20transformKey(keyEvent.key%2C%20noSpecialChars)%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(keyEvent.detail%20%26%26%20keyEvent.detail.key)%20%7B%0A%20%20%20%20%20%20return%20transformKey(keyEvent.detail.key%2C%20noSpecialChars)%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20transformKeyIdentifier(keyEvent.keyIdentifier)%20%7C%7C%0A%20%20%20%20%20%20%20%20transformKeyCode(keyEvent.keyCode)%20%7C%7C%20''%3B%0A%20%20%7D%0A%0A%20%20function%20keyComboMatchesEvent(keyCombo%2C%20event)%20%7B%0A%20%20%20%20%2F%2F%20For%20combos%20with%20modifiers%20we%20support%20only%20alpha-numeric%20keys%0A%20%20%20%20var%20keyEvent%20%3D%20normalizedKeyForEvent(event%2C%20keyCombo.hasModifiers)%3B%0A%20%20%20%20return%20keyEvent%20%3D%3D%3D%20keyCombo.key%20%26%26%0A%20%20%20%20%20%20%20%20(!keyCombo.hasModifiers%20%7C%7C%0A%20%20%20%20%20%20%20%20%20(!!event.shiftKey%20%3D%3D%3D%20!!keyCombo.shiftKey%20%26%26%0A%20%20%20%20%20%20%20%20%20%20!!event.ctrlKey%20%3D%3D%3D%20!!keyCombo.ctrlKey%20%26%26%0A%20%20%20%20%20%20%20%20%20%20!!event.altKey%20%3D%3D%3D%20!!keyCombo.altKey%20%26%26%0A%20%20%20%20%20%20%20%20%20%20!!event.metaKey%20%3D%3D%3D%20!!keyCombo.metaKey))%3B%0A%20%20%7D%0A%0A%20%20function%20parseKeyComboString(keyComboString)%20%7B%0A%20%20%20%20if%20(keyComboString.length%20%3D%3D%3D%201)%20%7B%0A%20%20%20%20%20%20return%20%7Bcombo%3A%20keyComboString%2C%20key%3A%20keyComboString%2C%20event%3A%20'keydown'%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20keyComboString.split('%2B')%0A%20%20%20%20%20%20%20%20.reduce(function(parsedKeyCombo%2C%20keyComboPart)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20eventParts%20%3D%20keyComboPart.split('%3A')%3B%0A%20%20%20%20%20%20%20%20%20%20var%20keyName%20%3D%20eventParts%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20event%20%3D%20eventParts%5B1%5D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20(keyName%20in%20MODIFIER_KEYS)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo%5BMODIFIER_KEYS%5BkeyName%5D%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo.hasModifiers%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo.key%20%3D%20keyName%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20parsedKeyCombo.event%20%3D%20event%20%7C%7C%20'keydown'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20return%20parsedKeyCombo%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20%7Bcombo%3A%20keyComboString.split('%3A').shift()%7D)%3B%0A%20%20%7D%0A%0A%20%20function%20parseEventString(eventString)%20%7B%0A%20%20%20%20return%20eventString.trim().split('%20').map(function(keyComboString)%20%7B%0A%20%20%20%20%20%20return%20parseKeyComboString(keyComboString)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20%60Polymer.IronA11yKeysBehavior%60%20provides%20a%20normalized%20interface%20for%20processing%0A%20%20%20*%20keyboard%20commands%20that%20pertain%20to%20%5BWAI-ARIA%20best%0A%20%20%20*%20practices%5D(http%3A%2F%2Fwww.w3.org%2FTR%2Fwai-aria-practices%2F%23kbd_general_binding).%20The%0A%20%20%20*%20element%20takes%20care%20of%20browser%20differences%20with%20respect%20to%20Keyboard%20events%20and%0A%20%20%20*%20uses%20an%20expressive%20syntax%20to%20filter%20key%20presses.%0A%20%20%20*%0A%20%20%20*%20Use%20the%20%60keyBindings%60%20prototype%20property%20to%20express%20what%20combination%20of%20keys%0A%20%20%20*%20will%20trigger%20the%20callback.%20A%20key%20binding%20has%20the%20format%0A%20%20%20*%20%60%22KEY%2BMODIFIER%3AEVENT%22%3A%20%22callback%22%60%20(%60%22KEY%22%3A%20%22callback%22%60%20or%0A%20%20%20*%20%60%22KEY%3AEVENT%22%3A%20%22callback%22%60%20are%20valid%20as%20well).%20Some%20examples%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%20keyBindings%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20'space'%3A%20'_onKeydown'%2C%20%2F%2F%20same%20as%20'space%3Akeydown'%0A%20%20%20*%20%20%20%20%20%20%20%20'shift%2Btab'%3A%20'_onKeydown'%2C%0A%20%20%20*%20%20%20%20%20%20%20%20'enter%3Akeypress'%3A%20'_onKeypress'%2C%0A%20%20%20*%20%20%20%20%20%20%20%20'esc%3Akeyup'%3A%20'_onKeyup'%0A%20%20%20*%20%20%20%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20The%20callback%20will%20receive%20with%20an%20event%20containing%20the%20following%20information%0A%20%20%20*%20in%20%60event.detail%60%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%20_onKeydown%3A%20function(event)%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.combo)%3B%20%2F%2F%20KEY%2BMODIFIER%2C%20e.g.%20%22shift%2Btab%22%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.key)%3B%20%2F%2F%20KEY%20only%2C%20e.g.%20%22tab%22%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.event)%3B%20%2F%2F%20EVENT%2C%20e.g.%20%22keydown%22%0A%20%20%20*%20%20%20%20%20%20%20%20console.log(event.detail.keyboardEvent)%3B%20%2F%2F%20the%20original%20KeyboardEvent%0A%20%20%20*%20%20%20%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20Use%20the%20%60keyEventTarget%60%20attribute%20to%20set%20up%20event%20handlers%20on%20a%20specific%0A%20%20%20*%20node.%0A%20%20%20*%0A%20%20%20*%20See%20the%20%5Bdemo%20source%0A%20%20%20*%20code%5D(https%3A%2F%2Fgithub.com%2FPolymerElements%2Firon-a11y-keys-behavior%2Fblob%2Fmaster%2Fdemo%2Fx-key-aware.html)%0A%20%20%20*%20for%20an%20example.%0A%20%20%20*%0A%20%20%20*%20%40demo%20demo%2Findex.html%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%2F%0A%20%20Polymer.IronA11yKeysBehavior%20%3D%20%7B%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20EventTarget%20that%20will%20be%20firing%20relevant%20KeyboardEvents.%20Set%20it%20to%0A%20%20%20%20%20%20%20*%20%60null%60%20to%20disable%20the%20listeners.%0A%20%20%20%20%20%20%20*%20%40type%20%7B%3FEventTarget%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20keyEventTarget%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20this%20property%20will%20cause%20the%20implementing%20element%20to%0A%20%20%20%20%20%20%20*%20automatically%20stop%20propagation%20on%20any%20handled%20KeyboardEvents.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20stopKeyboardEventPropagation%3A%20%7Btype%3A%20Boolean%2C%20value%3A%20false%7D%2C%0A%0A%20%20%20%20%20%20_boundKeyHandlers%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20We%20use%20this%20due%20to%20a%20limitation%20in%20IE10%20where%20instances%20will%20have%0A%20%20%20%20%20%20%2F%2F%20own%20properties%20of%20everything%20on%20the%20%22prototype%22.%0A%20%20%20%20%20%20_imperativeKeyBindings%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Object%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20observers%3A%20%5B'_resetKeyEventListeners(keyEventTarget%2C%20_boundKeyHandlers)'%5D%2C%0A%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20To%20be%20used%20to%20express%20what%20combination%20of%20keys%20%20will%20trigger%20the%20relative%0A%20%20%20%20%20*%20callback.%20e.g.%20%60keyBindings%3A%20%7B%20'esc'%3A%20'_onEscPressed'%7D%60%0A%20%20%20%20%20*%20%40type%20%7B!Object%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20keyBindings%3A%20%7B%7D%2C%0A%0A%20%20%20%20registered%3A%20function()%20%7B%0A%20%20%20%20%20%20this._prepKeyBindings()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20this._listenKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20detached%3A%20function()%20%7B%0A%20%20%20%20%20%20this._unlistenKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Can%20be%20used%20to%20imperatively%20add%20a%20key%20binding%20to%20the%20implementing%0A%20%20%20%20%20*%20element.%20This%20is%20the%20imperative%20equivalent%20of%20declaring%20a%20keybinding%0A%20%20%20%20%20*%20in%20the%20%60keyBindings%60%20prototype%20property.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventString%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20handlerName%0A%20%20%20%20%20*%2F%0A%20%20%20%20addOwnKeyBinding%3A%20function(eventString%2C%20handlerName)%20%7B%0A%20%20%20%20%20%20this._imperativeKeyBindings%5BeventString%5D%20%3D%20handlerName%3B%0A%20%20%20%20%20%20this._prepKeyBindings()%3B%0A%20%20%20%20%20%20this._resetKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20When%20called%2C%20will%20remove%20all%20imperatively-added%20key%20bindings.%0A%20%20%20%20%20*%2F%0A%20%20%20%20removeOwnKeyBindings%3A%20function()%20%7B%0A%20%20%20%20%20%20this._imperativeKeyBindings%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20this._prepKeyBindings()%3B%0A%20%20%20%20%20%20this._resetKeyEventListeners()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20a%20keyboard%20event%20matches%20%60eventString%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BKeyboardEvent%7D%20event%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20eventString%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20keyboardEventMatchesKeys%3A%20function(event%2C%20eventString)%20%7B%0A%20%20%20%20%20%20var%20keyCombos%20%3D%20parseEventString(eventString)%3B%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20keyCombos.length%3B%20%2B%2Bi)%20%7B%0A%20%20%20%20%20%20%20%20if%20(keyComboMatchesEvent(keyCombos%5Bi%5D%2C%20event))%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_collectKeyBindings%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20keyBindings%20%3D%20this.behaviors.map(function(behavior)%20%7B%0A%20%20%20%20%20%20%20%20return%20behavior.keyBindings%3B%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20if%20(keyBindings.indexOf(this.keyBindings)%20%3D%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20keyBindings.push(this.keyBindings)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20keyBindings%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_prepKeyBindings%3A%20function()%20%7B%0A%20%20%20%20%20%20this._keyBindings%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20%20%20this._collectKeyBindings().forEach(function(keyBindings)%20%7B%0A%20%20%20%20%20%20%20%20for%20(var%20eventString%20in%20keyBindings)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._addKeyBinding(eventString%2C%20keyBindings%5BeventString%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%0A%20%20%20%20%20%20for%20(var%20eventString%20in%20this._imperativeKeyBindings)%20%7B%0A%20%20%20%20%20%20%20%20this._addKeyBinding(%0A%20%20%20%20%20%20%20%20%20%20%20%20eventString%2C%20this._imperativeKeyBindings%5BeventString%5D)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Give%20precedence%20to%20combos%20with%20modifiers%20to%20be%20checked%20first.%0A%20%20%20%20%20%20for%20(var%20eventName%20in%20this._keyBindings)%20%7B%0A%20%20%20%20%20%20%20%20this._keyBindings%5BeventName%5D.sort(function(kb1%2C%20kb2)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20b1%20%3D%20kb1%5B0%5D.hasModifiers%3B%0A%20%20%20%20%20%20%20%20%20%20var%20b2%20%3D%20kb2%5B0%5D.hasModifiers%3B%0A%20%20%20%20%20%20%20%20%20%20return%20(b1%20%3D%3D%3D%20b2)%20%3F%200%20%3A%20b1%20%3F%20-1%20%3A%201%3B%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_addKeyBinding%3A%20function(eventString%2C%20handlerName)%20%7B%0A%20%20%20%20%20%20parseEventString(eventString).forEach(function(keyCombo)%20%7B%0A%20%20%20%20%20%20%20%20this._keyBindings%5BkeyCombo.event%5D%20%3D%0A%20%20%20%20%20%20%20%20%20%20%20%20this._keyBindings%5BkeyCombo.event%5D%20%7C%7C%20%5B%5D%3B%0A%0A%20%20%20%20%20%20%20%20this._keyBindings%5BkeyCombo.event%5D.push(%5BkeyCombo%2C%20handlerName%5D)%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_resetKeyEventListeners%3A%20function()%20%7B%0A%20%20%20%20%20%20this._unlistenKeyEventListeners()%3B%0A%0A%20%20%20%20%20%20if%20(this.isAttached)%20%7B%0A%20%20%20%20%20%20%20%20this._listenKeyEventListeners()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_listenKeyEventListeners%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(!this.keyEventTarget)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20Object.keys(this._keyBindings).forEach(function(eventName)%20%7B%0A%20%20%20%20%20%20%20%20var%20keyBindings%20%3D%20this._keyBindings%5BeventName%5D%3B%0A%20%20%20%20%20%20%20%20var%20boundKeyHandler%20%3D%20this._onKeyBindingEvent.bind(this%2C%20keyBindings)%3B%0A%0A%20%20%20%20%20%20%20%20this._boundKeyHandlers.push(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5Bthis.keyEventTarget%2C%20eventName%2C%20boundKeyHandler%5D)%3B%0A%0A%20%20%20%20%20%20%20%20this.keyEventTarget.addEventListener(eventName%2C%20boundKeyHandler)%3B%0A%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_unlistenKeyEventListeners%3A%20function()%20%7B%0A%20%20%20%20%20%20var%20keyHandlerTuple%3B%0A%20%20%20%20%20%20var%20keyEventTarget%3B%0A%20%20%20%20%20%20var%20eventName%3B%0A%20%20%20%20%20%20var%20boundKeyHandler%3B%0A%0A%20%20%20%20%20%20while%20(this._boundKeyHandlers.length)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20My%20kingdom%20for%20block-scope%20binding%20and%20destructuring%20assignment..%0A%20%20%20%20%20%20%20%20keyHandlerTuple%20%3D%20this._boundKeyHandlers.pop()%3B%0A%20%20%20%20%20%20%20%20keyEventTarget%20%3D%20keyHandlerTuple%5B0%5D%3B%0A%20%20%20%20%20%20%20%20eventName%20%3D%20keyHandlerTuple%5B1%5D%3B%0A%20%20%20%20%20%20%20%20boundKeyHandler%20%3D%20keyHandlerTuple%5B2%5D%3B%0A%0A%20%20%20%20%20%20%20%20keyEventTarget.removeEventListener(eventName%2C%20boundKeyHandler)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onKeyBindingEvent%3A%20function(keyBindings%2C%20event)%20%7B%0A%20%20%20%20%20%20if%20(this.stopKeyboardEventPropagation)%20%7B%0A%20%20%20%20%20%20%20%20event.stopPropagation()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20if%20event%20has%20been%20already%20prevented%2C%20don't%20do%20anything%0A%20%20%20%20%20%20if%20(event.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20keyBindings.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20var%20keyCombo%20%3D%20keyBindings%5Bi%5D%5B0%5D%3B%0A%20%20%20%20%20%20%20%20var%20handlerName%20%3D%20keyBindings%5Bi%5D%5B1%5D%3B%0A%20%20%20%20%20%20%20%20if%20(keyComboMatchesEvent(keyCombo%2C%20event))%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._triggerKeyHandler(keyCombo%2C%20handlerName%2C%20event)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20exit%20the%20loop%20if%20eventDefault%20was%20prevented%0A%20%20%20%20%20%20%20%20%20%20if%20(event.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_triggerKeyHandler%3A%20function(keyCombo%2C%20handlerName%2C%20keyboardEvent)%20%7B%0A%20%20%20%20%20%20var%20detail%20%3D%20Object.create(keyCombo)%3B%0A%20%20%20%20%20%20detail.keyboardEvent%20%3D%20keyboardEvent%3B%0A%20%20%20%20%20%20var%20event%20%3D%0A%20%20%20%20%20%20%20%20%20%20new%20CustomEvent(keyCombo.event%2C%20%7Bdetail%3A%20detail%2C%20cancelable%3A%20true%7D)%3B%0A%20%20%20%20%20%20this%5BhandlerName%5D.call(this%2C%20event)%3B%0A%20%20%20%20%20%20if%20(event.defaultPrevented)%20%7B%0A%20%20%20%20%20%20%20%20keyboardEvent.preventDefault()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%20%20%7D)()%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-a11y-keys-behavior%2Firon-a11y-keys-behavior.html.js%0A",
            "totalBytes": 14596,
            "wastedBytes": 8127,
            "wastedPercent": 55.67963825705673
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
            "totalBytes": 17664,
            "wastedBytes": 7555,
            "wastedPercent": 42.77022145039232
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%20Adds%20header%20bidding%20functionality%20to%20an%20ad.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerBid%0A%20%20%20%20%20*%2Fvar%20PartnerBid%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20prebid%20integration%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(this.inactive%7C%7Cthis._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))return%3Bwindow.pbjs%3Dwindow.pbjs%7C%7C%7B%7D%3Bwindow.pbjs.que%3Dwindow.pbjs.que%7C%7C%5B%5D%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3B%2F%2F%20Get%20debug%20params%0Athis.pbDebug%3Dthis.getUrlParamValue('pb_debug')%3Bthis.apsDebug%3Dthis.getUrlParamValue('aps_debug')%3Bif(this._getNested(this%2C'apsUnit'%2C'mediaType')%3D%3D%3D'video')%7Bthis.aps%3Dthis.apsDebug%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%26%26this.placementConfig.aps%3B%7Dif(!this.prebid%26%26!this.aps)return%3B%2F%2F%20Set%20up%20bidding%20barriers%0Athis.apsSetup%3Dnew%20this._deferred()%3Bthis.pbSetup%3Dnew%20this._deferred()%3B%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.adId%3Dwindow.ga_data.adId%7C%7C0%3Bthis.id%3D'partner-position-'%2Bwindow.ga_data.adId%2B%2B%3B%7Dif(!this.slotId)%7Bthis.slotId%3Dthis.id%3B%7D%2F%2F%20Start%0Athis._refreshBids()%3B%2F%2F%20Lazy%20fetch%20bids%20for%20slots%20that%20are%20lazy%20fetching%0Aif(!this.isVideo%26%26this.lazyFetch)%7Bthis.defineDefer.promise.then(function()%7B_this._setupVendors()%3B%7D)%3B%7Delse%7Bthis._setupVendors()%3B%7D%7D%2C_setupVendors%3Afunction%20_setupVendors()%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%3B%2F%2F%20Setup%20Prebid.js%20if%20enabled%0Aif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bthis._log('Prebid%20setting%20up')%3Bif(this.isVideo)%7Bthis._setupVideoPrebid(prebidSiteConfig)%3B%7Delse%7Bthis._setupPreBids(prebidSiteConfig)%3B%7D%7D%2F%2F%20setup%20APS%20if%20enabled%0Aif((this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%7C%7Cthis.apsDebug)%26%26this.aps)%7Bthis._log('APS%20setting%20up')%3Bthis._setupAPS()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20Amazon%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_setupAPS%3Afunction%20_setupAPS()%7Bif(!this.apsUnit)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bthis.apsUnit%3D%7BslotID%3A'videoPlayer_plcmt'%2B(this.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt'))%7C%7C4%2Csizes%3Athis._getApsSizes(this.sizes)%7D%3B%7Dthis.apsSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20acceptable%20APS%20sizes%20from%20a%20list%20of%20sizes%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20sizeList%20List%20of%20DFP%20sizes%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20List%20of%20sizes%20to%20pass%20to%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_getApsSizes%3Afunction%20_getApsSizes(sizeList)%7Bvar%20apsSizes%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3CsizeList.length%3Bi%2B%2B)%7Bif(sizeList%5Bi%5D!%3D%3D'fluid')%7BapsSizes.push(sizeList%5Bi%5D)%3B%7D%7Dreturn%20apsSizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20current%20player%20dimensions%20for%20prebid%20params%0A%20%20%20%20%20%20%20%20%20*%2F_getVideoSize%3Afunction%20_getVideoSize()%7Bif(this.videoHeight%26%26this.videoWidth)return%3Bthis.videoHeight%3DMath.round(this.%24.still%26%26this.%24.still.offsetHeight%3Fthis.%24.still.offsetHeight%3Awindow.innerWidth*.5625)%3Bthis.videoWidth%3DMath.round(this.%24.still%26%26this.%24.still.offsetWidth%3Fthis.%24.still.offsetWidth%3Awindow.innerWidth)%3B%7D%2C_setupVideoPrebid%3Afunction%20_setupVideoPrebid(prebidSiteConfig)%7Bthis._log('Setting%20up%20video%20prebid')%3Bthis.bids%3D%5B%5D%3Bthis._getVideoSize()%3Bvar%20ssts%3Dthis.getRawData().ssts%3Bvar%20sz%3Dthis.isMobile%3Fthis.adSettings.sizes.mobile%3Athis.adSettings.sizes.desktop%2CappNexusMainConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CappNexusVideoConfig%3Dthis.prebidConfig.appNexus%7C%7C%7B%7D%2CrubiconMainConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CrubiconVideoConfig%3Dthis.prebidConfig.rubicon%7C%7C%7B%7D%2CopenXConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.openx%2Cthis.prebidConfig.openx%7C%7C%7B%7D)%2CindexConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.index%2Cthis.prebidConfig.index%7C%7C%7B%7D)%2CstickyAdsConfig%3Dthis.prebidConfig.stickyAds%7C%7C%7B%7D%2CsonobiConfig%3Dthis.prebidConfig.sonobi%7C%7C%7B%7D%2CpubmaticConfig%3Dthis.prebidConfig.pubmatic%7C%7C%7B%7D%2CtripleliftConfig%3Dthis.prebidConfig.triplelift%7C%7C%7B%7D%2CundertoneConfig%3Dthis.prebidConfig.undertone%7C%7C%7B%7D%2Cgpid%3D'%2F'%2Bthis.Preroll.iu%2B'%2F'%2Bthis.slotId%3Bif(this._isEnabled('appNexus'%2CappNexusMainConfig)%26%26appNexusVideoConfig.enabled)this._setupAppNexusVideo(appNexusVideoConfig%2Cssts)%3Bif(this._isEnabled('rubicon'%2CrubiconMainConfig)%26%26rubiconVideoConfig.enabled)this._setupRubiconVideo(rubiconVideoConfig%2Cssts)%3Bif(this._isEnabled('openx'%2CopenXConfig))this._setupOpenXVideo(openXConfig)%3Bif(this._isEnabled('index'%2CindexConfig))this._setupIndexVideo(indexConfig)%3Bif(this._isEnabled('stickyads'%2CstickyAdsConfig))this._setupStickyAdsVideo(stickyAdsConfig)%3Bif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobiVideo(sonobiConfig)%3Bif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmaticConfigVideo(pubmaticConfig)%3Bif(this._isEnabled('triplelift'%2CtripleliftConfig))this._setupTripleliftVideo(tripleliftConfig)%3Bif(this._isEnabled('undertone'%2CundertoneConfig))this._setupUndertoneVideo(undertoneConfig)%3Bthis._populateUserIds()%3Bthis.addAdUnits(%5B%5Bsz.width%2Csz.height%5D%5D%2Cgpid)%3B%7D%2C_populateUserIds%3Afunction%20_populateUserIds()%7Bvar%20getNested%3Dthis._getNested%2Cutils%3Dga_data.utils%2CgetParam%3Dutils.getUrlParamValue%2Cpbc%3DgetNested(ga_data%2C'site'%2C'ads'%2C'prebid')%2CliveRampEnabled%3Dutils.isCookieLessBrowser()%26%26getNested(pbc%2C'identityLink'%2C'enabled')%7C%7CgetParam('identitylink')%2CsharedIdEnabled%3DgetNested(pbc%2C'sharedId'%2C'enabled')%7C%7CgetParam('sharedid')%3Bif(!liveRampEnabled%26%26!sharedIdEnabled)%7Breturn%3B%7Dvar%20anonId%3Dvoid%200%2CliverampId%3Dvoid%200%3Bif(sharedIdEnabled)%7BanonId%3Dutils.anonId%3B%7Dif(liveRampEnabled)%7BliverampId%3Dutils.lrEnv%3B%7Dthis.bids.forEach(function(b)%7Bb.userId%3D%7B%7D%3Bb.userIdAsEids%3D%5B%5D%3Bif(liveRampEnabled%26%26liverampId)%7Bb.userId.idl_env%3DliverampId%3Bb.userIdAsEids.push(%7Bsource%3A'liveramp.com'%2Cuids%3A%5B%7Bid%3AliverampId%2Catype%3A3%7D%5D%7D)%3B%7Dif(sharedIdEnabled%26%26anonId)%7Bb.userId.sharedid%3D%7B'id'%3AanonId%7D%3Bb.userIdAsEids.push(%7Bsource%3A'pubcid.org'%2Cuids%3A%5B%7Bid%3AanonId%2Catype%3A1%7D%5D%7D)%3B%7D%7D)%3B%7D%2C_setupAppNexusVideo%3Afunction%20_setupAppNexusVideo(config%2Cssts)%7Bvar%20placementId%3Dthis.getUrlParamValue('pb_video_id')%7C%7Cconfig.placementId%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(placementId)%7Bthis.bids.push(%7Bbidder%3A'appnexusAst'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cposition%3A%5Bthis.placement%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3Bthis._log('Adding%20video%20ad%20unit%20placement'%2CplacementId)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-302%0A%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fprebid.org%2Fdev-docs%2Fbidders%2Frubicon.html%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubiconVideo%3Afunction%20_setupRubiconVideo(config%2Cssts)%7Bvar%20getNested%3Dthis._getNested%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(ssts.topic)%7BtopicArr.push(ssts.topic)%3B%7Dthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.accountId%2CsiteId%3Aconfig.siteId%2CzoneId%3Aconfig.zoneId%2Cvideo%3A%7Blanguage%3A'en'%7D%2Cinventory%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cdomain%3A%5BgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-395%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenXVideo%3Afunction%20_setupOpenXVideo(config)%7Bthis.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3Aconfig.unit.toString()%2CdelDomain%3Aconfig.domain%2Cvideo%3A%7Burl%3Athis.placementConfig.iframed%3Fdocument.referrer%3Awindow.location.href%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-420%0A%20%20%20%20%20%20%20%20%20*%2F_setupIndexVideo%3Afunction%20_setupIndexVideo(config)%7Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(params%26%26params.id%26%26params.siteId)%7Bthis.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7Bid%3Aparams.id%2CsiteID%3Aparams.siteId%2Cvideo%3A%7BsiteID%3Aparams.siteId%2CplayerType%3Aconfig.playerType%2Cprotocols%3Aconfig.supportedVastVersions%2Cmaxduration%3Aconfig.maxDuration%7D%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-332%0A%20%20%20%20%20%20%20%20%20*%2F_setupStickyAdsVideo%3Afunction%20_setupStickyAdsVideo(config)%7Bif(config.zoneId)%7Bthis.bids.push(%7Bbidder%3A'stickyadstv'%2Cparams%3A%7BzoneId%3Aconfig.zoneId%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-530%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobiVideo%3Afunction%20_setupSonobiVideo(config)%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%3Bvar%20TagID%3Dthis._getNested(config%2Cplatform%2C'TagID')%3Bif(TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3ATagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FWP-4177%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fcommunity.pubmatic.com%2Fdisplay%2FOP%2FPubMatic%2BPrebid.js%2BAdapter%2BParameters%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmaticConfigVideo%3Afunction%20_setupPubmaticConfigVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(config.publisherId)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.publisherId%2CadSlot%3Aparams.adSlot%2Cvideo%3A%7Bapi%3Aconfig.supportedVpaidVersions%2Ch%3Athis.videoHeight%2Clinearity%3A1%2Cmaxduration%3Aconfig.maxDuration%2Cmimes%3Aconfig.mimeTypes%2Cminduration%3Aconfig.minDuration%2Cplacement%3Aconfig.placement%2Cplaybackmethod%3Aconfig.playbackmethod%2Cprotocols%3Aconfig.supportedVastVersions%2Cskippable%3Aconfig.skippable%2Cstartdelay%3A0%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%7D%2C_setupTripleliftVideo%3Afunction%20_setupTripleliftVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aconfig.inventoryCode%2Cvideo%3A%7Bcontext%3Aconfig.context%2Ch%3Athis.videoHeight%2Cplacement%3Aconfig.placement%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%2C_setupUndertoneVideo%3Afunction%20_setupUndertoneVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'undertone'%2Cparams%3A%7BplacementId%3Aconfig.placementId%2CpublisherId%3Aconfig.publisherId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20prebid.js%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20prebidSiteConfig%20Site%20specific%20config%20object%20for%20prebid%0A%20%20%20%20%20%20%20%20%20*%2F_setupPreBids%3Afunction%20_setupPreBids(prebidSiteConfig)%7Bvar%20adSize%3Dvoid%200%2CadSizeStr%3Dvoid%200%2CgetNested%3Dthis._getNested%2CadCount%3Dthis.adCount%7C%7Cthis.getAdCount()%2CadUnitPath%3Dthis._generatePath()%2CadUnitSizes%3Dthis._filterFluidSize(this.sizes)%2Clocation%3Dthis.btf%3F'btf'%3A'atf'%2Csection%3DgetNested(window%2C'ga_data'%2C'route'%2C'sectionName')%2Cssts%3DgetNested(window%2C'ga_data'%2C'route'%2C'ssts')%7C%7C''%2CacceptedSizes%3DprebidSiteConfig.sizes%2CappNexusConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CaolConfig%3DprebidSiteConfig.aol%7C%7C%7B%7D%2CcriteoConfig%3DprebidSiteConfig.criteo%7C%7C%7B%7D%2CixConfig%3DprebidSiteConfig.ix%7C%7C%7B%7D%2ConeMobileConfig%3DprebidSiteConfig.onemobile%7C%7C%7B%7D%2CopenxConfig%3DprebidSiteConfig.openx%7C%7C%7B%7D%2CpubmaticConfig%3DprebidSiteConfig.pubmatic%7C%7C%7B%7D%2CsonobiConfig%3DprebidSiteConfig.sonobi%7C%7C%7B%7D%2CrubiconConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CtripleLiftConfig%3DprebidSiteConfig.triplelift%7C%7C%7B%7D%2CkargoConfig%3DprebidSiteConfig.kargo%7C%7C%7B%7D%2CtrustxConfig%3DprebidSiteConfig.trustx%7C%7C%7B%7D%2CyieldmoConfig%3DprebidSiteConfig.yieldmo%7C%7C%7B%7D%3Bthis.bids%3D%5B%5D%3B%2F%2F%20Check%20to%20see%20if%20this%20slot%20has%20a%20size%20that%20we%20can%20bid%20on%0AadSize%3Dthis._getMaxSize(adUnitSizes%2CacceptedSizes)%3Bif(!adSize%7C%7Cthis.inactive)%7Bthis._log('Inactive%2FNo%20valid%20sizes%20for%20bidding.')%3Breturn%20this.prebid%3Dfalse%3B%7DadSizeStr%3DadSize%5B0%5D%2B'x'%2BadSize%5B1%5D%3B%2F%2F%20Sonobi%20Adapter%20Setup%0Aif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobi(sonobiConfig%2CadUnitPath)%3B%2F%2F%20Criteo%20Adapter%20Setup%0Aif(this._isEnabled('criteo'%2CcriteoConfig))this._setupCriteo(criteoConfig%2CadUnitSizes)%3B%2F%2F%20Index%20Exchange%20Adapter%20Setup%0Aif(this._isEnabled('ix'%2CixConfig))this._setupIx(ixConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20OpenX%20Adapter%20Setup%0Aif(this._isEnabled('openx'%2CopenxConfig))this._setupOpenX(openxConfig%2CadUnitSizes%2Csection)%3B%2F%2F%20Rubicon%20Adapter%20Setup%0Aif(this._isEnabled('rubicon'%2CrubiconConfig))this._setupRubicon(rubiconConfig%2Csection%2Cssts%2Clocation%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('appNexus'%2CappNexusConfig))this._setupAppNexus(appNexusConfig%2CadUnitSizes%2Csection%2Cssts%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('tripleLift'%2CtripleLiftConfig))this._setupTripleLift(tripleLiftConfig%2CadUnitSizes)%3B%2F%2F%20Pubmatic%20Adapter%20Setup%0Aif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmatic(pubmaticConfig%2CadSizeStr%2Clocation)%3B%2F%2F%20OneMobile%20by%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('onemobile'%2ConeMobileConfig))this._setupOneMobile(oneMobileConfig%2CadUnitSizes)%3B%2F%2F%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('aol'%2CaolConfig))this._setupAol(aolConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20Kargo%20Adapter%20Setup%0Aif(this._isEnabled('kargo'%2CkargoConfig)%26%26adCount%3D%3D%3D1%26%26this.placement%3D%3D%3D'mobileweb-banner_bottom')this._setupKargo(kargoConfig%2CadUnitSizes)%3B%2F%2F%20Trustx%20Adapter%20Setup%0Aif(this._isEnabled('trustx'%2CtrustxConfig)%26%26(this._inMobileEnvironment()%7C%7Cthis.sticky))this._setupTrustx(trustxConfig%2CadUnitSizes)%3B%2F%2F%20Yieldmo%20Setup%0Aif(this._isEnabled('yieldmo'%2CyieldmoConfig))this._setupYieldmo(yieldmoConfig)%3Bvar%20experiment%3DgetNested(window.ga_data%2C'ads'%2C'experiment')%7C%7C%7B%7D%3Bif(experiment.flag%3D%3D%3D'ordered'%26%26Array.isArray(experiment.params))%7Bvar%20sortArray%3Dexperiment.params%3Bthis.bids.sort(function(a%2Cb)%7Breturn%20sortArray.indexOf(a.bidder)-sortArray.indexOf(b.bidder)%3B%7D)%3B%7Dthis.addAdUnits(adUnitSizes)%3B%7D%2C_isEnabled%3Afunction%20_isEnabled(bidder%2CbidderConfig)%7Breturn%20this.pbDebug%3D%3D%3Dbidder%7C%7C!this.pbDebug%26%26bidderConfig.enabled%26%26!(!bidderConfig.usp%26%26this._noSell())%3B%7D%2C_noSell%3Afunction%20_noSell()%7Bvar%20privacy%3Dwindow.ga_privacy%7C%7C%7Bchoices%3A%7B%7D%7D%3Breturn%20privacy.ccpaApplies%26%26privacy.choices.targeting%3D%3D%3Dfalse%3B%7D%2CaddAdUnits%3Afunction%20addAdUnits(adUnitSizes%2Cgpid)%7Bif(this.bids.length)%7Bvar%20pbUnit%3D%7Bcode%3Athis.slotId%2CmediaTypes%3A%7Bbanner%3A%7Bsizes%3Athis._sortSizes(adUnitSizes)%7D%7D%2Cbids%3Athis.bids%2Cortb2Imp%3A%7Bext%3A%7Bdata%3A%7Badserver%3A%7Badslot%3Agpid%2Cname%3A'gam'%7D%2Cpbadslot%3Agpid%7D%2Cgpid%3Agpid%7D%7D%7D%3Bif(this.isVideo)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bvar%20plcmt%3Dthis.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt')%3BpbUnit.mediaTypes%3D%7Bvideo%3A%7Bapi%3A%5B2%5D%2Ccontext%3A'instream'%2Clinearity%3A1%2Cmaxduration%3A120%2Cmimes%3A%5B'application%2Fjavascript'%2C'video%2Fmp4'%2C'video%2Fwebm'%2C'video%2Fogg'%2C'application%2Fx-mpegURL'%2C'application%2Fdash%2Bxml'%2C'video%2Fx-ms-wmv'%2C'video%2Fms-asf'%5D%2Cstartdelay%3A0%2Csize_id%3A201%2CplayerHeight%3Athis.videoHeight%2CplayerWidth%3Athis.videoWidth%2Cplcmt%3Aplcmt%7C%7C2%2C%2F%2F%20playerSize%20with%20window%20width%2Fheight%20works%20for%20our%20current%20use%20cases%20(iframes%2C%20mobile%20web)%0A%2F%2F%20will%20need%20to%20be%20updated%20once%20more%20use%20cases%20are%20added%0AplayerSize%3A%5Bwindow.innerWidth%2CMath.round(window.innerWidth*.5625)%5D%2Cprotocols%3A%5B2%2C3%2C5%2C6%2C7%2C8%5D%7D%7D%3B%7Dwindow.pbjs.que.push(function()%7Bwindow.pbjs.addAdUnits(pbUnit)%3B%7D)%3B%7Dthis.pbSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Trustx%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Trustx%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTrustx%3Afunction%20_setupTrustx(config%2Csizes)%7Bvar%20_this2%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bplacements.forEach(function(placement)%7B_this2.bids.push(%7Bbidder%3A'trustx'%2Cparams%3A%7Buid%3Aplacement.uid%2Ckeywords%3A%7Btopic%3AtopicArr.filter(Boolean)%2Cbrandsafety%3A_this2._getBrandSafety()%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Kargo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Kargo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupKargo%3Afunction%20_setupKargo(config%2Csizes)%7Bvar%20_this3%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7Bplacement.ids.forEach(function(id)%7B_this3.bids.push(%7Bbidder%3A'kargo'%2Cparams%3A%7BplacementId%3Aid%7D%7D)%3B%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Aol%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupAol%3Afunction%20_setupAol(config%2CadUnitPath%2Csizes)%7Bvar%20_this4%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this4.bids.push(%7Bbidder%3A'aol'%2Cparams%3A%7Bplacement%3Aplacement.id%2Cnetwork%3Aconfig.network%2Calias%3AadUnitPath%2Cserver%3Aconfig.server%2CsizeId%3Aplacement.sizeId%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OneMobile%20by%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20OneMobile%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupOneMobile%3Afunction%20_setupOneMobile(config%2Csizes)%7Bvar%20_this5%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this5.bids.push(%7Bbidder%3A'onemobile'%2Cparams%3A%7Bdcn%3Aconfig.dcn%2Cpos%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20AppNexus%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20AppNexus%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupAppNexus%3Afunction%20_setupAppNexus(config%2Csizes%2Csection%2Cssts%2CadCount)%7Bvar%20_this6%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bvar%20placementId%3Dvoid%200%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3B_this6.bids.push(%7Bbidder%3A'appnexus'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7BadCount%3AadCount%2Cbrandsafety%3A_this6._getBrandSafety()%2Cposition%3A_this6.placement%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Criteo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Criteo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupCriteo%3Afunction%20_setupCriteo(config)%7Bthis.bids.push(%7Bbidder%3A'criteo'%2Cparams%3A%7BnetworkId%3Aconfig.networkId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20IndexExchange%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20IndexExchange%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20adUnitSizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupIx%3Afunction%20_setupIx(config%2CadUnitPath%2CadUnitSizes)%7Bvar%20_this7%3Dthis%3Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%3Bvar%20placement%3Dvoid%200%3Bplacement%3Dconfig.placements%5Bkey%5D%3Bif(placement)%7BadUnitSizes.forEach(function(size)%7B_this7.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7BsiteId%3Aplacement.siteid%2Csize%3Asize%7D%7D)%3B%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OpenX%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20OpenX%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenX%3Afunction%20_setupOpenX(config%2Csizes%2Csection)%7Bvar%20_this8%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bvar%20placementId%3Dvoid%200%3Bplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3Bif(placementId)%7B_this8.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3AplacementId%2CdelDomain%3Aconfig.domain%7D%7D)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Pubmatic%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Pubmatic%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adSizeStr%20%20String%20value%20for%20ad%20size.%20i.e.%20%22300x250%22%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20%20%20Whether%20we%20are%20above%20or%20below%20the%20fold%20('abf'%2F'btf')%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmatic%3Afunction%20_setupPubmatic(config%2CadSizeStr%2Clocation)%7Bvar%20slot%3Dlocation.toUpperCase()%2B'%40'%2BadSizeStr%2CrosSlot%3D'ROS%40'%2BadSizeStr%2CadSlot%3Dconfig.placements.indexOf(slot)%3E-1%3Fslot%3Aconfig.placements.indexOf(rosSlot)%3E-1%3FrosSlot%3Anull%3Bif(adSlot)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.account%2CadSlot%3AadSlot%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Rubicon%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20Rubicon%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20Ad%20location%20on%20page.%20Options%20are%20'btf'%20or%20'aft'.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubicon%3Afunction%20_setupRubicon(config%2Csection%2Cssts%2Clocation%2CadCount)%7Bvar%20getNested%3Dthis._getNested%2CzoneId%3DgetNested(config%2C'zones'%2Clocation%2Csection)%7C%7CgetNested(config%2C'zones'%2C'catchall')%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dif(zoneId)%7Bthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.account%2CsiteId%3Aconfig.siteId%2CzoneId%3AzoneId%2Cinventory%3A%7Badcount%3AadCount%2Cbrandsafety%3Athis._getBrandSafety()%2Cdomain%3AgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%2Cposition%3Alocation%3D%3D%3D'atf'%3Flocation%3A''%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Sonobi%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20Sonobi%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobi%3Afunction%20_setupSonobi(config%2CadUnitPath)%7Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%2Cplacement%3Dconfig.placements%26%26(config.placements%5Bkey%5D%7C%7Cconfig.placements%5B'*'%5D)%3Bif(placement%26%26placement.TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3Aplacement.TagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20TripleLift%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20TripleLift%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTripleLift%3Afunction%20_setupTripleLift(config%2Csizes)%7Bvar%20_this9%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this9.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Yieldmo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Yieldmo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%2F_setupYieldmo%3Afunction%20_setupYieldmo(config)%7Bthis.bids.push(%7Bbidder%3A'yieldmo'%2Cparams%3A%7BplacementId%3Aconfig.placementId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20targeting%20for%20the%20ad%20slot%20then%20triggers%20a%20call%20to%20dfp%20to%20fetch%20and%20render%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bvar%20superRefresh%3Dthis._getNested(window%2C'ga_data'%2C'behaviors'%2C'PartnerSlot'%2C'refresh')%3Bif((this.displayed%7C%7Cthis.video)%26%26!this._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))%7Bthis._refreshBids(superRefresh)%3B%7Delse%20if(typeof%20superRefresh%3D%3D%3D'function')%7BsuperRefresh.call(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20bidding%20targeting%20on%20an%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BPromise%7D%20Promise%20to%20be%20resolved%20when%20bidding%20is%20complete%0A%20%20%20%20%20%20%20%20%20*%2F_refreshBids%3Afunction%20_refreshBids(superRefresh)%7Bvar%20_this10%3Dthis%3Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%2CapsSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps')%7C%7C%7B%7D%2Cpromises%3D%5B%5D%3Bthis.bidSet%3Dfalse%3Bif(this.gptSlot)%7Bthis._unsetTargeting()%3B%7Dif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bpromises.push(this.pbSetup.promise)%3Bthis.pbSetup.promise.then(function()%7Breturn%20_this10._refreshPrebid()%3B%7D)%3B%7Dif((apsSiteConfig.enabled%7C%7Cthis.apsDebug)%26%26this.aps)%7Bpromises.push(this.apsSetup.promise)%3Bthis.apsSetup.promise.then(function()%7Breturn%20_this10._refreshAPS()%3B%7D)%3B%7Dif(typeof%20superRefresh%3D%3D%3D'function')%7Bif(promises.length)%7BPromise.all(promises).then(function()%7BsuperRefresh.call(_this10)%3B%7D)%3B%7Delse%7BsuperRefresh.call(this)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Unset%203rd%20party%20targeting%0A%20%20%20%20%20%20%20%20%20*%2F_unsetTargeting%3Afunction%20_unsetTargeting()%7Bvar%20_this11%3Dthis%3Bthis._log('Clearing%203rd%20party%20targeting')%3B%5B'hb_ap'%2C'hb_bidder'%2C'hb_size'%2C'hb_source'%2C'hb_format'%2C'hb_ap_id'%2C'hb_adid'%2C'amznbid'%2C'amznp'%2C'amzniid'%2C'amznsz'%5D.forEach(function(key)%7B_this11.gptSlot.clearTargeting(key)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20our%20APS%20bids%0A%20%20%20%20%20%20%20%20%20*%2F_refreshAPS%3Afunction%20_refreshAPS()%7Bvar%20_this12%3Dthis%3Bthis._log('Queuing%20APS')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.apsAdUnits%3Dwindow.ga_data.ads.apsAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.apsAdUnits.push(_this12)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.apsAdUnits.push(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Makes%20request%20to%20prebid.js%20to%20refresh%20the%20bids%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_refreshPrebid%3Afunction%20_refreshPrebid()%7Bvar%20_this13%3Dthis%3Bthis._log('Queuing%20Prebid')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.pbAdUnits%3Dwindow.ga_data.ads.pbAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.pbAdUnits.push(_this13)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.pbAdUnits.push(this)%3B%7D%7D%2CprebidBidsReturned%3Afunction%20prebidBidsReturned(allBids)%7Bvar%20slotBids%3D(allBids%5Bthis.slotId%5D%7C%7C%7Bbids%3A%5B%5D%7D).bids%3Bif(slotBids.length)%7Bvar%20winningBid%3Dthis._getWinningBid(slotBids)%3Bthis._setPrebidTargeting(winningBid)%3B%7D%7D%2CprebidTimeoutReturned%3Afunction%20prebidTimeoutReturned(winningBid)%7Bif(!(winningBid%26%26winningBid.adserverTargeting))%7Bif(typeof%20window.pbjs.getAdserverTargetingForAdUnitCode!%3D%3D'function')return%3Bvar%20bidTargeting%3Dwindow.pbjs.getAdserverTargetingForAdUnitCode(this.slotId)%3BwinningBid%3D%7BadserverTargeting%3AbidTargeting%2CbidderCode%3AbidTargeting.hb_bidder%7D%3B%7Dthis._setPrebidTargeting(winningBid)%3B%7D%2C_setPrebidTargeting%3Afunction%20_setPrebidTargeting(winningBid)%7Bvar%20_this14%3Dthis%3Bif(!winningBid%7C%7C!winningBid.bidderCode%7C%7C!winningBid.adserverTargeting%7C%7C!winningBid.adserverTargeting.hb_ap_id)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7B_this14._setTargeting(_this14.gptSlot%2CwinningBid.adserverTargeting)%3B_this14._log('Prebid%20targeting%20set')%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20an%20array%20of%20size%20arrays%20and%20returns%20the%20largest%20ad%20size%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20%20%20%20%20%20%20%20%20Array%20of%20ad%20size%20arrays%20to%20reduce%20to%20largest%20value.%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20acceptedSizes%20Array%20of%20biddable%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Largest%20size%20array.%20i.e.%20%5B300%2C600%5D%0A%20%20%20%20%20%20%20%20%20*%2F_getMaxSize%3Afunction%20_getMaxSize(sizes%2CacceptedSizes)%7Bvar%20result%3D%5B%5D%2ClargestSize%3D0%3Bsizes.forEach(function(size)%7Bvar%20total%3Dsize%5B0%5D*size%5B1%5D%3Bif(acceptedSizes%5Bsize%5B0%5D%2B'x'%2Bsize%5B1%5D%5D%26%26total%3ElargestSize)%7BlargestSize%3Dtotal%3Bresult%3Dsize%3B%7D%7D)%3Breturn%20result%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sorts%20an%20array%20of%20size%20arrays%20in%20order%20from%20largest%20to%20smallest%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20Array%20of%20ad%20size%20arrays%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20Sorted%20array%20of%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%2F_sortSizes%3Afunction%20_sortSizes(sizes)%7Bif(sizes.length%3D%3D%3D1)return%20sizes%3Bsizes.sort(function(a%2Cb)%7Breturn%20b%5B0%5D*b%5B1%5D-a%5B0%5D*a%5B1%5D%3B%7D)%3Breturn%20sizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20a%20list%20of%20placements%20and%20finds%20the%20largest%20available%20placement%20based%0A%20%20%20%20%20%20%20%20%20*%20on%20the%20available%20sizes%20passed%20through.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20placements%20Placement%20object%2C%20keyed%20by%20size%20string.%20i.e.%20%22300x250%22%20%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20sizes%20%20%20%20%20%20Array%20of%20an%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BBoolean%7D%20multiSize%20%20Set%20true%20to%20return%20all%20matched%20sizes%2C%20otherwise%20largests%20gets%20returned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20Returns%20array%20of%20matched%20placement%20objects%0A%20%20%20%20%20%20%20%20%20*%2F_getPlacementSizes%3Afunction%20_getPlacementSizes(placements%2Csizes%2CmultiSize)%7Bvar%20matches%3D%5B%5D%3Bif(!placements)return%20matches%3Bsizes%3Dthis._sortSizes(sizes)%3Bsizes.forEach(function(size)%7Bvar%20sizeStr%3Dsize%5B0%5D%2B'x'%2Bsize%5B1%5D%2Cplacement%3Dplacements%5BsizeStr%5D%3Bif(placement)%7Bmatches.push(placement)%3B%7D%7D)%3Breturn%20multiSize%3Fmatches%3Amatches.slice(0%2C1)%3B%7D%2C_getBrandSafety%3Afunction%20_getBrandSafety()%7Bif(!this.brandSafety)%7Bvar%20simpleTarget%3Dga_data.route.simpleTarget%7C%7C%5B%5D%3Bvar%20simpleExclusion%3Dga_data.route.simpleExclusion%7C%7C%5B%5D%3Bthis.brandSafety%3DsimpleTarget.concat(simpleExclusion)%3Bif(!this.brandSafety.length)%7Bthis.brandSafety.push('')%3B%7D%7Dreturn%20this.brandSafety%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerBid%3DPartnerBid%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-bid.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-bid.html.js%0A",
            "totalBytes": 28154,
            "wastedBytes": 7390,
            "wastedPercent": 26.248490445407402
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Element%20mixin%20for%20recording%20dynamic%20associations%20between%20item%20paths%20in%20a%0A%20%20%20*%20master%20%60items%60%20array%20and%20a%20%60selected%60%20array%20such%20that%20path%20changes%20to%20the%0A%20%20%20*%20master%20array%20(at%20the%20host)%20element%20or%20elsewhere%20via%20data-binding)%20are%0A%20%20%20*%20correctly%20propagated%20to%20items%20in%20the%20selected%20array%20and%20vice-versa.%0A%20%20%20*%0A%20%20%20*%20The%20%60items%60%20property%20accepts%20an%20array%20of%20user%20data%2C%20and%20via%20the%0A%20%20%20*%20%60select(item)%60%20and%20%60deselect(item)%60%20API%2C%20updates%20the%20%60selected%60%20property%0A%20%20%20*%20which%20may%20be%20bound%20to%20other%20parts%20of%20the%20application%2C%20and%20any%20changes%20to%0A%20%20%20*%20sub-fields%20of%20%60selected%60%20item(s)%20will%20be%20kept%20in%20sync%20with%20items%20in%20the%0A%20%20%20*%20%60items%60%20array.%20%20When%20%60multi%60%20is%20false%2C%20%60selected%60%20is%20a%20property%0A%20%20%20*%20representing%20the%20last%20selected%20item.%20%20When%20%60multi%60%20is%20true%2C%20%60selected%60%0A%20%20%20*%20is%20an%20array%20of%20multiply%20selected%20items.%0A%20%20%20*%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40appliesMixin%20Polymer.ElementMixin%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20mixin%20for%20recording%20dynamic%20associations%20between%20item%20paths%20in%20a%0A%20%20%20*%20master%20%60items%60%20array%20and%20a%20%60selected%60%20array%0A%20%20%20*%2Fvar%20ArraySelectorMixin%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ElementMixin%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20elementBase%3DPolymer.ElementMixin(superClass)%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_ArraySelectorMixin%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20ArraySelectorMixin%3Dfunction(_elementBase)%7B_inherits(ArraySelectorMixin%2C_elementBase)%3B_createClass(ArraySelectorMixin%2Cnull%2C%5B%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Breturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20An%20array%20containing%20items%20from%20which%20selection%20will%20be%20made.%0A%20%20%20%20%20%20%20%20%20%20%20*%2Fitems%3A%7Btype%3AArray%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60true%60%2C%20multiple%20items%20may%20be%20selected%20at%20once%20(in%20this%20case%2C%0A%20%20%20%20%20%20%20%20%20%20%20*%20%60selected%60%20is%20an%20array%20of%20currently%20selected%20items).%20%20When%20%60false%60%2C%0A%20%20%20%20%20%20%20%20%20%20%20*%20only%20one%20item%20may%20be%20selected%20at%20a%20time.%0A%20%20%20%20%20%20%20%20%20%20%20*%2Fmulti%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60multi%60%20is%20true%2C%20this%20is%20an%20array%20that%20contains%20any%20selected.%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60multi%60%20is%20false%2C%20this%20is%20the%20currently%20selected%20item%2C%20or%20%60null%60%0A%20%20%20%20%20%20%20%20%20%20%20*%20if%20no%20item%20is%20selected.%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40type%20%7B%3F(Object%7CArray%3C!Object%3E)%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%2Fselected%3A%7Btype%3AObject%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60multi%60%20is%20false%2C%20this%20is%20the%20currently%20selected%20item%2C%20or%20%60null%60%0A%20%20%20%20%20%20%20%20%20%20%20*%20if%20no%20item%20is%20selected.%0A%20%20%20%20%20%20%20%20%20%20%20*%20%40type%20%7B%3FObject%7D%0A%20%20%20%20%20%20%20%20%20%20%20*%2FselectedItem%3A%7Btype%3AObject%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20When%20%60true%60%2C%20calling%20%60select%60%20on%20an%20item%20that%20is%20already%20selected%0A%20%20%20%20%20%20%20%20%20%20%20*%20will%20deselect%20the%20item.%0A%20%20%20%20%20%20%20%20%20%20%20*%2Ftoggle%3A%7Btype%3ABoolean%2Cvalue%3Afalse%7D%7D%3B%7D%7D%2C%7Bkey%3A'observers'%2Cget%3Afunction%20get()%7Breturn%5B'__updateSelection(multi%2C%20items.*)'%5D%3B%7D%7D%5D)%3Bfunction%20ArraySelectorMixin()%7B_classCallCheck(this%2CArraySelectorMixin)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(ArraySelectorMixin.__proto__%7C%7CObject.getPrototypeOf(ArraySelectorMixin)).call(this))%3B_this.__lastItems%3Dnull%3B_this.__lastMulti%3Dnull%3B_this.__selectedMap%3Dnull%3Breturn%20_this%3B%7D_createClass(ArraySelectorMixin%2C%5B%7Bkey%3A'__updateSelection'%2Cvalue%3Afunction%20__updateSelection(multi%2CitemsInfo)%7Bvar%20path%3DitemsInfo.path%3Bif(path%3D%3D'items')%7B%2F%2F%20Case%201%20-%20items%20array%20changed%2C%20so%20diff%20against%20previous%20array%20and%0A%2F%2F%20deselect%20any%20removed%20items%20and%20adjust%20selected%20indices%0Avar%20newItems%3DitemsInfo.base%7C%7C%5B%5D%3Bvar%20lastItems%3Dthis.__lastItems%3Bvar%20lastMulti%3Dthis.__lastMulti%3Bif(multi!%3D%3DlastMulti)%7Bthis.clearSelection()%3B%7Dif(lastItems)%7Bvar%20splices%3DPolymer.ArraySplice.calculateSplices(newItems%2ClastItems)%3Bthis.__applySplices(splices)%3B%7Dthis.__lastItems%3DnewItems%3Bthis.__lastMulti%3Dmulti%3B%7Delse%20if(itemsInfo.path%3D%3D'items.splices')%7B%2F%2F%20Case%202%20-%20got%20specific%20splice%20information%20describing%20the%20array%20mutation%3A%0A%2F%2F%20deselect%20any%20removed%20items%20and%20adjust%20selected%20indices%0Athis.__applySplices(itemsInfo.value.indexSplices)%3B%7Delse%7B%2F%2F%20Case%203%20-%20an%20array%20element%20was%20changed%2C%20so%20deselect%20the%20previous%0A%2F%2F%20item%20for%20that%20index%20if%20it%20was%20previously%20selected%0Avar%20part%3Dpath.slice('items.'.length)%3Bvar%20idx%3DparseInt(part%2C10)%3Bif(part.indexOf('.')%3C0%26%26part%3D%3Didx)%7Bthis.__deselectChangedIdx(idx)%3B%7D%7D%7D%7D%2C%7Bkey%3A'__applySplices'%2Cvalue%3Afunction%20__applySplices(splices)%7Bvar%20_this2%3Dthis%3Bvar%20selected%3Dthis.__selectedMap%3B%2F%2F%20Adjust%20selected%20indices%20and%20mark%20removals%0Avar%20_loop%3Dfunction%20_loop(i)%7Bvar%20s%3Dsplices%5Bi%5D%3Bselected.forEach(function(idx%2Citem)%7Bif(idx%3Cs.index)%7B%2F%2F%20no%20change%0A%7Delse%20if(idx%3E%3Ds.index%2Bs.removed.length)%7B%2F%2F%20adjust%20index%0Aselected.set(item%2Cidx%2Bs.addedCount-s.removed.length)%3B%7Delse%7B%2F%2F%20remove%20index%0Aselected.set(item%2C-1)%3B%7D%7D)%3Bfor(var%20j%3D0%3Bj%3Cs.addedCount%3Bj%2B%2B)%7Bvar%20idx%3Ds.index%2Bj%3Bif(selected.has(_this2.items%5Bidx%5D))%7Bselected.set(_this2.items%5Bidx%5D%2Cidx)%3B%7D%7D%7D%3Bfor(var%20i%3D0%3Bi%3Csplices.length%3Bi%2B%2B)%7B_loop(i)%3B%7D%2F%2F%20Update%20linked%20paths%0Athis.__updateLinks()%3B%2F%2F%20Remove%20selected%20items%20that%20were%20removed%20from%20the%20items%20array%0Avar%20sidx%3D0%3Bselected.forEach(function(idx%2Citem)%7Bif(idx%3C0)%7Bif(_this2.multi)%7B_this2.splice('selected'%2Csidx%2C1)%3B%7Delse%7B_this2.selected%3D_this2.selectedItem%3Dnull%3B%7Dselected.delete(item)%3B%7Delse%7Bsidx%2B%2B%3B%7D%7D)%3B%7D%7D%2C%7Bkey%3A'__updateLinks'%2Cvalue%3Afunction%20__updateLinks()%7Bvar%20_this3%3Dthis%3Bthis.__dataLinkedPaths%3D%7B%7D%3Bif(this.multi)%7Bvar%20sidx%3D0%3Bthis.__selectedMap.forEach(function(idx)%7Bif(idx%3E%3D0)%7B_this3.linkPaths('items.'%2Bidx%2C'selected.'%2Bsidx%2B%2B)%3B%7D%7D)%3B%7Delse%7Bthis.__selectedMap.forEach(function(idx)%7B_this3.linkPaths('selected'%2C'items.'%2Bidx)%3B_this3.linkPaths('selectedItem'%2C'items.'%2Bidx)%3B%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Clears%20the%20selection%20state.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'clearSelection'%2Cvalue%3Afunction%20clearSelection()%7B%2F%2F%20Unbind%20previous%20selection%0Athis.__dataLinkedPaths%3D%7B%7D%3B%2F%2F%20The%20selected%20map%20stores%203%20pieces%20of%20information%3A%0A%2F%2F%20key%3A%20items%20array%20object%0A%2F%2F%20value%3A%20items%20array%20index%0A%2F%2F%20order%3A%20selected%20array%20index%0Athis.__selectedMap%3Dnew%20Map()%3B%2F%2F%20Initialize%20selection%0Athis.selected%3Dthis.multi%3F%5B%5D%3Anull%3Bthis.selectedItem%3Dnull%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20item%20is%20currently%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20from%20%60items%60%20array%20to%20test%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20item%20is%20selected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isSelected'%2Cvalue%3Afunction%20isSelected(item)%7Breturn%20this.__selectedMap.has(item)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20whether%20the%20item%20is%20currently%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20idx%20Index%20from%20%60items%60%20array%20to%20test%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20item%20is%20selected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isIndexSelected'%2Cvalue%3Afunction%20isIndexSelected(idx)%7Breturn%20this.isSelected(this.items%5Bidx%5D)%3B%7D%7D%2C%7Bkey%3A'__deselectChangedIdx'%2Cvalue%3Afunction%20__deselectChangedIdx(idx)%7Bvar%20_this4%3Dthis%3Bvar%20sidx%3Dthis.__selectedIndexForItemIndex(idx)%3Bif(sidx%3E%3D0)%7Bvar%20i%3D0%3Bthis.__selectedMap.forEach(function(idx%2Citem)%7Bif(sidx%3D%3Di%2B%2B)%7B_this4.deselect(item)%3B%7D%7D)%3B%7D%7D%7D%2C%7Bkey%3A'__selectedIndexForItemIndex'%2Cvalue%3Afunction%20__selectedIndexForItemIndex(idx)%7Bvar%20selected%3Dthis.__dataLinkedPaths%5B'items.'%2Bidx%5D%3Bif(selected)%7Breturn%20parseInt(selected.slice('selected.'.length)%2C10)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Deselects%20the%20given%20item%20if%20it%20is%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20from%20%60items%60%20array%20to%20deselect%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deselect'%2Cvalue%3Afunction%20deselect(item)%7Bvar%20idx%3Dthis.__selectedMap.get(item)%3Bif(idx%3E%3D0)%7Bthis.__selectedMap.delete(item)%3Bvar%20sidx%3Dvoid%200%3Bif(this.multi)%7Bsidx%3Dthis.__selectedIndexForItemIndex(idx)%3B%7Dthis.__updateLinks()%3Bif(this.multi)%7Bthis.splice('selected'%2Csidx%2C1)%3B%7Delse%7Bthis.selected%3Dthis.selectedItem%3Dnull%3B%7D%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Deselects%20the%20given%20index%20if%20it%20is%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20idx%20Index%20from%20%60items%60%20array%20to%20deselect%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deselectIndex'%2Cvalue%3Afunction%20deselectIndex(idx)%7Bthis.deselect(this.items%5Bidx%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Selects%20the%20given%20item.%20%20When%20%60toggle%60%20is%20true%2C%20this%20will%20automatically%0A%20%20%20%20%20%20%20*%20deselect%20the%20item%20if%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20item%20Item%20from%20%60items%60%20array%20to%20select%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'select'%2Cvalue%3Afunction%20select(item)%7Bthis.selectIndex(this.items.indexOf(item))%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Selects%20the%20given%20index.%20%20When%20%60toggle%60%20is%20true%2C%20this%20will%20automatically%0A%20%20%20%20%20%20%20*%20deselect%20the%20item%20if%20already%20selected.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20idx%20Index%20from%20%60items%60%20array%20to%20select%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'selectIndex'%2Cvalue%3Afunction%20selectIndex(idx)%7Bvar%20item%3Dthis.items%5Bidx%5D%3Bif(!this.isSelected(item))%7Bif(!this.multi)%7Bthis.__selectedMap.clear()%3B%7Dthis.__selectedMap.set(item%2Cidx)%3Bthis.__updateLinks()%3Bif(this.multi)%7Bthis.push('selected'%2Citem)%3B%7Delse%7Bthis.selected%3Dthis.selectedItem%3Ditem%3B%7D%7Delse%20if(this.toggle)%7Bthis.deselectIndex(idx)%3B%7D%7D%7D%5D)%3Breturn%20ArraySelectorMixin%3B%7D(elementBase)%3Breturn%20ArraySelectorMixin%3B%7D)%3B%2F%2F%20export%20mixin%0APolymer.ArraySelectorMixin%3DArraySelectorMixin%3B%2F**%0A%20%20%20*%20%40constructor%0A%20%20%20*%20%40extends%20%7BPolymer.Element%7D%0A%20%20%20*%20%40implements%20%7BPolymer_ArraySelectorMixin%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Fvar%20baseArraySelector%3DArraySelectorMixin(Polymer.Element)%3B%2F**%0A%20%20%20*%20Element%20implementing%20the%20%60Polymer.ArraySelector%60%20mixin%2C%20which%20records%0A%20%20%20*%20dynamic%20associations%20between%20item%20paths%20in%20a%20master%20%60items%60%20array%20and%20a%0A%20%20%20*%20%60selected%60%20array%20such%20that%20path%20changes%20to%20the%20master%20array%20(at%20the%20host)%0A%20%20%20*%20element%20or%20elsewhere%20via%20data-binding)%20are%20correctly%20propagated%20to%20items%0A%20%20%20*%20in%20the%20selected%20array%20and%20vice-versa.%0A%20%20%20*%0A%20%20%20*%20The%20%60items%60%20property%20accepts%20an%20array%20of%20user%20data%2C%20and%20via%20the%0A%20%20%20*%20%60select(item)%60%20and%20%60deselect(item)%60%20API%2C%20updates%20the%20%60selected%60%20property%0A%20%20%20*%20which%20may%20be%20bound%20to%20other%20parts%20of%20the%20application%2C%20and%20any%20changes%20to%0A%20%20%20*%20sub-fields%20of%20%60selected%60%20item(s)%20will%20be%20kept%20in%20sync%20with%20items%20in%20the%0A%20%20%20*%20%60items%60%20array.%20%20When%20%60multi%60%20is%20false%2C%20%60selected%60%20is%20a%20property%0A%20%20%20*%20representing%20the%20last%20selected%20item.%20%20When%20%60multi%60%20is%20true%2C%20%60selected%60%0A%20%20%20*%20is%20an%20array%20of%20multiply%20selected%20items.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3Cdom-module%20id%3D%22employee-list%22%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3Ctemplate%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdiv%3E%20Employee%20list%3A%20%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%3Cdom-repeat%20id%3D%22employeeList%22%20items%3D%22%7B%7Bemployees%7D%7D%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Ctemplate%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3EFirst%20name%3A%20%3Cspan%3E%7B%7Bitem.first%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%3ELast%20name%3A%20%3Cspan%3E%7B%7Bitem.last%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20on-click%3D%22toggleSelection%22%3ESelect%3C%2Fbutton%3E%0A%20%20%20*%20%20%20%20%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-repeat%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Carray-selector%20id%3D%22selector%22%20items%3D%22%7B%7Bemployees%7D%7D%22%20selected%3D%22%7B%7Bselected%7D%7D%22%20multi%20toggle%3E%3C%2Farray-selector%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdiv%3E%20Selected%20employees%3A%20%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%3Cdom-repeat%20items%3D%22%7B%7Bselected%7D%7D%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Ctemplate%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3EFirst%20name%3A%20%3Cspan%3E%7B%7Bitem.first%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%3ELast%20name%3A%20%3Cspan%3E%7B%7Bitem.last%7D%7D%3C%2Fspan%3E%3C%2Fdiv%3E%0A%20%20%20*%20%20%20%20%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-repeat%3E%0A%20%20%20*%0A%20%20%20*%20%20%20%3C%2Ftemplate%3E%0A%20%20%20*%0A%20%20%20*%20%3C%2Fdom-module%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%60%60%60js%0A%20%20%20*class%20EmployeeList%20extends%20Polymer.Element%20%7B%0A%20%20%20*%20%20static%20get%20is()%20%7B%20return%20'employee-list'%3B%20%7D%0A%20%20%20*%20%20static%20get%20properties()%20%7B%0A%20%20%20*%20%20%20%20return%20%7B%0A%20%20%20*%20%20%20%20%20%20employees%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20value()%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20return%20%5B%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Bob'%2C%20last%3A%20'Smith'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20%7Bfirst%3A%20'Sally'%2C%20last%3A%20'Johnson'%7D%2C%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%20...%0A%20%20%20*%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20*%20%20%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%20%7D%3B%0A%20%20%20*%20%20%7D%0A%20%20%20*%20%20toggleSelection(e)%20%7B%0A%20%20%20*%20%20%20%20let%20item%20%3D%20this.%24.employeeList.itemForElement(e.target)%3B%0A%20%20%20*%20%20%20%20this.%24.selector.select(item)%3B%0A%20%20%20*%20%20%7D%0A%20%20%20*%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40extends%20%7BbaseArraySelector%7D%0A%20%20%20*%20%40appliesMixin%20Polymer.ArraySelectorMixin%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20that%20links%20paths%20between%20an%20input%20%60items%60%20array%20and%0A%20%20%20*%20%20%20an%20output%20%60selected%60%20item%20or%20array%20based%20on%20calls%20to%20its%20selection%20API.%0A%20%20%20*%2Fvar%20ArraySelector%3Dfunction(_baseArraySelector)%7B_inherits(ArraySelector%2C_baseArraySelector)%3Bfunction%20ArraySelector()%7B_classCallCheck(this%2CArraySelector)%3Breturn%20_possibleConstructorReturn(this%2C(ArraySelector.__proto__%7C%7CObject.getPrototypeOf(ArraySelector)).apply(this%2Carguments))%3B%7D_createClass(ArraySelector%2Cnull%2C%5B%7Bkey%3A'is'%2C%2F%2F%20Not%20needed%20to%20find%20template%3B%20can%20be%20removed%20once%20the%20analyzer%0A%2F%2F%20can%20find%20the%20tag%20name%20from%20customElements.define%20call%0Aget%3Afunction%20get()%7Breturn'array-selector'%3B%7D%7D%5D)%3Breturn%20ArraySelector%3B%7D(baseArraySelector)%3BcustomElements.define(ArraySelector.is%2CArraySelector)%3B%2F**%20%40const%20*%2FPolymer.ArraySelector%3DArraySelector%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Farray-selector.html.js%0A",
            "totalBytes": 13519,
            "wastedBytes": 7347,
            "wastedPercent": 54.34573563133368
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20caseMap%3DPolymer.CaseMap%3B%2F%2F%20Save%20map%20of%20native%20properties%3B%20this%20forms%20a%20blacklist%20or%20properties%0A%2F%2F%20that%20won't%20have%20their%20values%20%22saved%22%20by%20%60saveAccessorValue%60%2C%20since%0A%2F%2F%20reading%20from%20an%20HTMLElement%20accessor%20from%20the%20context%20of%20a%20prototype%20throws%0Avar%20nativeProperties%3D%7B%7D%3Bvar%20proto%3DHTMLElement.prototype%3Bwhile(proto)%7Bvar%20props%3DObject.getOwnPropertyNames(proto)%3Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7BnativeProperties%5Bprops%5Bi%5D%5D%3Dtrue%3B%7Dproto%3DObject.getPrototypeOf(proto)%3B%7D%2F**%0A%20%20%20*%20Used%20to%20save%20the%20value%20of%20a%20property%20that%20will%20be%20overridden%20with%0A%20%20%20*%20an%20accessor.%20If%20the%20%60model%60%20is%20a%20prototype%2C%20the%20values%20will%20be%20saved%0A%20%20%20*%20in%20%60__dataProto%60%2C%20and%20it's%20up%20to%20the%20user%20(or%20downstream%20mixin)%20to%0A%20%20%20*%20decide%20how%2Fwhen%20to%20set%20these%20values%20back%20into%20the%20accessors.%0A%20%20%20*%20If%20%60model%60%20is%20already%20an%20instance%20(it%20has%20a%20%60__data%60%20property)%2C%20then%0A%20%20%20*%20the%20value%20will%20be%20set%20as%20a%20pending%20property%2C%20meaning%20the%20user%20should%0A%20%20%20*%20call%20%60_invalidateProperties%60%20or%20%60_flushProperties%60%20to%20take%20effect%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20saveAccessorValue(model%2Cproperty)%7B%2F%2F%20Don't%20read%2Fstore%20value%20for%20any%20native%20properties%20since%20they%20could%20throw%0Aif(!nativeProperties%5Bproperty%5D)%7Bvar%20value%3Dmodel%5Bproperty%5D%3Bif(value!%3D%3Dundefined)%7Bif(model.__data)%7B%2F%2F%20Adding%20accessor%20to%20instance%3B%20update%20the%20property%0A%2F%2F%20It%20is%20the%20user's%20responsibility%20to%20call%20_flushProperties%0Amodel._setPendingProperty(property%2Cvalue)%3B%7Delse%7B%2F%2F%20Adding%20accessor%20to%20proto%3B%20save%20proto's%20value%20for%20instance-time%20use%0Aif(!model.__dataProto)%7Bmodel.__dataProto%3D%7B%7D%3B%7Delse%20if(!model.hasOwnProperty(JSCompiler_renameProperty('__dataProto'%2Cmodel)))%7Bmodel.__dataProto%3DObject.create(model.__dataProto)%3B%7Dmodel.__dataProto%5Bproperty%5D%3Dvalue%3B%7D%7D%7D%7D%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20basic%20meta-programming%20for%20creating%20one%0A%20%20%20*%20or%20more%20property%20accessors%20(getter%2Fsetter%20pair)%20that%20enqueue%20an%20async%0A%20%20%20*%20(batched)%20%60_propertiesChanged%60%20callback.%0A%20%20%20*%0A%20%20%20*%20For%20basic%20usage%20of%20this%20mixin%3A%0A%20%20%20*%20%0A%20%20%20*%20-%20%20%20Declare%20attributes%20to%20observe%20via%20the%20standard%20%60static%20get%20observedAttributes()%60.%20Use%0A%20%20%20*%20%20%20%20%20%60dash-case%60%20attribute%20names%20to%20represent%20%60camelCase%60%20property%20names.%20%0A%20%20%20*%20-%20%20%20Implement%20the%20%60_propertiesChanged%60%20callback%20on%20the%20class.%0A%20%20%20*%20-%20%20%20Call%20%60MyClass.createPropertiesForAttributes()%60%20**once**%20on%20the%20class%20to%20generate%20%0A%20%20%20*%20%20%20%20%20property%20accessors%20for%20each%20observed%20attribute.%20This%20must%20be%20called%20before%20the%20first%20%0A%20%20%20*%20%20%20%20%20instance%20is%20created%2C%20for%20example%2C%20by%20calling%20it%20before%20calling%20%60customElements.define%60.%0A%20%20%20*%20%20%20%20%20It%20can%20also%20be%20called%20lazily%20from%20the%20element's%20%60constructor%60%2C%20as%20long%20as%20it's%20guarded%20so%0A%20%20%20*%20%20%20%20%20that%20the%20call%20is%20only%20made%20once%2C%20when%20the%20first%20instance%20is%20created.%0A%20%20%20*%20-%20%20%20Call%20%60this._enableProperties()%60%20in%20the%20element's%20%60connectedCallback%60%20to%20enable%20%0A%20%20%20*%20%20%20%20%20the%20accessors.%0A%20%20%20*%0A%20%20%20*%20Any%20%60observedAttributes%60%20will%20automatically%20be%0A%20%20%20*%20deserialized%20via%20%60attributeChangedCallback%60%20and%20set%20to%20the%20associated%0A%20%20%20*%20property%20using%20%60dash-case%60-to-%60camelCase%60%20convention.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertiesChanged%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20for%20reacting%20to%20property%20changes%20from%0A%20%20%20*%20%20%20generated%20property%20accessors.%0A%20%20%20*%2FPolymer.PropertyAccessors%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesChanged%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20base%3DPolymer.PropertiesChanged(superClass)%3B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20PropertyAccessors%3Dfunction(_base)%7B_inherits(PropertyAccessors%2C_base)%3Bfunction%20PropertyAccessors()%7B_classCallCheck(this%2CPropertyAccessors)%3Breturn%20_possibleConstructorReturn(this%2C(PropertyAccessors.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors)).apply(this%2Carguments))%3B%7D_createClass(PropertyAccessors%2C%5B%7Bkey%3A'_initializeProperties'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20PropertiesChanged%20implementation%20to%20initialize%20values%20for%0A%20%20%20%20%20%20%20*%20accessors%20created%20for%20values%20that%20already%20existed%20on%20the%20element%0A%20%20%20%20%20%20%20*%20prototype.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_initializeProperties()%7Bif(this.__dataProto)%7Bthis._initializeProtoProperties(this.__dataProto)%3Bthis.__dataProto%3Dnull%3B%7D_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20at%20instance%20time%20with%20bag%20of%20properties%20that%20were%20overwritten%0A%20%20%20%20%20%20%20*%20by%20accessors%20on%20the%20prototype%20when%20accessors%20were%20created.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20The%20default%20implementation%20sets%20these%20properties%20back%20into%20the%0A%20%20%20%20%20%20%20*%20setter%20at%20instance%20time.%20%20This%20method%20is%20provided%20as%20an%20override%0A%20%20%20%20%20%20%20*%20point%20for%20customizing%20or%20providing%20more%20efficient%20initialization.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20property%20values%20that%20were%20overwritten%0A%20%20%20%20%20%20%20*%20%20%20when%20creating%20property%20accessors.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_initializeProtoProperties'%2Cvalue%3Afunction%20_initializeProtoProperties(props)%7Bfor(var%20p%20in%20props)%7Bthis._setProperty(p%2Cprops%5Bp%5D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Ensures%20the%20element%20has%20the%20given%20attribute.%20If%20it%20does%20not%2C%0A%20%20%20%20%20%20%20*%20assigns%20the%20given%20value%20to%20the%20attribute.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20Closure%20can't%20figure%20out%20%60this%60%20is%20infact%20an%20element%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20attribute%20Name%20of%20attribute%20to%20ensure%20is%20set.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20of%20the%20attribute.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_ensureAttribute'%2Cvalue%3Afunction%20_ensureAttribute(attribute%2Cvalue)%7Bvar%20el%3D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis%3Bif(!el.hasAttribute(attribute))%7Bthis._valueToNodeAttribute(el%2Cvalue%2Cattribute)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20PropertiesChanged%20implemention%20to%20serialize%20objects%20as%20JSON.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Property%20value%20to%20serialize.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20String%20serialized%20from%20the%20provided%20property%20value.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_serializeValue'%2Cvalue%3Afunction%20_serializeValue(value)%7B%2F*%20eslint-disable%20no-fallthrough%20*%2Fswitch(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%7Bcase'object'%3Aif(value%20instanceof%20Date)%7Breturn%20value.toString()%3B%7Delse%20if(value)%7Btry%7Breturn%20JSON.stringify(value)%3B%7Dcatch(x)%7Breturn''%3B%7D%7Ddefault%3Areturn%20_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_serializeValue'%2Cthis).call(this%2Cvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Converts%20a%20string%20to%20a%20typed%20JavaScript%20value.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20is%20called%20by%20Polymer%20when%20reading%20HTML%20attribute%20values%20to%0A%20%20%20%20%20%20%20*%20JS%20properties.%20%20Users%20may%20override%20this%20method%20on%20Polymer%20element%0A%20%20%20%20%20%20%20*%20prototypes%20to%20provide%20deserialization%20for%20custom%20%60type%60s.%20%20Note%2C%0A%20%20%20%20%20%20%20*%20the%20%60type%60%20argument%20is%20the%20value%20of%20the%20%60type%60%20field%20provided%20in%20the%0A%20%20%20%20%20%20%20*%20%60properties%60%20configuration%20object%20for%20a%20given%20property%2C%20and%20is%0A%20%20%20%20%20%20%20*%20by%20convention%20the%20constructor%20for%20the%20type%20to%20deserialize.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Attribute%20value%20to%20deserialize.%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20type%20Type%20to%20deserialize%20the%20string%20to.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Typed%20value%20deserialized%20from%20the%20provided%20string.%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_deserializeValue'%2Cvalue%3Afunction%20_deserializeValue(value%2Ctype)%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7B*%7D%0A%20%20%20%20%20%20%20%20%20*%2Fvar%20outValue%3Dvoid%200%3Bswitch(type)%7Bcase%20Object%3Atry%7BoutValue%3DJSON.parse(%2F**%20%40type%20%7Bstring%7D%20*%2Fvalue)%3B%7Dcatch(x)%7B%2F%2F%20allow%20non-JSON%20literals%20like%20Strings%20and%20Numbers%0AoutValue%3Dvalue%3B%7Dbreak%3Bcase%20Array%3Atry%7BoutValue%3DJSON.parse(%2F**%20%40type%20%7Bstring%7D%20*%2Fvalue)%3B%7Dcatch(x)%7BoutValue%3Dnull%3Bconsole.warn('Polymer%3A%3AAttributes%3A%20couldn%5C't%20decode%20Array%20as%20JSON%3A%20'%2Bvalue)%3B%7Dbreak%3Bcase%20Date%3AoutValue%3DisNaN(value)%3FString(value)%3ANumber(value)%3BoutValue%3Dnew%20Date(outValue)%3Bbreak%3Bdefault%3AoutValue%3D_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_deserializeValue'%2Cthis).call(this%2Cvalue%2Ctype)%3Bbreak%3B%7Dreturn%20outValue%3B%7D%2F*%20eslint-enable%20no-fallthrough%20*%2F%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20PropertiesChanged%20implementation%20to%20save%20existing%20prototype%0A%20%20%20%20%20%20%20*%20property%20value%20so%20that%20it%20can%20be%20reset.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20readOnly%20When%20true%2C%20no%20setter%20is%20created%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20When%20calling%20on%20a%20prototype%2C%20any%20overwritten%20values%20are%20saved%20in%0A%20%20%20%20%20%20%20*%20%60__dataProto%60%2C%20and%20it%20is%20up%20to%20the%20subclasser%20to%20decide%20how%2Fwhen%0A%20%20%20%20%20%20%20*%20to%20set%20those%20properties%20back%20into%20the%20accessor.%20%20When%20calling%20on%20an%0A%20%20%20%20%20%20%20*%20instance%2C%20the%20overwritten%20value%20is%20set%20via%20%60_setPendingProperty%60%2C%0A%20%20%20%20%20%20%20*%20and%20the%20user%20should%20call%20%60_invalidateProperties%60%20or%20%60_flushProperties%60%0A%20%20%20%20%20%20%20*%20for%20the%20values%20to%20take%20effect.%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_definePropertyAccessor'%2Cvalue%3Afunction%20_definePropertyAccessor(property%2CreadOnly)%7BsaveAccessorValue(this%2Cproperty)%3B_get(PropertyAccessors.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertyAccessors.prototype)%2C'_definePropertyAccessor'%2Cthis).call(this%2Cproperty%2CreadOnly)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20this%20library%20created%20an%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20accessor%20was%20created%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_hasAccessor'%2Cvalue%3Afunction%20_hasAccessor(property)%7Breturn%20this.__dataHasAccessor%26%26this.__dataHasAccessor%5Bproperty%5D%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20specified%20property%20has%20a%20pending%20change.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20name%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20property%20has%20a%20pending%20change%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_isPropertyPending'%2Cvalue%3Afunction%20_isPropertyPending(prop)%7Breturn%20Boolean(this.__dataPending%26%26prop%20in%20this.__dataPending)%3B%7D%7D%5D%2C%5B%7Bkey%3A'createPropertiesForAttributes'%2C%2F**%0A%20%20%20%20%20%20%20*%20Generates%20property%20accessors%20for%20all%20attributes%20in%20the%20standard%0A%20%20%20%20%20%20%20*%20static%20%60observedAttributes%60%20array.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20Attribute%20names%20are%20mapped%20to%20property%20names%20using%20the%20%60dash-case%60%20to%0A%20%20%20%20%20%20%20*%20%60camelCase%60%20convention%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20createPropertiesForAttributes()%7Bvar%20a%24%3Dthis.observedAttributes%3Bfor(var%20_i%3D0%3B_i%3Ca%24.length%3B_i%2B%2B)%7Bthis.prototype._createPropertyAccessor(caseMap.dashToCamelCase(a%24%5B_i%5D))%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20an%20attribute%20name%20that%20corresponds%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20*%20By%20default%2C%20converts%20camel%20to%20dash%20case%2C%20e.g.%20%60fooBar%60%20to%20%60foo-bar%60.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20to%20convert%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Attribute%20name%20corresponding%20to%20the%20given%20property.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'attributeNameForProperty'%2Cvalue%3Afunction%20attributeNameForProperty(property)%7Breturn%20caseMap.camelToDashCase(property)%3B%7D%7D%5D)%3Breturn%20PropertyAccessors%3B%7D(base)%3Breturn%20PropertyAccessors%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperty-accessors.html.js%0A",
            "totalBytes": 12872,
            "wastedBytes": 7300,
            "wastedPercent": 56.71224362958359
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F%2F%20Common%20implementation%20for%20mixin%20%26%20behavior%0Afunction%20mutablePropertyChange(inst%2Cproperty%2Cvalue%2Cold%2CmutableData)%7Bvar%20isObject%3Dvoid%200%3Bif(mutableData)%7BisObject%3D(typeof%20value%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(value))%3D%3D%3D'object'%26%26value!%3D%3Dnull%3B%2F%2F%20Pull%20%60old%60%20for%20Objects%20from%20temp%20cache%2C%20but%20treat%20%60null%60%20as%20a%20primitive%0Aif(isObject)%7Bold%3Dinst.__dataTemp%5Bproperty%5D%3B%7D%7D%2F%2F%20Strict%20equality%20check%2C%20but%20return%20false%20for%20NaN%3D%3D%3DNaN%0Avar%20shouldChange%3Dold!%3D%3Dvalue%26%26(old%3D%3D%3Dold%7C%7Cvalue%3D%3D%3Dvalue)%3B%2F%2F%20Objects%20are%20stored%20in%20temporary%20cache%20(cleared%20at%20end%20of%0A%2F%2F%20turn)%2C%20which%20is%20used%20for%20dirty-checking%0Aif(isObject%26%26shouldChange)%7Binst.__dataTemp%5Bproperty%5D%3Dvalue%3B%7Dreturn%20shouldChange%3B%7D%2F**%0A%20%20%20*%20Element%20class%20mixin%20to%20skip%20strict%20dirty-checking%20for%20objects%20and%20arrays%0A%20%20%20*%20(always%20consider%20them%20to%20be%20%22dirty%22)%2C%20for%20use%20on%20elements%20utilizing%0A%20%20%20*%20%60Polymer.PropertyEffects%60%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20cause%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20apply%20this%20mixin%20or%20enable%20the%0A%20%20%20*%20%60Polymer.OptionalMutableData%60%20mixin.%0A%20%20%20*%0A%20%20%20*%20In%20order%20to%20make%20the%20dirty%20check%20strategy%20configurable%2C%20see%0A%20%20%20*%20%60Polymer.OptionalMutableData%60.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20as%20opposed%20to%20using%20strict%20dirty%20checking%20with%20immutable%0A%20%20%20*%20patterns%20or%20Polymer's%20path%20notification%20API.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20to%20skip%20strict%20dirty-checking%20for%20objects%0A%20%20%20*%20%20%20and%20arrays%0A%20%20%20*%2FPolymer.MutableData%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_MutableData%7D%0A%20%20%20%20%20*%2Fvar%20MutableData%3Dfunction(_superClass)%7B_inherits(MutableData%2C_superClass)%3Bfunction%20MutableData()%7B_classCallCheck(this%2CMutableData)%3Breturn%20_possibleConstructorReturn(this%2C(MutableData.__proto__%7C%7CObject.getPrototypeOf(MutableData)).apply(this%2Carguments))%3B%7D_createClass(MutableData%2C%5B%7Bkey%3A'_shouldPropertyChange'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20provide%20option%20for%20skipping%0A%20%20%20%20%20%20%20*%20strict%20equality%20checking%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20This%20method%20pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%0A%20%20%20%20%20%20%20*%20cache%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Ctrue)%3B%7D%7D%5D)%3Breturn%20MutableData%3B%7D(superClass)%3Breturn%20MutableData%3B%7D)%3B%2F**%0A%20%20%20*%20Element%20class%20mixin%20to%20add%20the%20optional%20ability%20to%20skip%20strict%0A%20%20%20*%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%0A%20%20%20*%20%22dirty%22)%20by%20setting%20a%20%60mutable-data%60%20attribute%20on%20an%20element%20instance.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20allow%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20enable%20this%20mixin%20or%20apply%20the%0A%20%20%20*%20%60Polymer.MutableData%60%20mixin.%0A%20%20%20*%0A%20%20%20*%20While%20this%20mixin%20adds%20the%20ability%20to%20forgo%20Object%2FArray%20dirty%20checking%2C%0A%20%20%20*%20the%20%60mutableData%60%20flag%20defaults%20to%20false%20and%20must%20be%20set%20on%20the%20instance.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20by%20relying%20on%20%60mutableData%3A%20true%60%20as%20opposed%20to%20using%0A%20%20%20*%20strict%20dirty%20checking%20with%20immutable%20patterns%20or%20Polymer's%20path%20notification%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20to%20optionally%20skip%20strict%20dirty-checking%0A%20%20%20*%20%20%20for%20objects%20and%20arrays%0A%20%20%20*%2FPolymer.OptionalMutableData%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_OptionalMutableData%7D%0A%20%20%20%20%20*%2Fvar%20OptionalMutableData%3Dfunction(_superClass2)%7B_inherits(OptionalMutableData%2C_superClass2)%3Bfunction%20OptionalMutableData()%7B_classCallCheck(this%2COptionalMutableData)%3Breturn%20_possibleConstructorReturn(this%2C(OptionalMutableData.__proto__%7C%7CObject.getPrototypeOf(OptionalMutableData)).apply(this%2Carguments))%3B%7D_createClass(OptionalMutableData%2C%5B%7Bkey%3A'_shouldPropertyChange'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20provide%20option%20for%20skipping%0A%20%20%20%20%20%20%20*%20strict%20equality%20checking%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20When%20%60this.mutableData%60%20is%20true%20on%20this%20instance%2C%20this%20method%0A%20%20%20%20%20%20%20*%20pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%20cache%0A%20%20%20%20%20%20%20*%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Cthis.mutableData)%3B%7D%7D%5D%2C%5B%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Breturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20*%20Instance-level%20flag%20for%20configuring%20the%20dirty-checking%20strategy%0A%20%20%20%20%20%20%20%20%20%20%20*%20for%20this%20element.%20%20When%20true%2C%20Objects%20and%20Arrays%20will%20skip%20dirty%0A%20%20%20%20%20%20%20%20%20%20%20*%20checking%2C%20otherwise%20strict%20equality%20checking%20will%20be%20used.%0A%20%20%20%20%20%20%20%20%20%20%20*%2FmutableData%3ABoolean%7D%3B%7D%7D%5D)%3Breturn%20OptionalMutableData%3B%7D(superClass)%3Breturn%20OptionalMutableData%3B%7D)%3B%2F%2F%20Export%20for%20use%20by%20legacy%20behavior%0APolymer.MutableData._mutablePropertyChange%3DmutablePropertyChange%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fmutable-data.html.js%0A",
            "totalBytes": 10198,
            "wastedBytes": 6963,
            "wastedPercent": 68.27809374387135
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20mutablePropertyChange%3Dvoid%200%3B%2F**%20%40suppress%20%7BmissingProperties%7D%20*%2F(function()%7BmutablePropertyChange%3DPolymer.MutableData._mutablePropertyChange%3B%7D)()%3B%2F**%0A%20%20%20*%20Legacy%20element%20behavior%20to%20skip%20strict%20dirty-checking%20for%20objects%20and%20arrays%2C%0A%20%20%20*%20(always%20consider%20them%20to%20be%20%22dirty%22)%20for%20use%20on%20legacy%20API%20Polymer%20elements.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20cause%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20apply%20this%20behavior%20or%20enable%20the%0A%20%20%20*%20%60Polymer.OptionalMutableDataBehavior%60.%0A%20%20%20*%0A%20%20%20*%20In%20order%20to%20make%20the%20dirty%20check%20strategy%20configurable%2C%20see%0A%20%20%20*%20%60Polymer.OptionalMutableDataBehavior%60.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20as%20opposed%20to%20using%20strict%20dirty%20checking%20with%20immutable%0A%20%20%20*%20patterns%20or%20Polymer's%20path%20notification%20API.%0A%20%20%20*%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Behavior%20to%20skip%20strict%20dirty-checking%20for%20objects%20and%0A%20%20%20*%20%20%20arrays%0A%20%20%20*%2FPolymer.MutableDataBehavior%3D%7B%2F**%0A%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20provide%20option%20for%20skipping%0A%20%20%20%20%20*%20strict%20equality%20checking%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%0A%20%20%20%20%20*%20cache%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F_shouldPropertyChange%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Ctrue)%3B%7D%7D%3B%2F**%0A%20%20%20*%20Legacy%20element%20behavior%20to%20add%20the%20optional%20ability%20to%20skip%20strict%0A%20%20%20*%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%0A%20%20%20*%20%22dirty%22)%20by%20setting%20a%20%60mutable-data%60%20attribute%20on%20an%20element%20instance.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20%60Polymer.PropertyEffects%60%20performs%20strict%20dirty%20checking%20on%0A%20%20%20*%20objects%2C%20which%20means%20that%20any%20deep%20modifications%20to%20an%20object%20or%20array%20will%0A%20%20%20*%20not%20be%20propagated%20unless%20%22immutable%22%20data%20patterns%20are%20used%20(i.e.%20all%20object%0A%20%20%20*%20references%20from%20the%20root%20to%20the%20mutation%20were%20changed).%0A%20%20%20*%0A%20%20%20*%20Polymer%20also%20provides%20a%20proprietary%20data%20mutation%20and%20path%20notification%20API%0A%20%20%20*%20(e.g.%20%60notifyPath%60%2C%20%60set%60%2C%20and%20array%20mutation%20API's)%20that%20allow%20efficient%0A%20%20%20*%20mutation%20and%20notification%20of%20deep%20changes%20in%20an%20object%20graph%20to%20all%20elements%0A%20%20%20*%20bound%20to%20the%20same%20object%20graph.%0A%20%20%20*%0A%20%20%20*%20In%20cases%20where%20neither%20immutable%20patterns%20nor%20the%20data%20mutation%20API%20can%20be%0A%20%20%20*%20used%2C%20applying%20this%20mixin%20will%20allow%20Polymer%20to%20skip%20dirty%20checking%20for%0A%20%20%20*%20objects%20and%20arrays%20(always%20consider%20them%20to%20be%20%22dirty%22).%20%20This%20allows%20a%0A%20%20%20*%20user%20to%20make%20a%20deep%20modification%20to%20a%20bound%20object%20graph%2C%20and%20then%20either%0A%20%20%20*%20simply%20re-set%20the%20object%20(e.g.%20%60this.items%20%3D%20this.items%60)%20or%20call%20%60notifyPath%60%0A%20%20%20*%20(e.g.%20%60this.notifyPath('items')%60)%20to%20update%20the%20tree.%20%20Note%20that%20all%0A%20%20%20*%20elements%20that%20wish%20to%20be%20updated%20based%20on%20deep%20mutations%20must%20apply%20this%0A%20%20%20*%20mixin%20or%20otherwise%20skip%20strict%20dirty%20checking%20for%20objects%2Farrays.%0A%20%20%20*%20Specifically%2C%20any%20elements%20in%20the%20binding%20tree%20between%20the%20source%20of%20a%0A%20%20%20*%20mutation%20and%20the%20consumption%20of%20it%20must%20enable%20this%20behavior%20or%20apply%20the%0A%20%20%20*%20%60Polymer.OptionalMutableDataBehavior%60.%0A%20%20%20*%0A%20%20%20*%20While%20this%20behavior%20adds%20the%20ability%20to%20forgo%20Object%2FArray%20dirty%20checking%2C%0A%20%20%20*%20the%20%60mutableData%60%20flag%20defaults%20to%20false%20and%20must%20be%20set%20on%20the%20instance.%0A%20%20%20*%0A%20%20%20*%20Note%2C%20the%20performance%20characteristics%20of%20propagating%20large%20object%20graphs%0A%20%20%20*%20will%20be%20worse%20by%20relying%20on%20%60mutableData%3A%20true%60%20as%20opposed%20to%20using%0A%20%20%20*%20strict%20dirty%20checking%20with%20immutable%20patterns%20or%20Polymer's%20path%20notification%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Behavior%20to%20optionally%20skip%20strict%20dirty-checking%20for%20objects%20and%0A%20%20%20*%20%20%20arrays%0A%20%20%20*%2FPolymer.OptionalMutableDataBehavior%3D%7Bproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Instance-level%20flag%20for%20configuring%20the%20dirty-checking%20strategy%0A%20%20%20%20%20%20%20*%20for%20this%20element.%20%20When%20true%2C%20Objects%20and%20Arrays%20will%20skip%20dirty%0A%20%20%20%20%20%20%20*%20checking%2C%20otherwise%20strict%20equality%20checking%20will%20be%20used.%0A%20%20%20%20%20%20%20*%2FmutableData%3ABoolean%7D%2C%2F**%0A%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyEffects%60%20to%20skip%20strict%20equality%20checking%0A%20%20%20%20%20*%20for%20Objects%20and%20Arrays.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Pulls%20the%20value%20to%20dirty%20check%20against%20from%20the%20%60__dataTemp%60%20cache%0A%20%20%20%20%20*%20(rather%20than%20the%20normal%20%60__data%60%20cache)%20for%20Objects.%20%20Since%20the%20temp%0A%20%20%20%20%20*%20cache%20is%20cleared%20at%20the%20end%20of%20a%20turn%2C%20this%20implementation%20allows%0A%20%20%20%20%20*%20side-effects%20of%20deep%20object%20changes%20to%20be%20processed%20by%20re-setting%20the%0A%20%20%20%20%20*%20same%20object%20(using%20the%20temp%20cache%20as%20an%20in-turn%20backstop%20to%20prevent%0A%20%20%20%20%20*%20cycles%20due%20to%202-way%20notification).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20New%20property%20value%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20old%20Previous%20property%20value%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20property%20should%20be%20considered%20a%20change%0A%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F_shouldPropertyChange%3Afunction%20_shouldPropertyChange(property%2Cvalue%2Cold)%7Breturn%20mutablePropertyChange(this%2Cproperty%2Cvalue%2Cold%2Cthis.mutableData)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fmutable-data-behavior.html.js%0A",
            "totalBytes": 6798,
            "wastedBytes": 6278,
            "wastedPercent": 92.35069137981759
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3Bvar%20p%3DElement.prototype%3B%2F**%0A%20%20%20*%20%40const%20%7Bfunction(this%3ANode%2C%20string)%3A%20boolean%7D%0A%20%20%20*%2Fvar%20normalizedMatchesSelector%3Dp.matches%7C%7Cp.matchesSelector%7C%7Cp.mozMatchesSelector%7C%7Cp.msMatchesSelector%7C%7Cp.oMatchesSelector%7C%7Cp.webkitMatchesSelector%3B%2F**%0A%20%20%20*%20Cross-platform%20%60element.matches%60%20shim.%0A%20%20%20*%0A%20%20%20*%20%40function%20matchesSelector%0A%20%20%20*%20%40memberof%20Polymer.dom%0A%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20check%20selector%20against%0A%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20match%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20node%20matched%20selector%0A%20%20%20*%2Fvar%20matchesSelector%3Dfunction%20matchesSelector(node%2Cselector)%7Breturn%20normalizedMatchesSelector.call(node%2Cselector)%3B%7D%3B%2F**%0A%20%20%20*%20Node%20API%20wrapper%20class%20returned%20from%20%60Polymer.dom.(target)%60%20when%0A%20%20%20*%20%60target%60%20is%20a%20%60Node%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2Fvar%20DomApi%3Dfunction()%7B%2F**%0A%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20for%20which%20to%20create%20a%20Polymer.dom%20helper%20object.%0A%20%20%20%20%20*%2Ffunction%20DomApi(node)%7B_classCallCheck(this%2CDomApi)%3Bthis.node%3Dnode%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20an%20instance%20of%20%60Polymer.FlattenedNodesObserver%60%20that%0A%20%20%20%20%20*%20listens%20for%20node%20changes%20on%20this%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bfunction(!Element%2C%20%7B%20target%3A%20!Element%2C%20addedNodes%3A%20!Array%3C!Element%3E%2C%20removedNodes%3A%20!Array%3C!Element%3E%20%7D)%3Avoid%7D%20callback%20Called%20when%20direct%20or%20distributed%20children%0A%20%20%20%20%20*%20%20%20of%20this%20element%20changes%0A%20%20%20%20%20*%20%40return%20%7B!Polymer.FlattenedNodesObserver%7D%20Observer%20instance%0A%20%20%20%20%20*%2F_createClass(DomApi%2C%5B%7Bkey%3A'observeNodes'%2Cvalue%3Afunction%20observeNodes(callback)%7Breturn%20new%20Polymer.FlattenedNodesObserver(this.node%2Ccallback)%3B%7D%2F**%0A%20%20%20%20%20*%20Disconnects%20an%20observer%20previously%20created%20via%20%60observeNodes%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!Polymer.FlattenedNodesObserver%7D%20observerHandle%20Observer%20instance%0A%20%20%20%20%20*%20%20%20to%20disconnect.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'unobserveNodes'%2Cvalue%3Afunction%20unobserveNodes(observerHandle)%7BobserverHandle.disconnect()%3B%7D%2F**%0A%20%20%20%20%20*%20Provided%20as%20a%20backwards-compatible%20API%20only.%20%20This%20method%20does%20nothing.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'notifyObserver'%2Cvalue%3Afunction%20notifyObserver()%7B%7D%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20provided%20node%20is%20contained%20with%20this%20element's%0A%20%20%20%20%20*%20light-DOM%20children%20or%20shadow%20root%2C%20including%20any%20nested%20shadow%20roots%0A%20%20%20%20%20*%20of%20children%20therein.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20test%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20given%20%60node%60%20is%20contained%20within%0A%20%20%20%20%20*%20%20%20this%20element's%20light%20or%20shadow%20DOM.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'deepContains'%2Cvalue%3Afunction%20deepContains(node)%7Bif(this.node.contains(node))%7Breturn%20true%3B%7Dvar%20n%3Dnode%3Bvar%20doc%3Dnode.ownerDocument%3B%2F%2F%20walk%20from%20node%20to%20%60this%60%20or%20%60document%60%0Awhile(n%26%26n!%3D%3Ddoc%26%26n!%3D%3Dthis.node)%7B%2F%2F%20use%20logical%20parentnode%2C%20or%20native%20ShadowRoot%20host%0An%3Dn.parentNode%7C%7Cn.host%3B%7Dreturn%20n%3D%3D%3Dthis.node%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20root%20node%20of%20this%20node.%20%20Equivalent%20to%20%60getRoodNode()%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BNode%7D%20Top%20most%20element%20in%20the%20dom%20tree%20in%20which%20the%20node%0A%20%20%20%20%20*%20exists.%20If%20the%20node%20is%20connected%20to%20a%20document%20this%20is%20either%20a%0A%20%20%20%20%20*%20shadowRoot%20or%20the%20document%3B%20otherwise%2C%20it%20may%20be%20the%20node%0A%20%20%20%20%20*%20itself%20or%20a%20node%20or%20document%20fragment%20containing%20it.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getOwnerRoot'%2Cvalue%3Afunction%20getOwnerRoot()%7Breturn%20this.node.getRootNode()%3B%7D%2F**%0A%20%20%20%20%20*%20For%20slot%20elements%2C%20returns%20the%20nodes%20assigned%20to%20the%20slot%3B%20otherwise%0A%20%20%20%20%20*%20an%20empty%20array.%20It%20is%20equivalent%20to%20%60%3Cslot%3E.addignedNodes(%7Bflatten%3Atrue%7D)%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20Array%20of%20assigned%20nodes%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getDistributedNodes'%2Cvalue%3Afunction%20getDistributedNodes()%7Breturn%20this.node.localName%3D%3D%3D'slot'%3Fthis.node.assignedNodes(%7Bflatten%3Atrue%7D)%3A%5B%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20an%20array%20of%20all%20slots%20this%20element%20was%20distributed%20to.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLSlotElement%3E%7D%20Description%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getDestinationInsertionPoints'%2Cvalue%3Afunction%20getDestinationInsertionPoints()%7Bvar%20ip%24%3D%5B%5D%3Bvar%20n%3Dthis.node.assignedSlot%3Bwhile(n)%7Bip%24.push(n)%3Bn%3Dn.assignedSlot%3B%7Dreturn%20ip%24%3B%7D%2F**%0A%20%20%20%20%20*%20Calls%20%60importNode%60%20on%20the%20%60ownerDocument%60%20for%20this%20node.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20Node%20to%20import%0A%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20deep%20True%20if%20the%20node%20should%20be%20cloned%20deeply%20during%0A%20%20%20%20%20*%20%20%20import%0A%20%20%20%20%20*%20%40return%20%7BNode%7D%20Clone%20of%20given%20node%20imported%20to%20this%20owner%20document%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'importNode'%2Cvalue%3Afunction%20importNode(node%2Cdeep)%7Bvar%20doc%3Dthis.node%20instanceof%20Document%3Fthis.node%3Athis.node.ownerDocument%3Breturn%20doc.importNode(node%2Cdeep)%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!Node%3E%7D%20Returns%20a%20flattened%20list%20of%20all%20child%20nodes%20and%0A%20%20%20%20%20*%20nodes%20assigned%20to%20child%20slots.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'getEffectiveChildNodes'%2Cvalue%3Afunction%20getEffectiveChildNodes()%7Breturn%20Polymer.FlattenedNodesObserver.getFlattenedNodes(this.node)%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20filtered%20list%20of%20flattened%20child%20elements%20for%20this%20element%20based%0A%20%20%20%20%20*%20on%20the%20given%20selector.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20selector%20Selector%20to%20filter%20nodes%20against%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLElement%3E%7D%20List%20of%20flattened%20child%20elements%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'queryDistributedElements'%2Cvalue%3Afunction%20queryDistributedElements(selector)%7Bvar%20c%24%3Dthis.getEffectiveChildNodes()%3Bvar%20list%3D%5B%5D%3Bfor(var%20i%3D0%2Cl%3Dc%24.length%2Cc%3Bi%3Cl%26%26(c%3Dc%24%5Bi%5D)%3Bi%2B%2B)%7Bif(c.nodeType%3D%3D%3DNode.ELEMENT_NODE%26%26matchesSelector(c%2Cselector))%7Blist.push(c)%3B%7D%7Dreturn%20list%3B%7D%2F**%0A%20%20%20%20%20*%20For%20shadow%20roots%2C%20returns%20the%20currently%20focused%20element%20within%20this%0A%20%20%20%20%20*%20shadow%20root.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BNode%7Cundefined%7D%20Currently%20focused%20element%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'activeElement'%2Cget%3Afunction%20get()%7Bvar%20node%3Dthis.node%3Breturn%20node._activeElement!%3D%3Dundefined%3Fnode._activeElement%3Anode.activeElement%3B%7D%7D%5D)%3Breturn%20DomApi%3B%7D()%3Bfunction%20forwardMethods(proto%2Cmethods)%7Bvar%20_loop%3Dfunction%20_loop(i)%7Bvar%20method%3Dmethods%5Bi%5D%3B%2F*%20eslint-disable%20valid-jsdoc%20*%2Fproto%5Bmethod%5D%3D%2F**%20%40this%20%7BDomApi%7D%20*%2Ffunction()%7Breturn%20this.node%5Bmethod%5D.apply(this.node%2Carguments)%3B%7D%3B%2F*%20eslint-enable%20*%2F%7D%3Bfor(var%20i%3D0%3Bi%3Cmethods.length%3Bi%2B%2B)%7B_loop(i)%3B%7D%7Dfunction%20forwardReadOnlyProperties(proto%2Cproperties)%7Bvar%20_loop2%3Dfunction%20_loop2(i)%7Bvar%20name%3Dproperties%5Bi%5D%3BObject.defineProperty(proto%2Cname%2C%7Bget%3Afunction%20get()%7Bvar%20domApi%3D%2F**%20%40type%20%7BDomApi%7D%20*%2Fthis%3Breturn%20domApi.node%5Bname%5D%3B%7D%2Cconfigurable%3Atrue%7D)%3B%7D%3Bfor(var%20i%3D0%3Bi%3Cproperties.length%3Bi%2B%2B)%7B_loop2(i)%3B%7D%7Dfunction%20forwardProperties(proto%2Cproperties)%7Bvar%20_loop3%3Dfunction%20_loop3(i)%7Bvar%20name%3Dproperties%5Bi%5D%3BObject.defineProperty(proto%2Cname%2C%7Bget%3Afunction%20get()%7Bvar%20domApi%3D%2F**%20%40type%20%7BDomApi%7D%20*%2Fthis%3Breturn%20domApi.node%5Bname%5D%3B%7D%2Cset%3Afunction%20set(value)%7B%2F**%20%40type%20%7BDomApi%7D%20*%2Fthis.node%5Bname%5D%3Dvalue%3B%7D%2Cconfigurable%3Atrue%7D)%3B%7D%3Bfor(var%20i%3D0%3Bi%3Cproperties.length%3Bi%2B%2B)%7B_loop3(i)%3B%7D%7DforwardMethods(DomApi.prototype%2C%5B'cloneNode'%2C'appendChild'%2C'insertBefore'%2C'removeChild'%2C'replaceChild'%2C'setAttribute'%2C'removeAttribute'%2C'querySelector'%2C'querySelectorAll'%5D)%3BforwardReadOnlyProperties(DomApi.prototype%2C%5B'parentNode'%2C'firstChild'%2C'lastChild'%2C'nextSibling'%2C'previousSibling'%2C'firstElementChild'%2C'lastElementChild'%2C'nextElementSibling'%2C'previousElementSibling'%2C'childNodes'%2C'children'%2C'classList'%5D)%3BforwardProperties(DomApi.prototype%2C%5B'textContent'%2C'innerHTML'%5D)%3B%2F**%0A%20%20%20*%20Event%20API%20wrapper%20class%20returned%20from%20%60Polymer.dom.(target)%60%20when%0A%20%20%20*%20%60target%60%20is%20an%20%60Event%60.%0A%20%20%20*%2Fvar%20EventApi%3Dfunction()%7Bfunction%20EventApi(event)%7B_classCallCheck(this%2CEventApi)%3Bthis.event%3Devent%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20first%20node%20on%20the%20%60composedPath%60%20of%20this%20event.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!EventTarget%7D%20The%20node%20this%20event%20was%20dispatched%20to%0A%20%20%20%20%20*%2F_createClass(EventApi%2C%5B%7Bkey%3A'rootTarget'%2Cget%3Afunction%20get()%7Breturn%20this.event.composedPath()%5B0%5D%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20local%20(re-targeted)%20target%20for%20this%20event.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7B!EventTarget%7D%20The%20local%20(re-targeted)%20target%20for%20this%20event.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'localTarget'%2Cget%3Afunction%20get()%7Breturn%20this.event.target%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20%60composedPath%60%20for%20this%20event.%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!EventTarget%3E%7D%20The%20nodes%20this%20event%20propagated%20through%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'path'%2Cget%3Afunction%20get()%7Breturn%20this.event.composedPath()%3B%7D%7D%5D)%3Breturn%20EventApi%3B%7D()%3BPolymer.DomApi%3DDomApi%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20deep%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.cloneNode%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20node%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.appendChild%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20newChild%0A%20%20%20*%20%40param%20%7BNode%7D%20refChild%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.insertBefore%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20node%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.removeChild%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7B!Node%7D%20oldChild%0A%20%20%20*%20%40param%20%7B!Node%7D%20newChild%0A%20%20%20*%20%40return%20%7B!Node%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.replaceChild%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%0A%20%20%20*%20%40param%20%7Bstring%7D%20value%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.setAttribute%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.removeAttribute%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20selector%0A%20%20%20*%20%40return%20%7B%3FElement%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.querySelector%3B%2F**%0A%20%20%20*%20%40function%0A%20%20%20*%20%40param%20%7Bstring%7D%20selector%0A%20%20%20*%20%40return%20%7B!NodeList%3C!Element%3E%7D%0A%20%20%20*%2FPolymer.DomApi.prototype.querySelectorAll%3B%2F**%0A%20%20%20*%20Legacy%20DOM%20and%20Event%20manipulation%20API%20wrapper%20factory%20used%20to%20abstract%0A%20%20%20*%20differences%20between%20native%20Shadow%20DOM%20and%20%22Shady%20DOM%22%20when%20polyfilling%20on%0A%20%20%20*%20older%20browsers.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20in%20Polymer%202.x%20use%20of%20%60Polymer.dom%60%20is%20no%20longer%20required%20and%0A%20%20%20*%20in%20the%20majority%20of%20cases%20simply%20facades%20directly%20to%20the%20standard%20native%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40summary%20Legacy%20DOM%20and%20Event%20manipulation%20API%20wrapper%20factory%20used%20to%0A%20%20%20*%20abstract%20differences%20between%20native%20Shadow%20DOM%20and%20%22Shady%20DOM.%22%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7B(Node%7CEvent)%3D%7D%20obj%20Node%20or%20event%20to%20operate%20on%0A%20%20%20*%20%40return%20%7B!DomApi%7C!EventApi%7D%20Wrapper%20providing%20either%20node%20API%20or%20event%20API%0A%20%20%20*%2FPolymer.dom%3Dfunction(obj)%7Bobj%3Dobj%7C%7Cdocument%3Bif(!obj.__domApi)%7Bvar%20helper%3Dvoid%200%3Bif(obj%20instanceof%20Event)%7Bhelper%3Dnew%20EventApi(obj)%3B%7Delse%7Bhelper%3Dnew%20DomApi(obj)%3B%7Dobj.__domApi%3Dhelper%3B%7Dreturn%20obj.__domApi%3B%7D%3BPolymer.dom.matchesSelector%3DmatchesSelector%3B%2F**%0A%20%20%20*%20Forces%20several%20classes%20of%20asynchronously%20queued%20tasks%20to%20flush%3A%0A%20%20%20*%20-%20Debouncers%20added%20via%20%60Polymer.enqueueDebouncer%60%0A%20%20%20*%20-%20ShadyDOM%20distribution%0A%20%20%20*%0A%20%20%20*%20This%20method%20facades%20to%20%60Polymer.flush%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer.dom%0A%20%20%20*%2FPolymer.dom.flush%3DPolymer.flush%3B%2F**%0A%20%20%20*%20Adds%20a%20%60Polymer.Debouncer%60%20to%20a%20list%20of%20globally%20flushable%20tasks.%0A%20%20%20*%0A%20%20%20*%20This%20method%20facades%20to%20%60Polymer.enqueueDebouncer%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer.dom%0A%20%20%20*%20%40param%20%7B!Polymer.Debouncer%7D%20debouncer%20Debouncer%20to%20enqueue%0A%20%20%20*%2FPolymer.dom.addDebouncer%3DPolymer.enqueueDebouncer%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Fpolymer.dom.html.js%0A",
            "totalBytes": 11133,
            "wastedBytes": 6186,
            "wastedPercent": 55.56453786041497
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Module%20with%20utilities%20for%20manipulating%20structured%20data%20path%20strings.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20with%20utilities%20for%20manipulating%20structured%20data%20path%20strings.%0A%20%20%20*%2Fvar%20Path%3D%7B%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20given%20string%20is%20a%20structured%20data%20path%20(has%20dots).%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.isPath('foo.bar.baz')%20%2F%2F%20true%0A%20%20%20%20%20*%20Polymer.Path.isPath('foo')%20%20%20%20%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20string%20contained%20one%20or%20more%20dots%0A%20%20%20%20%20*%2FisPath%3Afunction%20isPath(path)%7Breturn%20path.indexOf('.')%3E%3D0%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20the%20root%20property%20name%20for%20the%20given%20path.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.root('foo.bar.baz')%20%2F%2F%20'foo'%0A%20%20%20%20%20*%20Polymer.Path.root('foo')%20%20%20%20%20%20%20%20%20%2F%2F%20'foo'%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Root%20property%20name%0A%20%20%20%20%20*%2Froot%3Afunction%20root(path)%7Bvar%20dotIndex%3Dpath.indexOf('.')%3Bif(dotIndex%3D%3D%3D-1)%7Breturn%20path%3B%7Dreturn%20path.slice(0%2CdotIndex)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Given%20%60base%60%20is%20%60foo.bar%60%2C%20%60foo%60%20is%20an%20ancestor%2C%20%60foo.bar%60%20is%20not%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20given%20path%20is%20an%20ancestor%20of%20the%20base%20path.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.isAncestor('foo.bar'%2C%20'foo')%20%20%20%20%20%20%20%20%20%2F%2F%20true%0A%20%20%20%20%20*%20Polymer.Path.isAncestor('foo.bar'%2C%20'foo.bar')%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20Polymer.Path.isAncestor('foo.bar'%2C%20'foo.bar.baz')%20%2F%2F%20false%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Path%20string%20to%20test%20against.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%20to%20test.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60path%60%20is%20an%20ancestor%20of%20%60base%60.%0A%20%20%20%20%20*%2FisAncestor%3Afunction%20isAncestor(base%2Cpath)%7B%2F%2F%20%20%20%20%20base.startsWith(path%20%2B%20'.')%3B%0Areturn%20base.indexOf(path%2B'.')%3D%3D%3D0%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Given%20%60base%60%20is%20%60foo.bar%60%2C%20%60foo.bar.baz%60%20is%20an%20descendant%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.isDescendant('foo.bar'%2C%20'foo.bar.baz')%20%2F%2F%20true%0A%20%20%20%20%20*%20Polymer.Path.isDescendant('foo.bar'%2C%20'foo.bar')%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20Polymer.Path.isDescendant('foo.bar'%2C%20'foo')%20%20%20%20%20%20%20%20%20%2F%2F%20false%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Path%20string%20to%20test%20against.%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%20to%20test.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60path%60%20is%20a%20descendant%20of%20%60base%60.%0A%20%20%20%20%20*%2FisDescendant%3Afunction%20isDescendant(base%2Cpath)%7B%2F%2F%20%20%20%20%20path.startsWith(base%20%2B%20'.')%3B%0Areturn%20path.indexOf(base%2B'.')%3D%3D%3D0%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Replaces%20a%20previous%20base%20path%20with%20a%20new%20base%20path%2C%20preserving%20the%0A%20%20%20%20%20*%20remainder%20of%20the%20path.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20User%20must%20ensure%20%60path%60%20has%20a%20prefix%20of%20%60base%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.translate('foo.bar'%2C%20'zot'%2C%20'foo.bar.baz')%20%2F%2F%20'zot.baz'%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Current%20base%20string%20to%20remove%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20newBase%20New%20base%20string%20to%20replace%20with%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20to%20translate%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Translated%20string%0A%20%20%20%20%20*%2Ftranslate%3Afunction%20translate(base%2CnewBase%2Cpath)%7Breturn%20newBase%2Bpath.slice(base.length)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20base%20Path%20string%20to%20test%20against%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%20to%20test%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60path%60%20is%20equal%20to%20%60base%60%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%2Fmatches%3Afunction%20matches(base%2Cpath)%7Breturn%20base%3D%3D%3Dpath%7C%7Cthis.isAncestor(base%2Cpath)%7C%7Cthis.isDescendant(base%2Cpath)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Converts%20array-based%20paths%20to%20flattened%20path.%20%20String-based%20paths%0A%20%20%20%20%20*%20are%20returned%20as-is.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.normalize(%5B'foo.bar'%2C%200%2C%20'baz'%5D)%20%20%2F%2F%20'foo.bar.0.baz'%0A%20%20%20%20%20*%20Polymer.Path.normalize('foo.bar.0.baz')%20%20%20%20%20%20%20%20%2F%2F%20'foo.bar.0.baz'%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Input%20path%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Flattened%20path%0A%20%20%20%20%20*%2Fnormalize%3Afunction%20normalize(path)%7Bif(Array.isArray(path))%7Bvar%20parts%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3Cpath.length%3Bi%2B%2B)%7Bvar%20args%3Dpath%5Bi%5D.toString().split('.')%3Bfor(var%20j%3D0%3Bj%3Cargs.length%3Bj%2B%2B)%7Bparts.push(args%5Bj%5D)%3B%7D%7Dreturn%20parts.join('.')%3B%7Delse%7Breturn%20path%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Splits%20a%20path%20into%20an%20array%20of%20property%20names.%20Accepts%20either%20arrays%0A%20%20%20%20%20*%20of%20path%20parts%20or%20strings.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%20Polymer.Path.split(%5B'foo.bar'%2C%200%2C%20'baz'%5D)%20%20%2F%2F%20%5B'foo'%2C%20'bar'%2C%20'0'%2C%20'baz'%5D%0A%20%20%20%20%20*%20Polymer.Path.split('foo.bar.0.baz')%20%20%20%20%20%20%20%20%2F%2F%20%5B'foo'%2C%20'bar'%2C%20'0'%2C%20'baz'%5D%0A%20%20%20%20%20*%20%60%60%60%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Input%20path%0A%20%20%20%20%20*%20%40return%20%7B!Array%3Cstring%3E%7D%20Array%20of%20path%20parts%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20*%2Fsplit%3Afunction%20split(path)%7Bif(Array.isArray(path))%7Breturn%20this.normalize(path).split('.')%3B%7Dreturn%20path.toString().split('.')%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Reads%20a%20value%20from%20a%20path.%20%20If%20any%20sub-property%20in%20the%20path%20is%20%60undefined%60%2C%0A%20%20%20%20%20*%20this%20method%20returns%20%60undefined%60%20(will%20never%20throw.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20root%20Object%20from%20which%20to%20dereference%20path%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20read%0A%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20info%20If%20an%20object%20is%20provided%20to%20%60info%60%2C%20the%20normalized%0A%20%20%20%20%20*%20%20(flattened)%20path%20will%20be%20set%20to%20%60info.path%60.%0A%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20at%20path%2C%20or%20%60undefined%60%20if%20the%20path%20could%20not%20be%0A%20%20%20%20%20*%20%20fully%20dereferenced.%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%2Fget%3Afunction%20get(root%2Cpath%2Cinfo)%7Bvar%20prop%3Droot%3Bvar%20parts%3Dthis.split(path)%3B%2F%2F%20Loop%20over%20path%20parts%5B0..n-1%5D%20and%20dereference%0Afor(var%20i%3D0%3Bi%3Cparts.length%3Bi%2B%2B)%7Bif(!prop)%7Breturn%3B%7Dvar%20part%3Dparts%5Bi%5D%3Bprop%3Dprop%5Bpart%5D%3B%7Dif(info)%7Binfo.path%3Dparts.join('.')%3B%7Dreturn%20prop%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Sets%20a%20value%20to%20a%20path.%20%20If%20any%20sub-property%20in%20the%20path%20is%20%60undefined%60%2C%0A%20%20%20%20%20*%20this%20method%20will%20no-op.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20root%20Object%20from%20which%20to%20dereference%20path%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20set%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20to%20path%0A%20%20%20%20%20*%20%40return%20%7Bstring%20%7C%20undefined%7D%20The%20normalized%20version%20of%20the%20input%20path%0A%20%20%20%20%20*%20%40this%20%7BPath%7D%0A%20%20%20%20%20*%2Fset%3Afunction%20set(root%2Cpath%2Cvalue)%7Bvar%20prop%3Droot%3Bvar%20parts%3Dthis.split(path)%3Bvar%20last%3Dparts%5Bparts.length-1%5D%3Bif(parts.length%3E1)%7B%2F%2F%20Loop%20over%20path%20parts%5B0..n-2%5D%20and%20dereference%0Afor(var%20i%3D0%3Bi%3Cparts.length-1%3Bi%2B%2B)%7Bvar%20part%3Dparts%5Bi%5D%3Bprop%3Dprop%5Bpart%5D%3Bif(!prop)%7Breturn%3B%7D%7D%2F%2F%20Set%20value%20to%20object%20at%20end%20of%20path%0Aprop%5Blast%5D%3Dvalue%3B%7Delse%7B%2F%2F%20Simple%20property%20set%0Aprop%5Bpath%5D%3Dvalue%3B%7Dreturn%20parts.join('.')%3B%7D%7D%3B%2F**%0A%20%20%20*%20Returns%20true%20if%20the%20given%20string%20is%20a%20structured%20data%20path%20(has%20dots).%0A%20%20%20*%0A%20%20%20*%20This%20function%20is%20deprecated.%20%20Use%20%60Polymer.Path.isPath%60%20instead.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20Polymer.Path.isDeep('foo.bar.baz')%20%2F%2F%20true%0A%20%20%20*%20Polymer.Path.isDeep('foo')%20%20%20%20%20%20%20%20%20%2F%2F%20false%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40deprecated%0A%20%20%20*%20%40memberof%20Polymer.Path%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20string%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20string%20contained%20one%20or%20more%20dots%0A%20%20%20*%2FPath.isDeep%3DPath.isPath%3BPolymer.Path%3DPath%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fpath.html.js%0A",
            "totalBytes": 7136,
            "wastedBytes": 5696,
            "wastedPercent": 79.82062780269058
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20%20%20Polymer(%7B%0A%20%20%20%20%20%20is%3A%20'iron-input'%2C%0A%0A%20%20%20%20%20%20behaviors%3A%20%5B%0A%20%20%20%20%20%20%20%20Polymer.IronValidatableBehavior%0A%20%20%20%20%20%20%5D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Fired%20whenever%20%60validate()%60%20is%20called.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40event%20iron-input-validate%0A%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Use%20this%20property%20instead%20of%20%60value%60%20for%20two-way%20data%20binding%2C%20or%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20a%20default%20value%20for%20the%20input.%20**Do%20not**%20use%20the%20distributed%0A%20%20%20%20%20%20%20%20%20*%20input's%20%60value%60%20property%20to%20set%20a%20default%20value.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20bindValue%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Computed%20property%20that%20echoes%20%60bindValue%60%20(mostly%20used%20for%20Polymer%201.0%0A%20%20%20%20%20%20%20%20%20*%20backcompatibility%2C%20if%20you%20were%20one-way%20binding%20to%20the%20Polymer%201.0%0A%20%20%20%20%20%20%20%20%20*%20%60input%20is%3D%22iron-input%22%60%20value%20attribute).%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20computed%3A%20'_computeValue(bindValue)'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Regex-like%20list%20of%20characters%20allowed%20as%20input%3B%20all%20characters%20not%20in%20the%20list%0A%20%20%20%20%20%20%20%20%20*%20will%20be%20rejected.%20The%20recommended%20format%20should%20be%20a%20list%20of%20allowed%20characters%2C%0A%20%20%20%20%20%20%20%20%20*%20for%20example%2C%20%60%5Ba-zA-Z0-9.%2B-!%3B%3A%5D%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20pattern%20represents%20the%20allowed%20characters%20for%20the%20field%3B%20as%20the%20user%20inputs%20text%2C%0A%20%20%20%20%20%20%20%20%20*%20each%20individual%20character%20will%20be%20checked%20against%20the%20pattern%20(rather%20than%20checking%0A%20%20%20%20%20%20%20%20%20*%20the%20entire%20value%20as%20a%20whole).%20If%20a%20character%20is%20not%20a%20match%2C%20it%20will%20be%20rejected.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Pasted%20input%20will%20have%20each%20character%20checked%20individually%3B%20if%20any%20character%0A%20%20%20%20%20%20%20%20%20*%20doesn't%20match%20%60allowedPattern%60%2C%20the%20entire%20pasted%20string%20will%20be%20rejected.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Note%3A%20if%20you%20were%20using%20%60iron-input%60%20in%201.0%2C%20you%20were%20also%20required%20to%0A%20%20%20%20%20%20%20%20%20*%20set%20%60prevent-invalid-input%60.%20This%20is%20no%20longer%20needed%20as%20of%20Polymer%202.0%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20will%20be%20set%20automatically%20for%20you%20if%20an%20%60allowedPattern%60%20is%20provided.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20allowedPattern%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20auto-validate%20the%20input%20value%20as%20you%20type.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20autoValidate%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20*%20The%20native%20input%20element.%0A%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20_inputElement%3A%20Object%2C%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20observers%3A%20%5B%0A%20%20%20%20%20%20%20%20'_bindValueChanged(bindValue%2C%20_inputElement)'%0A%20%20%20%20%20%20%5D%2C%0A%0A%20%20%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20%20%20'input'%3A%20'_onInput'%2C%0A%20%20%20%20%20%20%20%20'keypress'%3A%20'_onKeypress'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20created%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20Polymer.IronA11yAnnouncer.requestAvailability()%3B%0A%20%20%20%20%20%20%20%20this._previousValidInput%20%3D%20''%3B%0A%20%20%20%20%20%20%20%20this._patternAlreadyChecked%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20the%20input%20is%20added%20at%20a%20later%20time%2C%20update%20the%20internal%20reference.%0A%20%20%20%20%20%20%20%20this._observer%20%3D%20Polymer.dom(this).observeNodes(function(info)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._initSlottedInput()%3B%0A%20%20%20%20%20%20%20%20%7D.bind(this))%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20detached%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(this._observer)%20%7B%0A%20%20%20%20%20%20%20%20%20%20Polymer.dom(this).unobserveNodes(this._observer)%3B%0A%20%20%20%20%20%20%20%20%20%20this._observer%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20distributed%20%3Cinput%3E%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20get%20inputElement%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20this._inputElement%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_initSlottedInput%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20this._inputElement%20%3D%20this.getEffectiveChildren()%5B0%5D%3B%0A%0A%20%20%20%20%20%20%20%20if%20(this.inputElement%20%26%26%20this.inputElement.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.bindValue%20%3D%20this.inputElement.value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.fire('iron-input-ready')%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20get%20_patternRegExp()%20%7B%0A%20%20%20%20%20%20%20%20var%20pattern%3B%0A%20%20%20%20%20%20%20%20if%20(this.allowedPattern)%20%7B%0A%20%20%20%20%20%20%20%20%20%20pattern%20%3D%20new%20RegExp(this.allowedPattern)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20switch%20(this.type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%20'number'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20pattern%20%3D%20%2F%5B0-9.%2Ce-%5D%2F%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20pattern%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20_bindValueChanged%3A%20function(bindValue%2C%20inputElement)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20The%20observer%20could%20have%20run%20before%20attached()%20when%20we%20have%20actually%20initialized%0A%20%20%20%20%20%20%20%20%2F%2F%20this%20property.%0A%20%20%20%20%20%20%20%20if%20(!inputElement)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(bindValue%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20inputElement.value%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(bindValue%20!%3D%3D%20inputElement.value)%7B%0A%20%20%20%20%20%20%20%20%20%20this.inputElement.value%20%3D%20bindValue%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20(this.autoValidate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.validate()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20manually%20notify%20because%20we%20don't%20want%20to%20notify%20until%20after%20setting%20value%0A%20%20%20%20%20%20%20%20this.fire('bind-value-changed'%2C%20%7Bvalue%3A%20bindValue%7D)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_onInput%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Need%20to%20validate%20each%20of%20the%20characters%20pasted%20if%20they%20haven't%0A%20%20%20%20%20%20%20%20%2F%2F%20been%20validated%20inside%20%60_onKeypress%60%20already.%0A%20%20%20%20%20%20%20%20if%20(this.allowedPattern%20%26%26%20!this._patternAlreadyChecked)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20valid%20%3D%20this._checkPatternValidity()%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!valid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._announceInvalidCharacter('Invalid%20string%20of%20characters%20not%20entered.')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.inputElement.value%20%3D%20this._previousValidInput%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.bindValue%20%3D%20this._previousValidInput%20%3D%20this.inputElement.value%3B%0A%20%20%20%20%20%20%20%20this._patternAlreadyChecked%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_isPrintable%3A%20function(event)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20What%20a%20control%2Fprintable%20character%20is%20varies%20wildly%20based%20on%20the%20browser.%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20most%20control%20characters%20(arrows%2C%20backspace)%20do%20not%20send%20a%20%60keypress%60%20event%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20in%20Chrome%2C%20but%20the%20*do*%20on%20Firefox%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20in%20Firefox%2C%20when%20they%20do%20send%20a%20%60keypress%60%20event%2C%20control%20chars%20have%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20a%20charCode%20%3D%200%2C%20keyCode%20%3D%20xx%20(for%20ex.%2040%20for%20down%20arrow)%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20printable%20characters%20always%20send%20a%20keypress%20event.%0A%20%20%20%20%20%20%20%20%2F%2F%20-%20in%20Firefox%2C%20printable%20chars%20always%20have%20a%20keyCode%20%3D%200.%20In%20Chrome%2C%20the%20keyCode%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20always%20matches%20the%20charCode.%0A%20%20%20%20%20%20%20%20%2F%2F%20None%20of%20this%20makes%20any%20sense.%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20For%20these%20keys%2C%20ASCII%20code%20%3D%3D%20browser%20keycode.%0A%20%20%20%20%20%20%20%20var%20anyNonPrintable%20%3D%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%208)%20%20%20%7C%7C%20%20%2F%2F%20backspace%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%209)%20%20%20%7C%7C%20%20%2F%2F%20tab%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2013)%20%20%7C%7C%20%20%2F%2F%20enter%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2027)%3B%20%20%20%20%20%2F%2F%20escape%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20For%20these%20keys%2C%20make%20sure%20it's%20a%20browser%20keycode%20and%20not%20an%20ASCII%20code.%0A%20%20%20%20%20%20%20%20var%20mozNonPrintable%20%3D%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2019)%20%20%7C%7C%20%20%2F%2F%20pause%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2020)%20%20%7C%7C%20%20%2F%2F%20caps%20lock%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2045)%20%20%7C%7C%20%20%2F%2F%20insert%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%2046)%20%20%7C%7C%20%20%2F%2F%20delete%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%20144)%20%7C%7C%20%20%2F%2F%20num%20lock%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3D%3D%20145)%20%7C%7C%20%20%2F%2F%20scroll%20lock%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3E%2032%20%26%26%20event.keyCode%20%3C%2041)%20%20%20%7C%7C%20%2F%2F%20page%20up%2Fdown%2C%20end%2C%20home%2C%20arrows%0A%20%20%20%20%20%20%20%20%20%20(event.keyCode%20%3E%20111%20%26%26%20event.keyCode%20%3C%20124)%3B%20%2F%2F%20fn%20keys%0A%0A%20%20%20%20%20%20%20%20return%20!anyNonPrintable%20%26%26%20!(event.charCode%20%3D%3D%200%20%26%26%20mozNonPrintable)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_onKeypress%3A%20function(event)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.allowedPattern%20%26%26%20this.type%20!%3D%3D%20'number')%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20regexp%20%3D%20this._patternRegExp%3B%0A%20%20%20%20%20%20%20%20if%20(!regexp)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Handle%20special%20keys%20and%20backspace%0A%20%20%20%20%20%20%20%20if%20(event.metaKey%20%7C%7C%20event.ctrlKey%20%7C%7C%20event.altKey)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20the%20pattern%20either%20here%20or%20in%20%60_onInput%60%2C%20but%20not%20in%20both.%0A%20%20%20%20%20%20%20%20this._patternAlreadyChecked%20%3D%20true%3B%0A%0A%20%20%20%20%20%20%20%20var%20thisChar%20%3D%20String.fromCharCode(event.charCode)%3B%0A%20%20%20%20%20%20%20%20if%20(this._isPrintable(event)%20%26%26%20!regexp.test(thisChar))%20%7B%0A%20%20%20%20%20%20%20%20%20%20event.preventDefault()%3B%0A%20%20%20%20%20%20%20%20%20%20this._announceInvalidCharacter('Invalid%20character%20'%20%2B%20thisChar%20%2B%20'%20not%20entered.')%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_checkPatternValidity%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20var%20regexp%20%3D%20this._patternRegExp%3B%0A%20%20%20%20%20%20%20%20if%20(!regexp)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20this.inputElement.value.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(!regexp.test(this.inputElement.value%5Bi%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Returns%20true%20if%20%60value%60%20is%20valid.%20The%20validator%20provided%20in%20%60validator%60%20will%20be%20used%20first%2C%0A%20%20%20%20%20%20%20*%20then%20any%20constraints.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20value%20is%20valid.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20validate%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.inputElement)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.invalid%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Use%20the%20nested%20input's%20native%20validity.%0A%20%20%20%20%20%20%20%20var%20valid%20%3D%20%20this.inputElement.checkValidity()%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Only%20do%20extra%20checking%20if%20the%20browser%20thought%20this%20was%20valid.%0A%20%20%20%20%20%20%20%20if%20(valid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Empty%2C%20required%20input%20is%20invalid%0A%20%20%20%20%20%20%20%20%20%20if%20(this.required%20%26%26%20this.bindValue%20%3D%3D%3D%20'')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.hasValidator())%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20Polymer.IronValidatableBehavior.validate.call(this%2C%20this.bindValue)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!valid%3B%0A%20%20%20%20%20%20%20%20this.fire('iron-input-validate')%3B%0A%20%20%20%20%20%20%20%20return%20valid%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_announceInvalidCharacter%3A%20function(message)%20%7B%0A%20%20%20%20%20%20%20%20this.fire('iron-announce'%2C%20%7B%20text%3A%20message%20%7D)%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_computeValue%3A%20function(bindValue)%20%7B%0A%20%20%20%20%20%20%20%20return%20bindValue%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-input%2Firon-input.html.js%0A",
            "totalBytes": 8981,
            "wastedBytes": 5659,
            "wastedPercent": 63.010800579000104
          },
          {
            "url": "data:text/javascript;charset=utf-8,function%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7D(function()%7B'use%20strict'%3Bvar%20MODULE_STYLE_LINK_SELECTOR%3D'link%5Brel%3Dimport%5D%5Btype~%3Dcss%5D'%3Bvar%20INCLUDE_ATTR%3D'include'%3Bvar%20SHADY_UNSCOPED_ATTR%3D'shady-unscoped'%3Bfunction%20importModule(moduleId)%7Bvar%2F**%20Polymer.DomModule%20*%2FPolymerDomModule%3DcustomElements.get('dom-module')%3Bif(!PolymerDomModule)%7Breturn%20null%3B%7Dreturn%20PolymerDomModule.import(moduleId)%3B%7Dfunction%20styleForImport(importDoc)%7B%2F%2F%20NOTE%3A%20polyfill%20affordance.%0A%2F%2F%20under%20the%20HTMLImports%20polyfill%2C%20there%20will%20be%20no%20'body'%2C%0A%2F%2F%20but%20the%20import%20pseudo-doc%20can%20be%20used%20directly.%0Avar%20container%3DimportDoc.body%3FimportDoc.body%3AimportDoc%3Bvar%20importCss%3DPolymer.ResolveUrl.resolveCss(container.textContent%2CimportDoc.baseURI)%3Bvar%20style%3Ddocument.createElement('style')%3Bstyle.textContent%3DimportCss%3Breturn%20style%3B%7D%2F**%20%40typedef%20%7B%7Bassetpath%3A%20string%7D%7D%20*%2Fvar%20templateWithAssetPath%3Dvoid%200%3B%2F%2F%20eslint-disable-line%20no-unused-vars%0A%2F**%0A%20%20%20*%20Module%20with%20utilities%20for%20collection%20CSS%20text%20from%20%60%3Ctemplates%3E%60%2C%20external%0A%20%20%20*%20stylesheets%2C%20and%20%60dom-module%60s.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20with%20utilities%20for%20collection%20CSS%20text%20from%20various%20sources.%0A%20%20%20*%2Fvar%20StyleGather%3D%7B%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20%3Cstyle%3E%20elements%20in%20a%20space-separated%20list%20of%20%60dom-module%60s.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleIds%20List%20of%20dom-module%20id's%20within%20which%20to%0A%20%20%20%20%20*%20search%20for%20css.%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20%3Cstyle%3E%20elements%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromModules%3Afunction%20stylesFromModules(moduleIds)%7Bvar%20modules%3DmoduleIds.trim().split(%2F%5Cs%2B%2F)%3Bvar%20styles%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3Cmodules.length%3Bi%2B%2B)%7Bstyles.push.apply(styles%2C_toConsumableArray(this.stylesFromModule(modules%5Bi%5D)))%3B%7Dreturn%20styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20%3Cstyle%3E%20elements%20in%20a%20given%20%60dom-module%60.%0A%20%20%20%20%20*%20Styles%20in%20a%20%60dom-module%60%20can%20come%20either%20from%20%60%3Cstyle%3E%60s%20within%20the%0A%20%20%20%20%20*%20first%20%60%3Ctemplate%3E%60%2C%20or%20else%20from%20one%20or%20more%0A%20%20%20%20%20*%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20links%20outside%20the%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20dom-module%20id%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20styles.%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromModule%3Afunction%20stylesFromModule(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Bif(!m)%7Bconsole.warn('Could%20not%20find%20style%20data%20in%20module%20named'%2CmoduleId)%3Breturn%5B%5D%3B%7Dif(m._styles%3D%3D%3Dundefined)%7Bvar%20styles%3D%5B%5D%3B%2F%2F%20module%20imports%3A%20%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%0Astyles.push.apply(styles%2C_toConsumableArray(this._stylesFromModuleImports(m)))%3B%2F%2F%20include%20css%20from%20the%20first%20template%20in%20the%20module%0Avar%20template%3Dm.querySelector('template')%3Bif(template)%7Bstyles.push.apply(styles%2C_toConsumableArray(this.stylesFromTemplate(template%2C%2F**%20%40type%20%7BtemplateWithAssetPath%7D%20*%2Fm.assetpath)))%3B%7Dm._styles%3Dstyles%3B%7Dreturn%20m._styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20the%20%60%3Cstyle%3E%60%20elements%20within%20a%20given%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20baseURI%20for%20style%20content%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20styles%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromTemplate%3Afunction%20stylesFromTemplate(template%2CbaseURI)%7Bif(!template._styles)%7Bvar%20styles%3D%5B%5D%3B%2F%2F%20if%20element%20is%20a%20template%2C%20get%20content%20from%20its%20.content%0Avar%20e%24%3Dtemplate.content.querySelectorAll('style')%3Bfor(var%20i%3D0%3Bi%3Ce%24.length%3Bi%2B%2B)%7Bvar%20e%3De%24%5Bi%5D%3B%2F%2F%20support%20style%20sharing%20by%20allowing%20styles%20to%20%22include%22%0A%2F%2F%20other%20dom-modules%20that%20contain%20styling%0Avar%20include%3De.getAttribute(INCLUDE_ATTR)%3Bif(include)%7Bstyles.push.apply(styles%2C_toConsumableArray(this.stylesFromModules(include).filter(function(item%2Cindex%2Cself)%7Breturn%20self.indexOf(item)%3D%3D%3Dindex%3B%7D)))%3B%7Dif(baseURI)%7Be.textContent%3DPolymer.ResolveUrl.resolveCss(e.textContent%2CbaseURI)%3B%7Dstyles.push(e)%3B%7Dtemplate._styles%3Dstyles%3B%7Dreturn%20template._styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20a%20list%20of%20%3Cstyle%3E%20elements%20%20from%20stylesheets%20loaded%20via%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20links%20within%20the%20specified%20%60dom-module%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20Id%20of%20%60dom-module%60%20to%20gather%20CSS%20from%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20styles.%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FstylesFromModuleImports%3Afunction%20stylesFromModuleImports(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Breturn%20m%3Fthis._stylesFromModuleImports(m)%3A%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20module%20dom-module%20element%20that%20could%20contain%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20styles%0A%20%20%20%20%20*%20%40return%20%7B!Array%3C!HTMLStyleElement%3E%7D%20Array%20of%20contained%20styles%0A%20%20%20%20%20*%2F_stylesFromModuleImports%3Afunction%20_stylesFromModuleImports(module)%7Bvar%20styles%3D%5B%5D%3Bvar%20p%24%3Dmodule.querySelectorAll(MODULE_STYLE_LINK_SELECTOR)%3Bfor(var%20i%3D0%3Bi%3Cp%24.length%3Bi%2B%2B)%7Bvar%20p%3Dp%24%5Bi%5D%3Bif(p.import)%7Bvar%20importDoc%3Dp.import%3Bvar%20unscoped%3Dp.hasAttribute(SHADY_UNSCOPED_ATTR)%3Bif(unscoped%26%26!importDoc._unscopedStyle)%7Bvar%20style%3DstyleForImport(importDoc)%3Bstyle.setAttribute(SHADY_UNSCOPED_ATTR%2C'')%3BimportDoc._unscopedStyle%3Dstyle%3B%7Delse%20if(!importDoc._style)%7BimportDoc._style%3DstyleForImport(importDoc)%3B%7Dstyles.push(unscoped%3FimportDoc._unscopedStyle%3AimportDoc._style)%3B%7D%7Dreturn%20styles%3B%7D%2C%2F**%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Returns%20CSS%20text%20of%20styles%20in%20a%20space-separated%20list%20of%20%60dom-module%60s.%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60stylesFromModules%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleIds%20List%20of%20dom-module%20id's%20within%20which%20to%0A%20%20%20%20%20*%20search%20for%20css.%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20specified%20%60dom-module%60s%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromModules%3Afunction%20cssFromModules(moduleIds)%7Bvar%20modules%3DmoduleIds.trim().split(%2F%5Cs%2B%2F)%3Bvar%20cssText%3D''%3Bfor(var%20i%3D0%3Bi%3Cmodules.length%3Bi%2B%2B)%7BcssText%2B%3Dthis.cssFromModule(modules%5Bi%5D)%3B%7Dreturn%20cssText%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20CSS%20text%20of%20styles%20in%20a%20given%20%60dom-module%60.%20%20CSS%20in%20a%20%60dom-module%60%0A%20%20%20%20%20*%20can%20come%20either%20from%20%60%3Cstyle%3E%60s%20within%20the%20first%20%60%3Ctemplate%3E%60%2C%20or%20else%0A%20%20%20%20%20*%20from%20one%20or%20more%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20links%20outside%20the%0A%20%20%20%20%20*%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Any%20%60%3Cstyles%3E%60%20processed%20are%20removed%20from%20their%20original%20location.%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60styleFromModule%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20dom-module%20id%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20specified%20%60dom-module%60%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromModule%3Afunction%20cssFromModule(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Bif(m%26%26m._cssText%3D%3D%3Dundefined)%7B%2F%2F%20module%20imports%3A%20%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%0Avar%20cssText%3Dthis._cssFromModuleImports(m)%3B%2F%2F%20include%20css%20from%20the%20first%20template%20in%20the%20module%0Avar%20t%3Dm.querySelector('template')%3Bif(t)%7BcssText%2B%3Dthis.cssFromTemplate(t%2C%2F**%20%40type%20%7BtemplateWithAssetPath%7D%20*%2Fm.assetpath)%3B%7Dm._cssText%3DcssText%7C%7Cnull%3B%7Dif(!m)%7Bconsole.warn('Could%20not%20find%20style%20data%20in%20module%20named'%2CmoduleId)%3B%7Dreturn%20m%26%26m._cssText%7C%7C''%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20CSS%20text%20of%20%60%3Cstyles%3E%60%20within%20a%20given%20template.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Any%20%60%3Cstyles%3E%60%20processed%20are%20removed%20from%20their%20original%20location.%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60styleFromTemplate%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20gather%20styles%20from%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20baseURI%20Base%20URI%20to%20resolve%20the%20URL%20against%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20specified%20template%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromTemplate%3Afunction%20cssFromTemplate(template%2CbaseURI)%7Bvar%20cssText%3D''%3Bvar%20e%24%3Dthis.stylesFromTemplate(template%2CbaseURI)%3B%2F%2F%20if%20element%20is%20a%20template%2C%20get%20content%20from%20its%20.content%0Afor(var%20i%3D0%3Bi%3Ce%24.length%3Bi%2B%2B)%7Bvar%20e%3De%24%5Bi%5D%3Bif(e.parentNode)%7Be.parentNode.removeChild(e)%3B%7DcssText%2B%3De.textContent%3B%7Dreturn%20cssText%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Returns%20CSS%20text%20from%20stylesheets%20loaded%20via%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%0A%20%20%20%20%20*%20links%20within%20the%20specified%20%60dom-module%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20This%20method%20is%20deprecated%2C%20use%20%60stylesFromModuleImports%60%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20moduleId%20Id%20of%20%60dom-module%60%20to%20gather%20CSS%20from%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20links%20in%20specified%20%60dom-module%60%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%2FcssFromModuleImports%3Afunction%20cssFromModuleImports(moduleId)%7Bvar%20m%3DimportModule(moduleId)%3Breturn%20m%3Fthis._cssFromModuleImports(m)%3A''%3B%7D%2C%2F**%0A%20%20%20%20%20*%20%40deprecated%0A%20%20%20%20%20*%20%40memberof%20Polymer.StyleGather%0A%20%20%20%20%20*%20%40this%20%7BStyleGather%7D%0A%20%20%20%20%20*%20%40param%20%7B!HTMLElement%7D%20module%20dom-module%20element%20that%20could%20contain%20%60%3Clink%20rel%3D%22import%22%20type%3D%22css%22%3E%60%20styles%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Concatenated%20CSS%20content%20from%20links%20in%20the%20dom-module%0A%20%20%20%20%20*%2F_cssFromModuleImports%3Afunction%20_cssFromModuleImports(module)%7Bvar%20cssText%3D''%3Bvar%20styles%3Dthis._stylesFromModuleImports(module)%3Bfor(var%20i%3D0%3Bi%3Cstyles.length%3Bi%2B%2B)%7BcssText%2B%3Dstyles%5Bi%5D.textContent%3B%7Dreturn%20cssText%3B%7D%7D%3BPolymer.StyleGather%3DStyleGather%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fstyle-gather.html.js%0A",
            "totalBytes": 9256,
            "wastedBytes": 5380,
            "wastedPercent": 58.12445980985307
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Returns%20true%20if%20%60node%60%20is%20a%20slot%20element%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20test.%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20given%20%60node%60%20is%20a%20slot%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20isSlot(node)%7Breturn%20node.localName%3D%3D%3D'slot'%3B%7D%2F**%0A%20%20%20*%20Class%20that%20listens%20for%20changes%20(additions%20or%20removals)%20to%0A%20%20%20*%20%22flattened%20nodes%22%20on%20a%20given%20%60node%60.%20The%20list%20of%20flattened%20nodes%20consists%0A%20%20%20*%20of%20a%20node's%20children%20and%2C%20for%20any%20children%20that%20are%20%60%3Cslot%3E%60%20elements%2C%0A%20%20%20*%20the%20expanded%20flattened%20list%20of%20%60assignedNodes%60.%0A%20%20%20*%20For%20example%2C%20if%20the%20observed%20node%20has%20children%20%60%3Ca%3E%3C%2Fa%3E%3Cslot%3E%3C%2Fslot%3E%3Cb%3E%3C%2Fb%3E%60%0A%20%20%20*%20and%20the%20%60%3Cslot%3E%60%20has%20one%20%60%3Cdiv%3E%60%20assigned%20to%20it%2C%20then%20the%20flattened%0A%20%20%20*%20nodes%20list%20is%20%60%3Ca%3E%3C%2Fa%3E%3Cdiv%3E%3C%2Fdiv%3E%3Cb%3E%3C%2Fb%3E%60.%20If%20the%20%60%3Cslot%3E%60%20has%20other%0A%20%20%20*%20%60%3Cslot%3E%60%20elements%20assigned%20to%20it%2C%20these%20are%20flattened%20as%20well.%0A%20%20%20*%0A%20%20%20*%20The%20provided%20%60callback%60%20is%20called%20whenever%20any%20change%20to%20this%20list%0A%20%20%20*%20of%20flattened%20nodes%20occurs%2C%20where%20an%20addition%20or%20removal%20of%20a%20node%20is%0A%20%20%20*%20considered%20a%20change.%20The%20%60callback%60%20is%20called%20with%20one%20argument%2C%20an%20object%0A%20%20%20*%20containing%20an%20array%20of%20any%20%60addedNodes%60%20and%20%60removedNodes%60.%0A%20%20%20*%0A%20%20%20*%20Note%3A%20the%20callback%20is%20called%20asynchronous%20to%20any%20changes%0A%20%20%20*%20at%20a%20microtask%20checkpoint.%20This%20is%20because%20observation%20is%20performed%20using%0A%20%20%20*%20%60MutationObserver%60%20and%20the%20%60%3Cslot%3E%60%20element's%20%60slotchange%60%20event%20which%0A%20%20%20*%20are%20asynchronous.%0A%20%20%20*%0A%20%20%20*%20An%20example%3A%0A%20%20%20*%20%60%60%60js%0A%20%20%20*%20class%20TestSelfObserve%20extends%20Polymer.Element%20%7B%0A%20%20%20*%20%20%20static%20get%20is()%20%7B%20return%20'test-self-observe'%3B%7D%0A%20%20%20*%20%20%20connectedCallback()%20%7B%0A%20%20%20*%20%20%20%20%20super.connectedCallback()%3B%0A%20%20%20*%20%20%20%20%20this._observer%20%3D%20new%20Polymer.FlattenedNodesObserver(this%2C%20(info)%20%3D%3E%20%7B%0A%20%20%20*%20%20%20%20%20%20%20this.info%20%3D%20info%3B%0A%20%20%20*%20%20%20%20%20%7D)%3B%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%20%20%20disconnectedCallback()%20%7B%0A%20%20%20*%20%20%20%20%20super.disconnectedCallback()%3B%0A%20%20%20*%20%20%20%20%20this._observer.disconnect()%3B%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%20%7D%0A%20%20%20*%20customElements.define(TestSelfObserve.is%2C%20TestSelfObserve)%3B%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Class%20that%20listens%20for%20changes%20(additions%20or%20removals)%20to%0A%20%20%20*%20%22flattened%20nodes%22%20on%20a%20given%20%60node%60.%0A%20%20%20*%2Fvar%20FlattenedNodesObserver%3Dfunction()%7B_createClass(FlattenedNodesObserver%2Cnull%2C%5B%7Bkey%3A'getFlattenedNodes'%2C%2F**%0A%20%20%20%20%20*%20Returns%20the%20list%20of%20flattened%20nodes%20for%20the%20given%20%60node%60.%0A%20%20%20%20%20*%20This%20list%20consists%20of%20a%20node's%20children%20and%2C%20for%20any%20children%0A%20%20%20%20%20*%20that%20are%20%60%3Cslot%3E%60%20elements%2C%20the%20expanded%20flattened%20list%20of%20%60assignedNodes%60.%0A%20%20%20%20%20*%20For%20example%2C%20if%20the%20observed%20node%20has%20children%20%60%3Ca%3E%3C%2Fa%3E%3Cslot%3E%3C%2Fslot%3E%3Cb%3E%3C%2Fb%3E%60%0A%20%20%20%20%20*%20and%20the%20%60%3Cslot%3E%60%20has%20one%20%60%3Cdiv%3E%60%20assigned%20to%20it%2C%20then%20the%20flattened%0A%20%20%20%20%20*%20nodes%20list%20is%20%60%3Ca%3E%3C%2Fa%3E%3Cdiv%3E%3C%2Fdiv%3E%3Cb%3E%3C%2Fb%3E%60.%20If%20the%20%60%3Cslot%3E%60%20has%20other%0A%20%20%20%20%20*%20%60%3Cslot%3E%60%20elements%20assigned%20to%20it%2C%20these%20are%20flattened%20as%20well.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BHTMLElement%7CHTMLSlotElement%7D%20node%20The%20node%20for%20which%20to%20return%20the%20list%20of%20flattened%20nodes.%0A%20%20%20%20%20*%20%40return%20%7BArray%7D%20The%20list%20of%20flattened%20nodes%20for%20the%20given%20%60node%60.%0A%20%20%20%20*%2Fvalue%3Afunction%20getFlattenedNodes(node)%7Bif(isSlot(node))%7Bnode%3D%2F**%20%40type%20%7BHTMLSlotElement%7D%20*%2Fnode%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Areturn%20node.assignedNodes(%7Bflatten%3Atrue%7D)%3B%7Delse%7Breturn%20Array.from(node.childNodes).map(function(node)%7Bif(isSlot(node))%7Bnode%3D%2F**%20%40type%20%7BHTMLSlotElement%7D%20*%2Fnode%3B%2F%2F%20eslint-disable-line%20no-self-assign%0Areturn%20node.assignedNodes(%7Bflatten%3Atrue%7D)%3B%7Delse%7Breturn%5Bnode%5D%3B%7D%7D).reduce(function(a%2Cb)%7Breturn%20a.concat(b)%3B%7D%2C%5B%5D)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BElement%7D%20target%20Node%20on%20which%20to%20listen%20for%20changes.%0A%20%20%20%20%20*%20%40param%20%7B%3Ffunction(!Element%2C%20%7B%20target%3A%20!Element%2C%20addedNodes%3A%20!Array%3C!Element%3E%2C%20removedNodes%3A%20!Array%3C!Element%3E%20%7D)%3Avoid%7D%20callback%20Function%20called%20when%20there%20are%20additions%0A%20%20%20%20%20*%20or%20removals%20from%20the%20target's%20list%20of%20flattened%20nodes.%0A%20%20%20%20*%2F%7D%5D)%3Bfunction%20FlattenedNodesObserver(target%2Ccallback)%7Bvar%20_this%3Dthis%3B_classCallCheck(this%2CFlattenedNodesObserver)%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7BMutationObserver%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._shadyChildrenObserver%3Dnull%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7BMutationObserver%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._nativeChildrenObserver%3Dnull%3Bthis._connected%3Dfalse%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7BElement%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._target%3Dtarget%3Bthis.callback%3Dcallback%3Bthis._effectiveNodes%3D%5B%5D%3Bthis._observer%3Dnull%3Bthis._scheduled%3Dfalse%3B%2F**%0A%20%20%20%20%20%20%20*%20%40type%20%7Bfunction()%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fthis._boundSchedule%3Dfunction()%7B_this._schedule()%3B%7D%3Bthis.connect()%3Bthis._schedule()%3B%7D%2F**%0A%20%20%20%20%20*%20Activates%20an%20observer.%20This%20method%20is%20automatically%20called%20when%0A%20%20%20%20%20*%20a%20%60FlattenedNodesObserver%60%20is%20created.%20It%20should%20only%20be%20called%20to%0A%20%20%20%20%20*%20re-activate%20an%20observer%20that%20has%20been%20deactivated%20via%20the%20%60disconnect%60%20method.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_createClass(FlattenedNodesObserver%2C%5B%7Bkey%3A'connect'%2Cvalue%3Afunction%20connect()%7Bvar%20_this2%3Dthis%3Bif(isSlot(this._target))%7Bthis._listenSlots(%5Bthis._target%5D)%3B%7Delse%20if(this._target.children)%7Bthis._listenSlots(this._target.children)%3Bif(window.ShadyDOM)%7Bthis._shadyChildrenObserver%3DShadyDOM.observeChildren(this._target%2Cfunction(mutations)%7B_this2._processMutations(mutations)%3B%7D)%3B%7Delse%7Bthis._nativeChildrenObserver%3Dnew%20MutationObserver(function(mutations)%7B_this2._processMutations(mutations)%3B%7D)%3Bthis._nativeChildrenObserver.observe(this._target%2C%7BchildList%3Atrue%7D)%3B%7D%7Dthis._connected%3Dtrue%3B%7D%2F**%0A%20%20%20%20%20*%20Deactivates%20the%20flattened%20nodes%20observer.%20After%20calling%20this%20method%0A%20%20%20%20%20*%20the%20observer%20callback%20will%20not%20be%20called%20when%20changes%20to%20flattened%20nodes%0A%20%20%20%20%20*%20occur.%20The%20%60connect%60%20method%20may%20be%20subsequently%20called%20to%20reactivate%0A%20%20%20%20%20*%20the%20observer.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnect'%2Cvalue%3Afunction%20disconnect()%7Bif(isSlot(this._target))%7Bthis._unlistenSlots(%5Bthis._target%5D)%3B%7Delse%20if(this._target.children)%7Bthis._unlistenSlots(this._target.children)%3Bif(window.ShadyDOM%26%26this._shadyChildrenObserver)%7BShadyDOM.unobserveChildren(this._shadyChildrenObserver)%3Bthis._shadyChildrenObserver%3Dnull%3B%7Delse%20if(this._nativeChildrenObserver)%7Bthis._nativeChildrenObserver.disconnect()%3Bthis._nativeChildrenObserver%3Dnull%3B%7D%7Dthis._connected%3Dfalse%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_schedule'%2Cvalue%3Afunction%20_schedule()%7Bvar%20_this3%3Dthis%3Bif(!this._scheduled)%7Bthis._scheduled%3Dtrue%3BPolymer.Async.microTask.run(function()%7Breturn%20_this3.flush()%3B%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BArray%3CMutationRecord%3E%7D%20mutations%20Mutations%20signaled%20by%20the%20mutation%20observer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_processMutations'%2Cvalue%3Afunction%20_processMutations(mutations)%7Bthis._processSlotMutations(mutations)%3Bthis.flush()%3B%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7BArray%3CMutationRecord%3E%7D%20mutations%20Mutations%20signaled%20by%20the%20mutation%20observer%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_processSlotMutations'%2Cvalue%3Afunction%20_processSlotMutations(mutations)%7Bif(mutations)%7Bfor(var%20i%3D0%3Bi%3Cmutations.length%3Bi%2B%2B)%7Bvar%20mutation%3Dmutations%5Bi%5D%3Bif(mutation.addedNodes)%7Bthis._listenSlots(mutation.addedNodes)%3B%7Dif(mutation.removedNodes)%7Bthis._unlistenSlots(mutation.removedNodes)%3B%7D%7D%7D%7D%2F**%0A%20%20%20%20%20*%20Flushes%20the%20observer%20causing%20any%20pending%20changes%20to%20be%20immediately%0A%20%20%20%20%20*%20delivered%20the%20observer%20callback.%20By%20default%20these%20changes%20are%20delivered%0A%20%20%20%20%20*%20asynchronously%20at%20the%20next%20microtask%20checkpoint.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20any%20pending%20changes%20caused%20the%20observer%0A%20%20%20%20%20*%20callback%20to%20run.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'flush'%2Cvalue%3Afunction%20flush()%7Bif(!this._connected)%7Breturn%20false%3B%7Dif(window.ShadyDOM)%7BShadyDOM.flush()%3B%7Dif(this._nativeChildrenObserver)%7Bthis._processSlotMutations(this._nativeChildrenObserver.takeRecords())%3B%7Delse%20if(this._shadyChildrenObserver)%7Bthis._processSlotMutations(this._shadyChildrenObserver.takeRecords())%3B%7Dthis._scheduled%3Dfalse%3Bvar%20info%3D%7Btarget%3Athis._target%2CaddedNodes%3A%5B%5D%2CremovedNodes%3A%5B%5D%7D%3Bvar%20newNodes%3Dthis.constructor.getFlattenedNodes(this._target)%3Bvar%20splices%3DPolymer.ArraySplice.calculateSplices(newNodes%2Cthis._effectiveNodes)%3B%2F%2F%20process%20removals%0Afor(var%20i%3D0%2Cs%3Bi%3Csplices.length%26%26(s%3Dsplices%5Bi%5D)%3Bi%2B%2B)%7Bfor(var%20j%3D0%2Cn%3Bj%3Cs.removed.length%26%26(n%3Ds.removed%5Bj%5D)%3Bj%2B%2B)%7Binfo.removedNodes.push(n)%3B%7D%7D%2F%2F%20process%20adds%0Afor(var%20_i%3D0%2C_s%3B_i%3Csplices.length%26%26(_s%3Dsplices%5B_i%5D)%3B_i%2B%2B)%7Bfor(var%20_j%3D_s.index%3B_j%3C_s.index%2B_s.addedCount%3B_j%2B%2B)%7Binfo.addedNodes.push(newNodes%5B_j%5D)%3B%7D%7D%2F%2F%20update%20cache%0Athis._effectiveNodes%3DnewNodes%3Bvar%20didFlush%3Dfalse%3Bif(info.addedNodes.length%7C%7Cinfo.removedNodes.length)%7BdidFlush%3Dtrue%3Bthis.callback.call(this._target%2Cinfo)%3B%7Dreturn%20didFlush%3B%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B!Array%3CElement%7CNode%3E%7C!NodeList%3CNode%3E%7D%20nodeList%20Nodes%20that%20could%20change%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_listenSlots'%2Cvalue%3Afunction%20_listenSlots(nodeList)%7Bfor(var%20i%3D0%3Bi%3CnodeList.length%3Bi%2B%2B)%7Bvar%20n%3DnodeList%5Bi%5D%3Bif(isSlot(n))%7Bn.addEventListener('slotchange'%2Cthis._boundSchedule)%3B%7D%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B!Array%3CElement%7CNode%3E%7C!NodeList%3CNode%3E%7D%20nodeList%20Nodes%20that%20could%20change%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_unlistenSlots'%2Cvalue%3Afunction%20_unlistenSlots(nodeList)%7Bfor(var%20i%3D0%3Bi%3CnodeList.length%3Bi%2B%2B)%7Bvar%20n%3DnodeList%5Bi%5D%3Bif(isSlot(n))%7Bn.removeEventListener('slotchange'%2Cthis._boundSchedule)%3B%7D%7D%7D%7D%5D)%3Breturn%20FlattenedNodesObserver%3B%7D()%3BPolymer.FlattenedNodesObserver%3DFlattenedNodesObserver%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fflattened-nodes-observer.html.js%0A",
            "totalBytes": 9727,
            "wastedBytes": 5142,
            "wastedPercent": 52.863164387786576
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20TemplateInstanceBase%3DPolymer.TemplateInstanceBase%3B%2F%2F%20eslint-disable-line%0A%2F**%0A%20%20%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20%20%20*%20%20%20_templatizerTemplate%3A%20HTMLTemplateElement%2C%0A%20%20%20%20%20*%20%20%20_parentModel%3A%20boolean%2C%0A%20%20%20%20%20*%20%20%20_instanceProps%3A%20Object%2C%0A%20%20%20%20%20*%20%20%20_forwardHostPropV2%3A%20Function%2C%0A%20%20%20%20%20*%20%20%20_notifyInstancePropV2%3A%20Function%2C%0A%20%20%20%20%20*%20%20%20ctor%3A%20TemplateInstanceBase%0A%20%20%20%20%20*%20%7D%7D%0A%20%20%20%20%20*%2Fvar%20TemplatizerUser%3Dvoid%200%3B%2F%2F%20eslint-disable-line%0A%2F**%0A%20%20%20%20%20*%20The%20%60Polymer.Templatizer%60%20behavior%20adds%20methods%20to%20generate%20instances%20of%0A%20%20%20%20%20*%20templates%20that%20are%20each%20managed%20by%20an%20anonymous%20%60Polymer.PropertyEffects%60%0A%20%20%20%20%20*%20instance%20where%20data-bindings%20in%20the%20stamped%20template%20content%20are%20bound%20to%0A%20%20%20%20%20*%20accessors%20on%20itself.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20behavior%20is%20provided%20in%20Polymer%202.x%20as%20a%20hybrid-element%20convenience%0A%20%20%20%20%20*%20only.%20%20For%20non-hybrid%20usage%2C%20the%20%60Polymer.Templatize%60%20library%0A%20%20%20%20%20*%20should%20be%20used%20instead.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Get%20a%20template%20from%20somewhere%2C%20e.g.%20light%20DOM%0A%20%20%20%20%20*%20%20%20%20%20let%20template%20%3D%20this.querySelector('template')%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Prepare%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20this.templatize(template)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Instance%20the%20template%20with%20an%20initial%20data%20model%0A%20%20%20%20%20*%20%20%20%20%20let%20instance%20%3D%20this.stamp(%7BmyProp%3A%20'initial'%7D)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Insert%20the%20instance's%20DOM%20somewhere%2C%20e.g.%20light%20DOM%0A%20%20%20%20%20*%20%20%20%20%20Polymer.dom(this).appendChild(instance.root)%3B%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20Changing%20a%20property%20on%20the%20instance%20will%20propagate%20to%20bindings%0A%20%20%20%20%20*%20%20%20%20%20%2F%2F%20in%20the%20template%0A%20%20%20%20%20*%20%20%20%20%20instance.myProp%20%3D%20'new%20value'%3B%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Users%20of%20%60Templatizer%60%20may%20need%20to%20implement%20the%20following%20abstract%0A%20%20%20%20%20*%20API's%20to%20determine%20how%20properties%20and%20paths%20from%20the%20host%20should%20be%0A%20%20%20%20%20*%20forwarded%20into%20to%20instances%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_forwardHostPropV2%3A%20function(prop%2C%20value)%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Likewise%2C%20users%20may%20implement%20these%20additional%20abstract%20API's%20to%20determine%0A%20%20%20%20%20*%20how%20instance-specific%20properties%20that%20change%20on%20the%20instance%20should%20be%0A%20%20%20%20%20*%20forwarded%20out%20to%20the%20host%2C%20if%20necessary.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_notifyInstancePropV2%3A%20function(inst%2C%20prop%2C%20value)%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20In%20order%20to%20determine%20which%20properties%20are%20instance-specific%20and%20require%0A%20%20%20%20%20*%20custom%20notification%20via%20%60_notifyInstanceProp%60%2C%20define%20an%20%60_instanceProps%60%0A%20%20%20%20%20*%20object%20containing%20keys%20for%20each%20instance%20prop%2C%20for%20example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_instanceProps%3A%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20item%3A%20true%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20index%3A%20true%0A%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Any%20properties%20used%20in%20the%20template%20that%20are%20not%20defined%20in%20_instanceProp%0A%20%20%20%20%20*%20will%20be%20forwarded%20out%20to%20the%20Templatize%20%60owner%60%20automatically.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Users%20may%20also%20implement%20the%20following%20abstract%20function%20to%20show%20or%0A%20%20%20%20%20*%20hide%20any%20DOM%20generated%20using%20%60stamp%60%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20_showHideChildren%3A%20function(shouldHide)%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%20that%20some%20callbacks%20are%20suffixed%20with%20%60V2%60%20in%20the%20Polymer%202.x%20behavior%0A%20%20%20%20%20*%20as%20the%20implementations%20will%20need%20to%20differ%20from%20the%20callbacks%20required%0A%20%20%20%20%20*%20by%20the%201.x%20Templatizer%20API%20due%20to%20changes%20in%20the%20%60TemplateInstance%60%20API%0A%20%20%20%20%20*%20between%20versions%201.x%20and%202.x.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2FPolymer.Templatizer%3D%7B%2F**%0A%20%20%20%20%20%20%20*%20Generates%20an%20anonymous%20%60TemplateInstance%60%20class%20(stored%20as%20%60this.ctor%60)%0A%20%20%20%20%20%20%20*%20for%20the%20provided%20template.%20%20This%20method%20should%20be%20called%20once%20per%0A%20%20%20%20%20%20%20*%20template%20to%20prepare%20an%20element%20for%20stamping%20the%20template%2C%20followed%0A%20%20%20%20%20%20%20*%20by%20%60stamp%60%20to%20create%20new%20instances%20of%20the%20template.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20prepare%0A%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20mutableData%20When%20%60true%60%2C%20the%20generated%20class%20will%20skip%0A%20%20%20%20%20%20%20*%20%20%20strict%20dirty-checking%20for%20objects%20and%20arrays%20(always%20consider%20them%20to%0A%20%20%20%20%20%20%20*%20%20%20be%20%22dirty%22).%20Defaults%20to%20false.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%20%40this%20%7BTemplatizerUser%7D%0A%20%20%20%20%20%20%20*%2Ftemplatize%3Afunction%20templatize(template%2CmutableData)%7Bthis._templatizerTemplate%3Dtemplate%3Bthis.ctor%3DPolymer.Templatize.templatize(template%2Cthis%2C%7BmutableData%3ABoolean(mutableData)%2CparentModel%3Athis._parentModel%2CinstanceProps%3Athis._instanceProps%2CforwardHostProp%3Athis._forwardHostPropV2%2CnotifyInstanceProp%3Athis._notifyInstancePropV2%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Creates%20an%20instance%20of%20the%20template%20prepared%20by%20%60templatize%60.%20%20The%20object%0A%20%20%20%20%20%20%20*%20returned%20is%20an%20instance%20of%20the%20anonymous%20class%20generated%20by%20%60templatize%60%0A%20%20%20%20%20%20%20*%20whose%20%60root%60%20property%20is%20a%20document%20fragment%20containing%20newly%20cloned%0A%20%20%20%20%20%20%20*%20template%20content%2C%20and%20which%20has%20property%20accessors%20corresponding%20to%0A%20%20%20%20%20%20%20*%20properties%20referenced%20in%20template%20bindings.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20model%20Object%20containing%20initial%20property%20values%20to%0A%20%20%20%20%20%20%20*%20%20%20populate%20into%20the%20template%20bindings.%0A%20%20%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Returns%20the%20created%20instance%20of%0A%20%20%20%20%20%20%20*%20the%20template%20prepared%20by%20%60templatize%60.%0A%20%20%20%20%20%20%20*%20%40this%20%7BTemplatizerUser%7D%0A%20%20%20%20%20%20%20*%2Fstamp%3Afunction%20stamp(model)%7Breturn%20new%20this.ctor(model)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Returns%20the%20template%20%22model%22%20(%60TemplateInstance%60)%20associated%20with%0A%20%20%20%20%20%20%20*%20a%20given%20element%2C%20which%20serves%20as%20the%20binding%20scope%20for%20the%20template%0A%20%20%20%20%20%20%20*%20instance%20the%20element%20is%20contained%20in.%20%20A%20template%20model%20should%20be%20used%0A%20%20%20%20%20%20%20*%20to%20manipulate%20data%20associated%20with%20this%20template%20instance.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40param%20%7BHTMLElement%7D%20el%20Element%20for%20which%20to%20return%20a%20template%20model.%0A%20%20%20%20%20%20%20*%20%40return%20%7BTemplateInstanceBase%7D%20Model%20representing%20the%20binding%20scope%20for%0A%20%20%20%20%20%20%20*%20%20%20the%20element.%0A%20%20%20%20%20%20%20*%20%40this%20%7BTemplatizerUser%7D%0A%20%20%20%20%20%20%20*%2FmodelForElement%3Afunction%20modelForElement(el)%7Breturn%20Polymer.Templatize.modelForElement(this._templatizerTemplate%2Cel)%3B%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Flegacy%2Ftemplatizer-behavior.html.js%0A",
            "totalBytes": 5584,
            "wastedBytes": 4953,
            "wastedPercent": 88.69985673352436
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D%2F%2F%20Static%20%22singleton%22%20data%20stores%2C%20exist%20in%20a%20closed%20scope%20for%20all%20instances%20of%20util-analytics%0Avar%20_currentRouteState%3D%7B%7D%3Bvar%20_routeDataBlock%3Ddocument.getElementById('ga-data-route')%3Bif(_routeDataBlock)%7Btry%7B_currentRouteState%3DJSON.parse(_routeDataBlock.textContent)%3B%7Dcatch(e)%7B_currentRouteState%3Dwindow.ga_data%26%26window.ga_data.route%3Fwindow.ga_data.route%3A%7B%7D%3B%7D%7Delse%20if(window.ga_data%26%26window.ga_data.route)%7B_currentRouteState%3Dwindow.ga_data.route%3B%7Dvar%20_eventHistory%3D%5B%5D%3B%2F%2F%20Log%20of%20all%20fired%20events%0A%2F%2F%20Log%20of%20fired%20page%20views%20and%20route%20changes%0Avar%20_viewHistory%3D%5B%5D%3BPolymer(%7Bis%3A'util-analytics'%2CdelayedEventStorageKey%3A'util-analytics%3Aaction'%2Cready%3Afunction%20ready()%7Bthis._restoreDelayedEvent(_currentRouteState)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-event%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20action%20The%20event%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20data%20The%20event%20details%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatch%20an%20analytics%20event%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20action%20The%20event%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20data%20The%20event%20details%0A%20%20%20%20%20%20%20%20%20**%2FfireEvent%3Afunction%20fireEvent(action%2Cdata)%7Bvar%20delayTrack%3Darguments.length%3E2%26%26arguments%5B2%5D!%3D%3Dundefined%3Farguments%5B2%5D%3Afalse%3Bvar%20detail%3D%7Baction%3Aaction%2Cdata%3Adata%2Croute%3A_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2C%7B%7D)%7D%3Bif(delayTrack)%7B%2F%2F%20Serialize%20data%20to%20localstorage%0Athis._persistDelayedEvent(detail)%3B%7Delse%7B_eventHistory.push(detail)%3B%2F%2F%20Fire%20analytics%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-event'%2C%7Bdetail%3Adetail%7D))%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-page-view%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatches%20a%20route%20change%20without%20changing%20base%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20tempRoute%20diffs%20from%20the%20base%20route%20object%0A%20%20%20%20%20%20%20%20%20**%2FfirePageView%3Afunction%20firePageView(tempRoute)%7Bvar%20mergedRoute%3D_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2CtempRoute)%3Bthis._restoreDelayedEvent(mergedRoute)%3Bwindow.ga_data.route%3DmergedRoute%3B_viewHistory.push(%7Broute%3AmergedRoute%7D)%3B%2F%2F%20Fire%20page-view%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-page-view'%2C%7Bdetail%3A%7Broute%3AmergedRoute%7D%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20for%20a%20generic%20event.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20ga-page-view%0A%20%20%20%20%20%20%20%20%20**%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20Dispatches%20a%20route%20change.%0A%20%20%20%20%20%20%20%20%20*%20New%20route%20becomes%20the%20base%20for%20future%20RouteChanges%20and%20PageViews.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20newRoute%20the%20new%20route%20object%0A%20%20%20%20%20%20%20%20%20**%2FfireRouteChange%3Afunction%20fireRouteChange(newRoute)%7Bvar%20baseRoute%3D_currentRouteState%3BnewRoute%3D_UtilAnalyticsMappers.cloneRoute(baseRoute%2CnewRoute)%3Bvar%20detail%3D%7Broute%3AnewRoute%7D%3Bthis._restoreDelayedEvent(newRoute)%3B_currentRouteState%3DnewRoute%3Bwindow.ga_data.route%3DnewRoute%3B_viewHistory.push(%7Broute%3AnewRoute%7D)%3B%2F%2F%20Fire%20page-view%20event%20on%20window%0Awindow.dispatchEvent(new%20CustomEvent('ga-page-view'%2C%7Bdetail%3Adetail%7D))%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20current%20route%20data%0A%20%20%20%20%20%20%20%20%20*%2FgetBaseRoute%3Afunction%20getBaseRoute()%7Breturn%20_UtilAnalyticsMappers.cloneRoute(_currentRouteState%2C%7B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20history%20of%20events%20fired%20on%20this%20page%0A%20%20%20%20%20%20%20%20%20*%2FgetEventHistory%3Afunction%20getEventHistory()%7Breturn%20Array.prototype.concat(_eventHistory)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20a%20copy%20of%20the%20history%20of%20page%20views%20and%20route%20changes%20fired%20on%20this%20page%0A%20%20%20%20%20%20%20%20%20*%2FgetPageViewHistory%3Afunction%20getPageViewHistory()%7Breturn%20Array.prototype.concat(_viewHistory)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Store%20an%20event%20for%20later%20bundling%20with%20next%20page%20view%0A%20%20%20%20%20%20%20%20%20*%2F_persistDelayedEvent%3Afunction%20_persistDelayedEvent(eventDetail)%7Bif(!window.localStorage)return%3Btry%7Bwindow.localStorage.setItem(this.delayedEventStorageKey%2CJSON.stringify(%7Baction%3AeventDetail.action%2Curl%3Awindow.location.href%7D))%3B%7Dcatch(e)%7B%2F%2F%20previously%20newrelic%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Restore%20persisted%20event%20if%20needed%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Will%20clear%20out%20the%20data%20on%20error%20or%20success%0A%20%20%20%20%20%20%20%20%20*%2F_restoreDelayedEvent%3Afunction%20_restoreDelayedEvent(route)%7Bvar%20localStorage%3Dvoid%200%2CdelayedData%3Dvoid%200%3Btry%7BlocalStorage%3Dwindow.localStorage%3B%7Dcatch(e)%7B%2F%2F%20Local%20storage%20is%20either%20disabled%20or%20full.%0A%7DdelayedData%3DlocalStorage%3Fwindow.localStorage.getItem(this.delayedEventStorageKey)%3Afalse%3Bif(delayedData)%7Btry%7Bvar%20detail%3DJSON.parse(delayedData)%3Broute.action%3Ddetail.action%3Broute.actionUrl%3Ddetail.url%3B%7Dfinally%7Bwindow.localStorage.removeItem(this.delayedEventStorageKey)%3B%7D%7D%7D%7D)%3B%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Internal%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0Avar%20_UtilAnalyticsMappers%3Dfunction()%7Bfunction%20_UtilAnalyticsMappers()%7B_classCallCheck(this%2C_UtilAnalyticsMappers)%3B%7D_createClass(_UtilAnalyticsMappers%2Cnull%2C%5B%7Bkey%3A'cloneRoute'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20copies%20the%20route%20object%20into%20a%20new%20object%2C%20merging%20in%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20route%20The%20route%20object%20to%20copy%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20object%20to%20merge%20into%20the%20route%20object%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%20A%20copy%20of%20the%20route%20with%20the%20overrides%20merged%20in%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20cloneRoute(route%2Coverrides)%7Breturn%20this._cloneObject(route%2Coverrides%2C%5B%2F%2F%20http%3A%2F%2Fschema.org%2FCreativeWork%20fields%0A'creativeWork'%2C'url'%2C'name'%2C'datePublished'%2C'headline'%2C'sourceOrganization'%2C'authors'%2C%7Bname%3A'author'%2Ccb%3A_UtilAnalyticsMappers._cloneAuthorArray%7D%2C%7Bname%3A'keywords'%2Ccb%3A_UtilAnalyticsMappers._cloneArray%7D%2C%2F%2F%20Custom%20fields%0A'action'%2C'actionUrl'%2C'contentId'%2C'basePageType'%2C'cst'%2C'displayType'%2C'keywords'%2C'noAdvertising'%2C'sectionName'%2C'seoKeywords'%2C'series'%2C'sponsoredName'%2C'sponsorStory'%2C'sponsoredSeries'%2C'subsection'%2C'ssts'%2C'taxonomyKeywords'%2C'topic'%2C'useCanonical'%2C%7Bname%3A'primaryTag'%2Ccb%3A_UtilAnalyticsMappers._clonePrimaryTag%7D%2C'short_url'%2C'mobile_url'%2C'contentType'%2C%2F%2F%20Video%20specific%20fields%0A'includesVideo'%2C%2F%2F%20Gallery%20specific%20fields%0A'galleryName'%2C'galleryIndex'%2C'galleryTotal'%2C%2F%2F%20Ads%20specific%20fields%0A'simpleTarget'%2C'simpleExclusion'%2C%2F%2F%20Pay-wall%20%2F%20metering%20fields%0A'cam'%5D)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20new%20primary%20tag%20object%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%7Bid%3A%20string%2C%20name%3A%20string%7D%7D%20ptag0%20The%20original%20primary%20tag%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%7Bid%3A%20string%2C%20name%3A%20string%7D%7D%20ptag1%20The%20new%20primary%20tag%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_clonePrimaryTag'%2Cvalue%3Afunction%20_clonePrimaryTag(pt1%2Cpt2)%7Bvar%20pt%3D_UtilAnalyticsMappers._arrayFind(%5Bpt2%2Cpt1%5D%2Cfunction(x)%7Breturn!!x%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object'%3B%7D)%3Bif(pt)%7Breturn%20_UtilAnalyticsMappers._cloneObject(pt%2C%7B%7D%2C%5B'id'%2C'name'%5D)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneAuthorArray'%2Cvalue%3Afunction%20_cloneAuthorArray(a1%2Ca2)%7Bvar%20target%3D_UtilAnalyticsMappers._arrayFind(%5Ba2%2Ca1%5D%2CArray.isArray)%3Bif(target)%7Breturn%20target.map(_UtilAnalyticsMappers._cloneAuthor)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneAuthor'%2Cvalue%3Afunction%20_cloneAuthor(x)%7Bif(!!x%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object')%7Breturn%20_UtilAnalyticsMappers._cloneObject(x%2C%7B%7D%2C%5B'name'%5D)%3B%7D%7D%7D%2C%7Bkey%3A'_cloneArray'%2Cvalue%3Afunction%20_cloneArray(array1%2Carray2)%7Bvar%20target%3D_UtilAnalyticsMappers._arrayFind(%5Barray1%2Carray2%5D%2CArray.isArray)%3Bif(target)%7Breturn%20target.slice(0)%3B%2F%2F%20clone%20the%20array%0A%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Clones%20an%20object%20given%20a%20list%20of%20fields%20and%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20Array%3C%7B%20string%20%7C%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%3E%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_cloneObject'%2Cvalue%3Afunction%20_cloneObject(obj%2Coverrides%2Cfields)%7Breturn%20fields.reduce(function(acc%2Cfield)%7Bvar%20_UtilAnalyticsMappers2%3D_UtilAnalyticsMappers._mapField(obj%2Coverrides%2Cfield)%2Cval%3D_UtilAnalyticsMappers2.val%2Cfield2%3D_UtilAnalyticsMappers2.field%3Breturn%20_UtilAnalyticsMappers._maybeUpdate(acc%2Cfield2%2Cval)%3B%7D%2C%7B%7D)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Maps%20a%20complex%20field%20to%20its%20field%2C%20val%20pair%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%20field%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B%20%7B%20field%3A%20string%2C%20val%3A%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapComplexField'%2Cvalue%3Afunction%20_mapComplexField(obj%2Coverrides%2Cfield)%7Breturn%7Bfield%3Afield.name%2Cval%3Afield.cb(obj%5Bfield.name%5D%2Coverrides%5Bfield.name%5D)%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Maps%20a%20simple%20field%20to%20its%20field%2C%20val%20pair%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20field%20The%20field%20to%20copy%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B%20%7B%20field%3A%20string%2C%20val%3A%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapSimpleField'%2Cvalue%3Afunction%20_mapSimpleField(obj%2Coverrides%2Cfield)%7Breturn%7Bfield%3Afield%2Cval%3Aoverrides%5Bfield%5D!%3D%3Dundefined%3Foverrides%5Bfield%5D%3Aobj%5Bfield%5D%7D%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20true%20if%20the%20field%20is%20a%20complex%20field%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_isComplexField'%2Cvalue%3Afunction%20_isComplexField(field)%7Breturn%20field.name!%3D%3Dundefined%26%26field.cb!%3D%3Dundefined%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Clones%20an%20object%20given%20a%20list%20of%20fields%20and%20optional%20overrides%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20copy%20data%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20overrides%20The%20fields%20optionally%20use%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20string%20%7C%20%7B%20name%3A%20string%2C%20callback%3A%20function(object%2C%20object)%20*%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_mapField'%2Cvalue%3Afunction%20_mapField(obj%2Coverrides%2Cfield)%7Breturn%20_UtilAnalyticsMappers._isComplexField(field)%3F_UtilAnalyticsMappers._mapComplexField(obj%2Coverrides%2Cfield)%3A_UtilAnalyticsMappers._mapSimpleField(obj%2Coverrides%2Cfield)%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Updates%20an%20objects%20field%20if%20the%20value%20is%20defined%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40nosideeffects%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bobject%7D%20obj%20The%20object%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20field%20The%20field%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B%20*%20%7C%20undefined%20%7D%20val%20The%20possibly%20undefined%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bobject%7D%20The%20possibly%20updated%20object%0A%20%20%20%20%20%20%20%20%20**%2F%7D%2C%7Bkey%3A'_maybeUpdate'%2Cvalue%3Afunction%20_maybeUpdate(obj%2Cfield%2Cval)%7Bif(val!%3D%3Dundefined)%7Bobj%5Bfield%5D%3Dval%3B%7Dreturn%20obj%3B%7D%7D%2C%7Bkey%3A'_arrayFind'%2Cvalue%3Afunction%20_arrayFind(a%2Ccb)%7Bif(Array.prototype.find)%7Breturn%20a.find(cb)%3B%7Delse%7Bfor(var%20i%3D0%3Bi%3Ca.length%3Bi%2B%2B)%7Bvar%20x%3Da%5Bi%5D%3Bif(cb(x))%7Breturn%20x%3B%7D%7D%7D%7D%7D%5D)%3Breturn%20_UtilAnalyticsMappers%3B%7D()%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Futil%2Futil-analytics%2Futil-analytics.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Futil%2Futil-analytics%2Futil-analytics.html.js%0A",
            "totalBytes": 11284,
            "wastedBytes": 4875,
            "wastedPercent": 43.20276497695853
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Creates%20a%20copy%20of%20%60props%60%20with%20each%20property%20normalized%20such%20that%0A%20%20%20*%20upgraded%20it%20is%20an%20object%20with%20at%20least%20a%20type%20property%20%7B%20type%3A%20Type%7D.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20normalize%0A%20%20%20*%20%40return%20%7BObject%7D%20Copy%20of%20input%20%60props%60%20with%20normalized%20properties%20that%0A%20%20%20*%20are%20in%20the%20form%20%7Btype%3A%20Type%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2Ffunction%20normalizeProperties(props)%7Bvar%20output%3D%7B%7D%3Bfor(var%20p%20in%20props)%7Bvar%20o%3Dprops%5Bp%5D%3Boutput%5Bp%5D%3Dtypeof%20o%3D%3D%3D'function'%3F%7Btype%3Ao%7D%3Ao%3B%7Dreturn%20output%3B%7D%2F**%0A%20%20%20*%20Mixin%20that%20provides%20a%20minimal%20starting%20point%20to%20using%20the%20PropertiesChanged%0A%20%20%20*%20mixin%20by%20providing%20a%20mechanism%20to%20declare%20properties%20in%20a%20static%0A%20%20%20*%20getter%20(e.g.%20static%20get%20properties()%20%7B%20return%20%7B%20foo%3A%20String%20%7D%20%7D).%20Changes%0A%20%20%20*%20are%20reported%20via%20the%20%60_propertiesChanged%60%20method.%0A%20%20%20*%0A%20%20%20*%20This%20mixin%20provides%20no%20specific%20support%20for%20rendering.%20Users%20are%20expected%0A%20%20%20*%20to%20create%20a%20ShadowRoot%20and%20put%20content%20into%20it%20and%20update%20it%20in%20whatever%0A%20%20%20*%20way%20makes%20sense.%20This%20can%20be%20done%20in%20reaction%20to%20properties%20changing%20by%0A%20%20%20*%20implementing%20%60_propertiesChanged%60.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertiesChanged%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Mixin%20that%20provides%20a%20minimal%20starting%20point%20for%20using%0A%20%20%20*%20the%20PropertiesChanged%20mixin%20by%20providing%20a%20declarative%20%60properties%60%20object.%0A%20%20%20*%2FPolymer.PropertiesMixin%3DPolymer.dedupingMixin(function(superClass)%7B%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesChanged%7D%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2Fvar%20base%3DPolymer.PropertiesChanged(superClass)%3B%2F**%0A%20%20%20%20%20*%20Returns%20the%20super%20class%20constructor%20for%20the%20given%20class%2C%20if%20it%20is%20an%0A%20%20%20%20%20*%20instance%20of%20the%20PropertiesMixin.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!PropertiesMixinConstructor%7D%20constructor%20PropertiesMixin%20constructor%0A%20%20%20%20%20*%20%40return%20%7BPropertiesMixinConstructor%7D%20Super%20class%20constructor%0A%20%20%20%20%20*%2Ffunction%20superPropertiesClass(constructor)%7Bvar%20superCtor%3DObject.getPrototypeOf(constructor)%3B%2F%2F%20Note%2C%20the%20%60PropertiesMixin%60%20class%20below%20only%20refers%20to%20the%20class%0A%2F%2F%20generated%20by%20this%20call%20to%20the%20mixin%3B%20the%20instanceof%20test%20only%20works%0A%2F%2F%20because%20the%20mixin%20is%20deduped%20and%20guaranteed%20only%20to%20apply%20once%2C%20hence%0A%2F%2F%20all%20constructors%20in%20a%20proto%20chain%20will%20see%20the%20same%20%60PropertiesMixin%60%0Areturn%20superCtor.prototype%20instanceof%20PropertiesMixin%3F%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2FsuperCtor%3Anull%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20a%20memoized%20version%20of%20the%20%60properties%60%20object%20for%20the%0A%20%20%20%20%20*%20given%20class.%20Properties%20not%20in%20object%20format%20are%20converted%20to%20at%0A%20%20%20%20%20*%20least%20%7Btype%7D.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BPropertiesMixinConstructor%7D%20constructor%20PropertiesMixin%20constructor%0A%20%20%20%20%20*%20%40return%20%7BObject%7D%20Memoized%20properties%20object%0A%20%20%20%20%20*%2Ffunction%20ownProperties(constructor)%7Bif(!constructor.hasOwnProperty(JSCompiler_renameProperty('__ownProperties'%2Cconstructor)))%7Bvar%20props%3Dnull%3Bif(constructor.hasOwnProperty(JSCompiler_renameProperty('properties'%2Cconstructor)))%7Bvar%20properties%3Dconstructor.properties%3Bif(properties)%7Bprops%3DnormalizeProperties(properties)%3B%7D%7Dconstructor.__ownProperties%3Dprops%3B%7Dreturn%20constructor.__ownProperties%3B%7D%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertiesMixin%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2Fvar%20PropertiesMixin%3Dfunction(_base)%7B_inherits(PropertiesMixin%2C_base)%3Bfunction%20PropertiesMixin()%7B_classCallCheck(this%2CPropertiesMixin)%3Breturn%20_possibleConstructorReturn(this%2C(PropertiesMixin.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin)).apply(this%2Carguments))%3B%7D_createClass(PropertiesMixin%2C%5B%7Bkey%3A'_initializeProperties'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertiesChanged%60%20method%20and%20adds%20a%20call%20to%0A%20%20%20%20%20%20%20*%20%60finalize%60%20which%20lazily%20configures%20the%20element's%20property%20accessors.%0A%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_initializeProperties()%7BPolymer.telemetry.instanceCount%2B%2B%3Bthis.constructor.finalize()%3B_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'_initializeProperties'%2Cthis).call(this)%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20when%20the%20element%20is%20added%20to%20a%20document.%0A%20%20%20%20%20%20%20*%20Calls%20%60_enableProperties%60%20to%20turn%20on%20property%20system%20from%0A%20%20%20%20%20%20%20*%20%60PropertiesChanged%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7Bif(_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'connectedCallback'%2Cthis))%7B_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'connectedCallback'%2Cthis).call(this)%3B%7Dthis._enableProperties()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20Called%20when%20the%20element%20is%20removed%20from%20a%20document%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Super%20may%20or%20may%20not%20implement%20the%20callback%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7Bif(_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'disconnectedCallback'%2Cthis))%7B_get(PropertiesMixin.prototype.__proto__%7C%7CObject.getPrototypeOf(PropertiesMixin.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3B%7D%7D%7D%5D%2C%5B%7Bkey%3A'finalize'%2C%2F**%0A%20%20%20%20%20%20%20*%20Finalizes%20an%20element%20definition%2C%20including%20ensuring%20any%20super%20classes%0A%20%20%20%20%20%20%20*%20are%20also%20finalized.%20This%20includes%20ensuring%20property%0A%20%20%20%20%20%20%20*%20accessors%20exist%20on%20the%20element%20prototype.%20This%20method%20calls%0A%20%20%20%20%20%20%20*%20%60_finalizeClass%60%20to%20finalize%20each%20constructor%20in%20the%20prototype%20chain.%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20finalize()%7Bif(!this.hasOwnProperty(JSCompiler_renameProperty('__finalized'%2Cthis)))%7Bvar%20superCtor%3DsuperPropertiesClass(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis)%3Bif(superCtor)%7BsuperCtor.finalize()%3B%7Dthis.__finalized%3Dtrue%3Bthis._finalizeClass()%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Finalize%20an%20element%20class.%20This%20includes%20ensuring%20property%0A%20%20%20%20%20%20%20*%20accessors%20exist%20on%20the%20element%20prototype.%20This%20method%20is%20called%20by%0A%20%20%20%20%20%20%20*%20%60finalize%60%20and%20finalizes%20the%20class%20constructor.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_finalizeClass'%2Cvalue%3Afunction%20_finalizeClass()%7Bvar%20props%3DownProperties(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis)%3Bif(props)%7Bthis.createProperties(props)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20memoized%20version%20of%20all%20properties%2C%20including%20those%20inherited%0A%20%20%20%20%20%20%20*%20from%20super%20classes.%20Properties%20not%20in%20object%20format%20are%20converted%20to%0A%20%20%20%20%20%20%20*%20at%20least%20%7Btype%7D.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20Object%20containing%20properties%20for%20this%20class%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'typeForProperty'%2C%2F**%0A%20%20%20%20%20%20%20*%20Overrides%20%60PropertiesChanged%60%20method%20to%20return%20type%20specified%20in%20the%0A%20%20%20%20%20%20%20*%20static%20%60properties%60%20object%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20property%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Type%20to%20which%20to%20deserialize%20attribute%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20typeForProperty(name)%7Bvar%20info%3Dthis._properties%5Bname%5D%3Breturn%20info%26%26info.type%3B%7D%7D%2C%7Bkey%3A'observedAttributes'%2C%2F**%0A%20%20%20%20%20%20%20*%20Implements%20standard%20custom%20elements%20getter%20to%20observes%20the%20attributes%0A%20%20%20%20%20%20%20*%20listed%20in%20%60properties%60.%0A%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20*%2Fget%3Afunction%20get()%7Bvar%20_this2%3Dthis%3Bif(!this.hasOwnProperty('__observedAttributes'))%7BPolymer.telemetry.register(this.prototype)%3Bvar%20props%3Dthis._properties%3Bthis.__observedAttributes%3Dprops%3FObject.keys(props).map(function(p)%7Breturn%20_this2.attributeNameForProperty(p)%3B%7D)%3A%5B%5D%3B%7Dreturn%20this.__observedAttributes%3B%7D%7D%2C%7Bkey%3A'_properties'%2Cget%3Afunction%20get()%7Bif(!this.hasOwnProperty(JSCompiler_renameProperty('__properties'%2Cthis)))%7Bvar%20superCtor%3DsuperPropertiesClass(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis)%3Bthis.__properties%3DObject.assign(%7B%7D%2CsuperCtor%26%26superCtor._properties%2CownProperties(%2F**%20%40type%20%7BPropertiesMixinConstructor%7D%20*%2Fthis))%3B%7Dreturn%20this.__properties%3B%7D%7D%5D)%3Breturn%20PropertiesMixin%3B%7D(base)%3Breturn%20PropertiesMixin%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fproperties-mixin.html.js%0A",
            "totalBytes": 9658,
            "wastedBytes": 4769,
            "wastedPercent": 49.378753365085934
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bvar%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20The%20%60%3Cdom-if%3E%60%20element%20will%20stamp%20a%20light-dom%20%60%3Ctemplate%3E%60%20child%20when%0A%20%20%20*%20the%20%60if%60%20property%20becomes%20truthy%2C%20and%20the%20template%20can%20use%20Polymer%0A%20%20%20*%20data-binding%20and%20declarative%20event%20features%20when%20used%20in%20the%20context%20of%0A%20%20%20*%20a%20Polymer%20element's%20template.%0A%20%20%20*%0A%20%20%20*%20When%20%60if%60%20becomes%20falsy%2C%20the%20stamped%20content%20is%20hidden%20but%20not%0A%20%20%20*%20removed%20from%20dom.%20When%20%60if%60%20subsequently%20becomes%20truthy%20again%2C%20the%20content%0A%20%20%20*%20is%20simply%20re-shown.%20This%20approach%20is%20used%20due%20to%20its%20favorable%20performance%0A%20%20%20*%20characteristics%3A%20the%20expense%20of%20creating%20template%20content%20is%20paid%20only%0A%20%20%20*%20once%20and%20lazily.%0A%20%20%20*%0A%20%20%20*%20Set%20the%20%60restamp%60%20property%20to%20true%20to%20force%20the%20stamped%20content%20to%20be%0A%20%20%20*%20created%20%2F%20destroyed%20when%20the%20%60if%60%20condition%20changes.%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40extends%20Polymer.Element%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20that%20conditionally%20stamps%20and%20hides%20or%20removes%0A%20%20%20*%20%20%20template%20content%20based%20on%20a%20boolean%20flag.%0A%20%20%20*%2Fvar%20DomIf%3Dfunction(_Polymer%24Element)%7B_inherits(DomIf%2C_Polymer%24Element)%3B_createClass(DomIf%2Cnull%2C%5B%7Bkey%3A'is'%2C%2F%2F%20Not%20needed%20to%20find%20template%3B%20can%20be%20removed%20once%20the%20analyzer%0A%2F%2F%20can%20find%20the%20tag%20name%20from%20customElements.define%20call%0Aget%3Afunction%20get()%7Breturn'dom-if'%3B%7D%7D%2C%7Bkey%3A'template'%2Cget%3Afunction%20get()%7Breturn%20null%3B%7D%7D%2C%7Bkey%3A'properties'%2Cget%3Afunction%20get()%7Breturn%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Fired%20whenever%20DOM%20is%20added%20or%20removed%2Fhidden%20by%20this%20template%20(by%0A%20%20%20%20%20%20%20%20%20*%20default%2C%20rendering%20occurs%20lazily).%20%20To%20force%20immediate%20rendering%2C%20call%0A%20%20%20%20%20%20%20%20%20*%20%60render%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40event%20dom-change%0A%20%20%20%20%20%20%20%20%20*%2F%2F**%0A%20%20%20%20%20%20%20%20%20*%20A%20boolean%20indicating%20whether%20this%20template%20should%20stamp.%0A%20%20%20%20%20%20%20%20%20*%2Fif%3A%7Btype%3ABoolean%2Cobserver%3A'__debounceRender'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20When%20true%2C%20elements%20will%20be%20removed%20from%20DOM%20and%20discarded%20when%20%60if%60%0A%20%20%20%20%20%20%20%20%20*%20becomes%20false%20and%20re-created%20and%20added%20back%20to%20the%20DOM%20when%20%60if%60%0A%20%20%20%20%20%20%20%20%20*%20becomes%20true.%20%20By%20default%2C%20stamped%20elements%20will%20be%20hidden%20but%20left%0A%20%20%20%20%20%20%20%20%20*%20in%20the%20DOM%20when%20%60if%60%20becomes%20false%2C%20which%20is%20generally%20results%0A%20%20%20%20%20%20%20%20%20*%20in%20better%20performance.%0A%20%20%20%20%20%20%20%20%20*%2Frestamp%3A%7Btype%3ABoolean%2Cobserver%3A'__debounceRender'%7D%7D%3B%7D%7D%5D)%3Bfunction%20DomIf()%7B_classCallCheck(this%2CDomIf)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(DomIf.__proto__%7C%7CObject.getPrototypeOf(DomIf)).call(this))%3B_this.__renderDebouncer%3Dnull%3B_this.__invalidProps%3Dnull%3B_this.__instance%3Dnull%3B_this._lastIf%3Dfalse%3B_this.__ctor%3Dnull%3Breturn%20_this%3B%7D_createClass(DomIf%2C%5B%7Bkey%3A'__debounceRender'%2Cvalue%3Afunction%20__debounceRender()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Render%20is%20async%20for%202%20reasons%3A%0A%2F%2F%201.%20To%20eliminate%20dom%20creation%20trashing%20if%20user%20code%20thrashes%20%60if%60%20in%20the%0A%2F%2F%20%20%20%20same%20turn.%20This%20was%20more%20common%20in%201.x%20where%20a%20compound%20computed%0A%2F%2F%20%20%20%20property%20could%20result%20in%20the%20result%20changing%20multiple%20times%2C%20but%20is%0A%2F%2F%20%20%20%20mitigated%20to%20a%20large%20extent%20by%20batched%20property%20processing%20in%202.x.%0A%2F%2F%202.%20To%20avoid%20double%20object%20propagation%20when%20a%20bag%20including%20values%20bound%0A%2F%2F%20%20%20%20to%20the%20%60if%60%20property%20as%20well%20as%20one%20or%20more%20hostProps%20could%20enqueue%0A%2F%2F%20%20%20%20the%20%3Cdom-if%3E%20to%20flush%20before%20the%20%3Ctemplate%3E's%20host%20property%0A%2F%2F%20%20%20%20forwarding.%20In%20that%20scenario%20creating%20an%20instance%20would%20result%20in%0A%2F%2F%20%20%20%20the%20host%20props%20being%20set%20once%2C%20and%20then%20the%20enqueued%20changes%20on%20the%0A%2F%2F%20%20%20%20template%20would%20set%20properties%20a%20second%20time%2C%20potentially%20causing%20an%0A%2F%2F%20%20%20%20object%20to%20be%20set%20to%20an%20instance%20more%20than%20once.%20%20Creating%20the%0A%2F%2F%20%20%20%20instance%20async%20from%20flushing%20data%20ensures%20this%20doesn't%20happen.%20If%0A%2F%2F%20%20%20%20we%20wanted%20a%20sync%20option%20in%20the%20future%2C%20simply%20having%20%3Cdom-if%3E%20flush%0A%2F%2F%20%20%20%20(or%20clear)%20its%20template's%20pending%20host%20properties%20before%20creating%0A%2F%2F%20%20%20%20the%20instance%20would%20also%20avoid%20the%20problem.%0Athis.__renderDebouncer%3DPolymer.Debouncer.debounce(this.__renderDebouncer%2CPolymer.Async.microTask%2Cfunction()%7Breturn%20_this2.__render()%3B%7D)%3BPolymer.enqueueDebouncer(this.__renderDebouncer)%3B%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7B_get(DomIf.prototype.__proto__%7C%7CObject.getPrototypeOf(DomIf.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3Bif(!this.parentNode%7C%7Cthis.parentNode.nodeType%3D%3DNode.DOCUMENT_FRAGMENT_NODE%26%26!this.parentNode.host)%7Bthis.__teardownInstance()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7B_get(DomIf.prototype.__proto__%7C%7CObject.getPrototypeOf(DomIf.prototype)%2C'connectedCallback'%2Cthis).call(this)%3Bthis.style.display%3D'none'%3Bif(this.if)%7Bthis.__debounceRender()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Forces%20the%20element%20to%20render%20its%20content.%20Normally%20rendering%20is%0A%20%20%20%20%20*%20asynchronous%20to%20a%20provoking%20change.%20This%20is%20done%20for%20efficiency%20so%0A%20%20%20%20%20*%20that%20multiple%20changes%20trigger%20only%20a%20single%20render.%20The%20render%20method%0A%20%20%20%20%20*%20should%20be%20called%20if%2C%20for%20example%2C%20template%20rendering%20is%20required%20to%0A%20%20%20%20%20*%20validate%20application%20state.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'render'%2Cvalue%3Afunction%20render()%7BPolymer.flush()%3B%7D%7D%2C%7Bkey%3A'__render'%2Cvalue%3Afunction%20__render()%7Bif(this.if)%7Bif(!this.__ensureInstance())%7B%2F%2F%20No%20template%20found%20yet%0Areturn%3B%7Dthis._showHideChildren()%3B%7Delse%20if(this.restamp)%7Bthis.__teardownInstance()%3B%7Dif(!this.restamp%26%26this.__instance)%7Bthis._showHideChildren()%3B%7Dif(this.if!%3Dthis._lastIf)%7Bthis.dispatchEvent(new%20CustomEvent('dom-change'%2C%7Bbubbles%3Atrue%2Ccomposed%3Atrue%7D))%3Bthis._lastIf%3Dthis.if%3B%7D%7D%7D%2C%7Bkey%3A'__ensureInstance'%2Cvalue%3Afunction%20__ensureInstance()%7Bvar%20_this3%3Dthis%3Bvar%20parentNode%3Dthis.parentNode%3B%2F%2F%20Guard%20against%20element%20being%20detached%20while%20render%20was%20queued%0Aif(parentNode)%7Bif(!this.__ctor)%7Bvar%20template%3D%2F**%20%40type%20%7BHTMLTemplateElement%7D%20*%2Fthis.querySelector('template')%3Bif(!template)%7B%2F%2F%20Wait%20until%20childList%20changes%20and%20template%20should%20be%20there%20by%20then%0Avar%20observer%3Dnew%20MutationObserver(function()%7Bif(_this3.querySelector('template'))%7Bobserver.disconnect()%3B_this3.__render()%3B%7Delse%7Bthrow%20new%20Error('dom-if%20requires%20a%20%3Ctemplate%3E%20child')%3B%7D%7D)%3Bobserver.observe(this%2C%7BchildList%3Atrue%7D)%3Breturn%20false%3B%7Dthis.__ctor%3DPolymer.Templatize.templatize(template%2Cthis%2C%7B%2F%2F%20dom-if%20templatizer%20instances%20require%20%60mutable%3A%20true%60%2C%20as%0A%2F%2F%20%60__syncHostProperties%60%20relies%20on%20that%20behavior%20to%20sync%20objects%0AmutableData%3Atrue%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20to%20forward%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20property%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40this%20%7Bthis%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FforwardHostProp%3Afunction%20forwardHostProp(prop%2Cvalue)%7Bif(this.__instance)%7Bif(this.if)%7Bthis.__instance.forwardHostProp(prop%2Cvalue)%3B%7Delse%7B%2F%2F%20If%20we%20have%20an%20instance%20but%20are%20squelching%20host%20property%0A%2F%2F%20forwarding%20due%20to%20if%20being%20false%2C%20note%20the%20invalidated%0A%2F%2F%20properties%20so%20%60__syncHostProperties%60%20can%20sync%20them%20the%20next%0A%2F%2F%20time%20%60if%60%20becomes%20true%0Athis.__invalidProps%3Dthis.__invalidProps%7C%7CObject.create(null)%3Bthis.__invalidProps%5BPolymer.Path.root(prop)%5D%3Dtrue%3B%7D%7D%7D%7D)%3B%7Dif(!this.__instance)%7Bthis.__instance%3Dnew%20this.__ctor()%3BparentNode.insertBefore(this.__instance.root%2Cthis)%3B%7Delse%7Bthis.__syncHostProperties()%3Bvar%20c%24%3Dthis.__instance.children%3Bif(c%24%26%26c%24.length)%7B%2F%2F%20Detect%20case%20where%20dom-if%20was%20re-attached%20in%20new%20position%0Avar%20lastChild%3Dthis.previousSibling%3Bif(lastChild!%3D%3Dc%24%5Bc%24.length-1%5D)%7Bfor(var%20i%3D0%2Cn%3Bi%3Cc%24.length%26%26(n%3Dc%24%5Bi%5D)%3Bi%2B%2B)%7BparentNode.insertBefore(n%2Cthis)%3B%7D%7D%7D%7D%7Dreturn%20true%3B%7D%7D%2C%7Bkey%3A'__syncHostProperties'%2Cvalue%3Afunction%20__syncHostProperties()%7Bvar%20props%3Dthis.__invalidProps%3Bif(props)%7Bfor(var%20prop%20in%20props)%7Bthis.__instance._setPendingProperty(prop%2Cthis.__dataHost%5Bprop%5D)%3B%7Dthis.__invalidProps%3Dnull%3Bthis.__instance._flushProperties()%3B%7D%7D%7D%2C%7Bkey%3A'__teardownInstance'%2Cvalue%3Afunction%20__teardownInstance()%7Bif(this.__instance)%7Bvar%20c%24%3Dthis.__instance.children%3Bif(c%24%26%26c%24.length)%7B%2F%2F%20use%20first%20child%20parent%2C%20for%20case%20when%20dom-if%20may%20have%20been%20detached%0Avar%20parent%3Dc%24%5B0%5D.parentNode%3B%2F%2F%20Instance%20children%20may%20be%20disconnected%20from%20parents%20when%20dom-if%0A%2F%2F%20detaches%20if%20a%20tree%20was%20innerHTML'ed%0Aif(parent)%7Bfor(var%20i%3D0%2Cn%3Bi%3Cc%24.length%26%26(n%3Dc%24%5Bi%5D)%3Bi%2B%2B)%7Bparent.removeChild(n)%3B%7D%7D%7Dthis.__instance%3Dnull%3Bthis.__invalidProps%3Dnull%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Shows%20or%20hides%20the%20template%20instance%20top%20level%20child%20elements.%20For%0A%20%20%20%20%20*%20text%20nodes%2C%20%60textContent%60%20is%20removed%20while%20%22hidden%22%20and%20replaced%20when%0A%20%20%20%20%20*%20%22shown.%22%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_showHideChildren'%2Cvalue%3Afunction%20_showHideChildren()%7Bvar%20hidden%3Dthis.__hideTemplateChildren__%7C%7C!this.if%3Bif(this.__instance)%7Bthis.__instance._showHideChildren(hidden)%3B%7D%7D%7D%5D)%3Breturn%20DomIf%3B%7D(Polymer.Element)%3BcustomElements.define(DomIf.is%2CDomIf)%3B%2F**%20%40const%20*%2FPolymer.DomIf%3DDomIf%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-if.html.js%0A",
            "totalBytes": 10133,
            "wastedBytes": 4646,
            "wastedPercent": 45.8501924405408
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bfunction%20newSplice(index%2Cremoved%2CaddedCount)%7Breturn%7Bindex%3Aindex%2Cremoved%3Aremoved%2CaddedCount%3AaddedCount%7D%3B%7Dvar%20EDIT_LEAVE%3D0%3Bvar%20EDIT_UPDATE%3D1%3Bvar%20EDIT_ADD%3D2%3Bvar%20EDIT_DELETE%3D3%3B%2F%2F%20Note%3A%20This%20function%20is%20*based*%20on%20the%20computation%20of%20the%20Levenshtein%0A%2F%2F%20%22edit%22%20distance.%20The%20one%20change%20is%20that%20%22updates%22%20are%20treated%20as%20two%0A%2F%2F%20edits%20-%20not%20one.%20With%20Array%20splices%2C%20an%20update%20is%20really%20a%20delete%0A%2F%2F%20followed%20by%20an%20add.%20By%20retaining%20this%2C%20we%20optimize%20for%20%22keeping%22%20the%0A%2F%2F%20maximum%20array%20items%20in%20the%20original%20array.%20For%20example%3A%0A%2F%2F%0A%2F%2F%20%20%20'xxxx123'%20-%3E%20'123yyyy'%0A%2F%2F%0A%2F%2F%20With%201-edit%20updates%2C%20the%20shortest%20path%20would%20be%20just%20to%20update%20all%20seven%0A%2F%2F%20characters.%20With%202-edit%20updates%2C%20we%20delete%204%2C%20leave%203%2C%20and%20add%204.%20This%0A%2F%2F%20leaves%20the%20substring%20'123'%20intact.%0Afunction%20calcEditDistances(current%2CcurrentStart%2CcurrentEnd%2Cold%2ColdStart%2ColdEnd)%7B%2F%2F%20%22Deletion%22%20columns%0Avar%20rowCount%3DoldEnd-oldStart%2B1%3Bvar%20columnCount%3DcurrentEnd-currentStart%2B1%3Bvar%20distances%3Dnew%20Array(rowCount)%3B%2F%2F%20%22Addition%22%20rows.%20Initialize%20null%20column.%0Afor(var%20i%3D0%3Bi%3CrowCount%3Bi%2B%2B)%7Bdistances%5Bi%5D%3Dnew%20Array(columnCount)%3Bdistances%5Bi%5D%5B0%5D%3Di%3B%7D%2F%2F%20Initialize%20null%20row%0Afor(var%20j%3D0%3Bj%3CcolumnCount%3Bj%2B%2B)%7Bdistances%5B0%5D%5Bj%5D%3Dj%3B%7Dfor(var%20_i%3D1%3B_i%3CrowCount%3B_i%2B%2B)%7Bfor(var%20_j%3D1%3B_j%3CcolumnCount%3B_j%2B%2B)%7Bif(equals(current%5BcurrentStart%2B_j-1%5D%2Cold%5BoldStart%2B_i-1%5D))distances%5B_i%5D%5B_j%5D%3Ddistances%5B_i-1%5D%5B_j-1%5D%3Belse%7Bvar%20north%3Ddistances%5B_i-1%5D%5B_j%5D%2B1%3Bvar%20west%3Ddistances%5B_i%5D%5B_j-1%5D%2B1%3Bdistances%5B_i%5D%5B_j%5D%3Dnorth%3Cwest%3Fnorth%3Awest%3B%7D%7D%7Dreturn%20distances%3B%7D%2F%2F%20This%20starts%20at%20the%20final%20weight%2C%20and%20walks%20%22backward%22%20by%20finding%0A%2F%2F%20the%20minimum%20previous%20weight%20recursively%20until%20the%20origin%20of%20the%20weight%0A%2F%2F%20matrix.%0Afunction%20spliceOperationsFromEditDistances(distances)%7Bvar%20i%3Ddistances.length-1%3Bvar%20j%3Ddistances%5B0%5D.length-1%3Bvar%20current%3Ddistances%5Bi%5D%5Bj%5D%3Bvar%20edits%3D%5B%5D%3Bwhile(i%3E0%7C%7Cj%3E0)%7Bif(i%3D%3D0)%7Bedits.push(EDIT_ADD)%3Bj--%3Bcontinue%3B%7Dif(j%3D%3D0)%7Bedits.push(EDIT_DELETE)%3Bi--%3Bcontinue%3B%7Dvar%20northWest%3Ddistances%5Bi-1%5D%5Bj-1%5D%3Bvar%20west%3Ddistances%5Bi-1%5D%5Bj%5D%3Bvar%20north%3Ddistances%5Bi%5D%5Bj-1%5D%3Bvar%20min%3Dvoid%200%3Bif(west%3Cnorth)min%3Dwest%3CnorthWest%3Fwest%3AnorthWest%3Belse%20min%3Dnorth%3CnorthWest%3Fnorth%3AnorthWest%3Bif(min%3D%3DnorthWest)%7Bif(northWest%3D%3Dcurrent)%7Bedits.push(EDIT_LEAVE)%3B%7Delse%7Bedits.push(EDIT_UPDATE)%3Bcurrent%3DnorthWest%3B%7Di--%3Bj--%3B%7Delse%20if(min%3D%3Dwest)%7Bedits.push(EDIT_DELETE)%3Bi--%3Bcurrent%3Dwest%3B%7Delse%7Bedits.push(EDIT_ADD)%3Bj--%3Bcurrent%3Dnorth%3B%7D%7Dedits.reverse()%3Breturn%20edits%3B%7D%2F**%0A%20%20%20*%20Splice%20Projection%20functions%3A%0A%20%20%20*%0A%20%20%20*%20A%20splice%20map%20is%20a%20representation%20of%20how%20a%20previous%20array%20of%20items%0A%20%20%20*%20was%20transformed%20into%20a%20new%20array%20of%20items.%20Conceptually%20it%20is%20a%20list%20of%0A%20%20%20*%20tuples%20of%0A%20%20%20*%0A%20%20%20*%20%20%20%3Cindex%2C%20removed%2C%20addedCount%3E%0A%20%20%20*%0A%20%20%20*%20which%20are%20kept%20in%20ascending%20index%20order%20of.%20The%20tuple%20represents%20that%20at%0A%20%20%20*%20the%20%7Cindex%7C%2C%20%7Cremoved%7C%20sequence%20of%20items%20were%20removed%2C%20and%20counting%20forward%0A%20%20%20*%20from%20%7Cindex%7C%2C%20%7CaddedCount%7C%20items%20were%20added.%0A%20%20%20*%2F%2F**%0A%20%20%20*%20Lacking%20individual%20splice%20mutation%20information%2C%20the%20minimal%20set%20of%0A%20%20%20*%20splices%20can%20be%20synthesized%20given%20the%20previous%20state%20and%20final%20state%20of%20an%0A%20%20%20*%20array.%20The%20basic%20approach%20is%20to%20calculate%20the%20edit%20distance%20matrix%20and%0A%20%20%20*%20choose%20the%20shortest%20path%20through%20it.%0A%20%20%20*%0A%20%20%20*%20Complexity%3A%20O(l%20*%20p)%0A%20%20%20*%20%20%20l%3A%20The%20length%20of%20the%20current%20array%0A%20%20%20*%20%20%20p%3A%20The%20length%20of%20the%20old%20array%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%7D%20current%20The%20current%20%22changed%22%20array%20for%20which%20to%0A%20%20%20*%20calculate%20splices.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20currentStart%20Starting%20index%20in%20the%20%60current%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20currentEnd%20Ending%20index%20in%20the%20%60current%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40param%20%7B!Array%7D%20old%20The%20original%20%22unchanged%22%20array%20to%20compare%20%60current%60%0A%20%20%20*%20against%20to%20determine%20splices.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20oldStart%20Starting%20index%20in%20the%20%60old%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40param%20%7Bnumber%7D%20oldEnd%20Ending%20index%20in%20the%20%60old%60%20array%20for%0A%20%20%20*%20which%20splices%20are%20calculated.%0A%20%20%20*%20%40return%20%7B!Array%7D%20Returns%20an%20array%20of%20splice%20record%20objects.%20Each%20of%20these%0A%20%20%20*%20contains%3A%20%60index%60%20the%20location%20where%20the%20splice%20occurred%3B%20%60removed%60%0A%20%20%20*%20the%20array%20of%20removed%20items%20from%20this%20location%3B%20%60addedCount%60%20the%20number%0A%20%20%20*%20of%20items%20added%20at%20this%20location.%0A%20%20%20*%2Ffunction%20calcSplices(current%2CcurrentStart%2CcurrentEnd%2Cold%2ColdStart%2ColdEnd)%7Bvar%20prefixCount%3D0%3Bvar%20suffixCount%3D0%3Bvar%20splice%3Dvoid%200%3Bvar%20minLength%3DMath.min(currentEnd-currentStart%2ColdEnd-oldStart)%3Bif(currentStart%3D%3D0%26%26oldStart%3D%3D0)prefixCount%3DsharedPrefix(current%2Cold%2CminLength)%3Bif(currentEnd%3D%3Dcurrent.length%26%26oldEnd%3D%3Dold.length)suffixCount%3DsharedSuffix(current%2Cold%2CminLength-prefixCount)%3BcurrentStart%2B%3DprefixCount%3BoldStart%2B%3DprefixCount%3BcurrentEnd-%3DsuffixCount%3BoldEnd-%3DsuffixCount%3Bif(currentEnd-currentStart%3D%3D0%26%26oldEnd-oldStart%3D%3D0)return%5B%5D%3Bif(currentStart%3D%3DcurrentEnd)%7Bsplice%3DnewSplice(currentStart%2C%5B%5D%2C0)%3Bwhile(oldStart%3ColdEnd)%7Bsplice.removed.push(old%5BoldStart%2B%2B%5D)%3B%7Dreturn%5Bsplice%5D%3B%7Delse%20if(oldStart%3D%3DoldEnd)return%5BnewSplice(currentStart%2C%5B%5D%2CcurrentEnd-currentStart)%5D%3Bvar%20ops%3DspliceOperationsFromEditDistances(calcEditDistances(current%2CcurrentStart%2CcurrentEnd%2Cold%2ColdStart%2ColdEnd))%3Bsplice%3Dundefined%3Bvar%20splices%3D%5B%5D%3Bvar%20index%3DcurrentStart%3Bvar%20oldIndex%3DoldStart%3Bfor(var%20i%3D0%3Bi%3Cops.length%3Bi%2B%2B)%7Bswitch(ops%5Bi%5D)%7Bcase%20EDIT_LEAVE%3Aif(splice)%7Bsplices.push(splice)%3Bsplice%3Dundefined%3B%7Dindex%2B%2B%3BoldIndex%2B%2B%3Bbreak%3Bcase%20EDIT_UPDATE%3Aif(!splice)splice%3DnewSplice(index%2C%5B%5D%2C0)%3Bsplice.addedCount%2B%2B%3Bindex%2B%2B%3Bsplice.removed.push(old%5BoldIndex%5D)%3BoldIndex%2B%2B%3Bbreak%3Bcase%20EDIT_ADD%3Aif(!splice)splice%3DnewSplice(index%2C%5B%5D%2C0)%3Bsplice.addedCount%2B%2B%3Bindex%2B%2B%3Bbreak%3Bcase%20EDIT_DELETE%3Aif(!splice)splice%3DnewSplice(index%2C%5B%5D%2C0)%3Bsplice.removed.push(old%5BoldIndex%5D)%3BoldIndex%2B%2B%3Bbreak%3B%7D%7Dif(splice)%7Bsplices.push(splice)%3B%7Dreturn%20splices%3B%7Dfunction%20sharedPrefix(current%2Cold%2CsearchLength)%7Bfor(var%20i%3D0%3Bi%3CsearchLength%3Bi%2B%2B)%7Bif(!equals(current%5Bi%5D%2Cold%5Bi%5D))return%20i%3B%7Dreturn%20searchLength%3B%7Dfunction%20sharedSuffix(current%2Cold%2CsearchLength)%7Bvar%20index1%3Dcurrent.length%3Bvar%20index2%3Dold.length%3Bvar%20count%3D0%3Bwhile(count%3CsearchLength%26%26equals(current%5B--index1%5D%2Cold%5B--index2%5D))%7Bcount%2B%2B%3B%7Dreturn%20count%3B%7Dfunction%20calculateSplices(current%2Cprevious)%7Breturn%20calcSplices(current%2C0%2Ccurrent.length%2Cprevious%2C0%2Cprevious.length)%3B%7Dfunction%20equals(currentValue%2CpreviousValue)%7Breturn%20currentValue%3D%3D%3DpreviousValue%3B%7D%2F**%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20that%20provides%20utilities%20for%20diffing%20arrays.%0A%20%20%20*%2FPolymer.ArraySplice%3D%7B%2F**%0A%20%20%20%20%20*%20Returns%20an%20array%20of%20splice%20records%20indicating%20the%20minimum%20edits%20required%0A%20%20%20%20%20*%20to%20transform%20the%20%60previous%60%20array%20into%20the%20%60current%60%20array.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Splice%20records%20are%20ordered%20by%20index%20and%20contain%20the%20following%20fields%3A%0A%20%20%20%20%20*%20-%20%60index%60%3A%20index%20where%20edit%20started%0A%20%20%20%20%20*%20-%20%60removed%60%3A%20array%20of%20removed%20items%20from%20this%20index%0A%20%20%20%20%20*%20-%20%60addedCount%60%3A%20number%20of%20items%20added%20at%20this%20index%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20function%20is%20based%20on%20the%20Levenshtein%20%22minimum%20edit%20distance%22%0A%20%20%20%20%20*%20algorithm.%20Note%20that%20updates%20are%20treated%20as%20removal%20followed%20by%20addition.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20The%20worst-case%20time%20complexity%20of%20this%20algorithm%20is%20%60O(l%20*%20p)%60%0A%20%20%20%20%20*%20%20%20l%3A%20The%20length%20of%20the%20current%20array%0A%20%20%20%20%20*%20%20%20p%3A%20The%20length%20of%20the%20previous%20array%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20However%2C%20the%20worst-case%20complexity%20is%20reduced%20by%20an%20%60O(n)%60%20optimization%0A%20%20%20%20%20*%20to%20detect%20any%20shared%20prefix%20%26%20suffix%20between%20the%20two%20arrays%20and%20only%0A%20%20%20%20%20*%20perform%20the%20more%20expensive%20minimum%20edit%20distance%20calculation%20over%20the%0A%20%20%20%20%20*%20non-shared%20portions%20of%20the%20arrays.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40function%0A%20%20%20%20%20*%20%40memberof%20Polymer.ArraySplice%0A%20%20%20%20%20*%20%40param%20%7B!Array%7D%20current%20The%20%22changed%22%20array%20for%20which%20splices%20will%20be%0A%20%20%20%20%20*%20calculated.%0A%20%20%20%20%20*%20%40param%20%7B!Array%7D%20previous%20The%20%22unchanged%22%20original%20array%20to%20compare%0A%20%20%20%20%20*%20%60current%60%20against%20to%20determine%20the%20splices.%0A%20%20%20%20%20*%20%40return%20%7B!Array%7D%20Returns%20an%20array%20of%20splice%20record%20objects.%20Each%20of%20these%0A%20%20%20%20%20*%20contains%3A%20%60index%60%20the%20location%20where%20the%20splice%20occurred%3B%20%60removed%60%0A%20%20%20%20%20*%20the%20array%20of%20removed%20items%20from%20this%20location%3B%20%60addedCount%60%20the%20number%0A%20%20%20%20%20*%20of%20items%20added%20at%20this%20location.%0A%20%20%20%20%20*%2FcalculateSplices%3AcalculateSplices%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Farray-splice.html.js%0A",
            "totalBytes": 7970,
            "wastedBytes": 4446,
            "wastedPercent": 55.78419071518192
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-input-container'%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20disable%20the%20floating%20label.%20The%20label%20disappears%20when%20the%20input%20value%20is%0A%20%20%20%20%20%20%20*%20not%20null.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20noLabelFloat%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20always%20float%20the%20floating%20label.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20alwaysFloatLabel%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20attribute%20to%20listen%20for%20value%20changes%20on.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20attrForValue%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'bind-value'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Set%20to%20true%20to%20auto-validate%20the%20input%20value%20when%20it%20changes.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20autoValidate%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20input%20is%20invalid.%20This%20property%20is%20set%20automatically%20when%20the%20input%20value%0A%20%20%20%20%20%20%20*%20changes%20if%20auto-validating%2C%20or%20when%20the%20%60iron-input-validate%60%20event%20is%20heard%20from%20a%20child.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20observer%3A%20'_invalidChanged'%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20input%20has%20focus.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20focused%3A%20%7B%0A%20%20%20%20%20%20%20%20readOnly%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20notify%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_addons%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%0A%20%20%20%20%20%20%20%20%2F%2F%20do%20not%20set%20a%20default%20value%20here%20intentionally%20-%20it%20will%20be%20initialized%20lazily%20when%20a%0A%20%20%20%20%20%20%20%20%2F%2F%20distributed%20child%20is%20attached%2C%20which%20may%20occur%20before%20configuration%20for%20this%20element%0A%20%20%20%20%20%20%20%20%2F%2F%20in%20polyfill.%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_inputHasContent%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_inputSelector%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20value%3A%20'input%2Ciron-input%2Ctextarea%2C.paper-input-input'%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundOnFocus%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onFocus.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundOnBlur%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onBlur.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundOnInput%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onInput.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_boundValueChanged%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._onValueChanged.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20listeners%3A%20%7B%0A%20%20%20%20%20%20'addon-attached'%3A%20'_onAddonAttached'%2C%0A%20%20%20%20%20%20'iron-input-validate'%3A%20'_onIronInputValidate'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_valueChangedEvent()%20%7B%0A%20%20%20%20%20%20return%20this.attrForValue%20%2B%20'-changed'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_propertyForValue()%20%7B%0A%20%20%20%20%20%20return%20Polymer.CaseMap.dashToCamelCase(this.attrForValue)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_inputElement()%20%7B%0A%20%20%20%20%20%20return%20Polymer.dom(this).querySelector(this._inputSelector)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20_inputElementValue()%20%7B%0A%20%20%20%20%20%20return%20this._inputElement%5Bthis._propertyForValue%5D%20%7C%7C%20this._inputElement.value%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20ready%3A%20function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Paper-input%20treats%20a%20value%20of%20undefined%20differently%20at%20startup%20than%0A%20%20%20%20%20%20%2F%2F%20the%20rest%20of%20the%20time%20(specifically%3A%20it%20does%20not%20validate%20it%20at%20startup%2C%20but%0A%20%20%20%20%20%20%2F%2F%20it%20does%20after%20that.%20We%20need%20to%20track%20whether%20the%20first%20time%20we%20encounter%0A%20%20%20%20%20%20%2F%2F%20the%20value%20is%20basically%20this%20first%20time%2C%20so%20that%20we%20can%20validate%20it%0A%20%20%20%20%20%20%2F%2F%20correctly%20the%20rest%20of%20the%20time.%20See%20https%3A%2F%2Fgithub.com%2FPolymerElements%2Fpaper-input%2Fissues%2F605%0A%20%20%20%20%20%20this.__isFirstValueUpdate%20%3D%20true%3B%0A%20%20%20%20%20%20if%20(!this._addons)%20%7B%0A%20%20%20%20%20%20%20%20this._addons%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20this.addEventListener('focus'%2C%20this._boundOnFocus%2C%20true)%3B%0A%20%20%20%20%20%20this.addEventListener('blur'%2C%20this._boundOnBlur%2C%20true)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.attrForValue)%20%7B%0A%20%20%20%20%20%20%20%20this._inputElement.addEventListener(this._valueChangedEvent%2C%20this._boundValueChanged)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.addEventListener('input'%2C%20this._onInput)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Only%20validate%20when%20attached%20if%20the%20input%20already%20has%20a%20value.%0A%20%20%20%20%20%20if%20(this._inputElementValue%20%26%26%20this._inputElementValue%20!%3D%20'')%20%7B%0A%20%20%20%20%20%20%20%20this._handleValueAndAutoValidate(this._inputElement)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this._handleValue(this._inputElement)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onAddonAttached%3A%20function(event)%20%7B%0A%20%20%20%20%20%20if%20(!this._addons)%20%7B%0A%20%20%20%20%20%20%20%20this._addons%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20target%20%3D%20event.target%3B%0A%20%20%20%20%20%20if%20(this._addons.indexOf(target)%20%3D%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20this._addons.push(target)%3B%0A%20%20%20%20%20%20%20%20if%20(this.isAttached)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._handleValue(this._inputElement)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onFocus%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setFocused(true)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onBlur%3A%20function()%20%7B%0A%20%20%20%20%20%20this._setFocused(false)%3B%0A%20%20%20%20%20%20this._handleValueAndAutoValidate(this._inputElement)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onInput%3A%20function(event)%20%7B%0A%20%20%20%20%20%20this._handleValueAndAutoValidate(event.target)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onValueChanged%3A%20function(event)%20%7B%0A%20%20%20%20%20%20var%20input%20%3D%20event.target%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Paper-input%20treats%20a%20value%20of%20undefined%20differently%20at%20startup%20than%0A%20%20%20%20%20%20%2F%2F%20the%20rest%20of%20the%20time%20(specifically%3A%20it%20does%20not%20validate%20it%20at%20startup%2C%20but%0A%20%20%20%20%20%20%2F%2F%20it%20does%20after%20that.%20If%20this%20is%20in%20fact%20the%20bootup%20case%2C%20ignore%20validation%2C%0A%20%20%20%20%20%20%2F%2F%20just%20this%20once.%0A%20%20%20%20%20%20if%20(this.__isFirstValueUpdate)%20%7B%0A%20%20%20%20%20%20%20%20this.__isFirstValueUpdate%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20if%20(input.value%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._handleValueAndAutoValidate(event.target)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleValue%3A%20function(inputElement)%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20this._inputElementValue%3B%0A%0A%20%20%20%20%20%20%2F%2F%20type%3D%22number%22%20hack%20needed%20because%20this.value%20is%20empty%20until%20it's%20valid%0A%20%20%20%20%20%20if%20(value%20%7C%7C%20value%20%3D%3D%3D%200%20%7C%7C%20(inputElement.type%20%3D%3D%3D%20'number'%20%26%26%20!inputElement.checkValidity()))%20%7B%0A%20%20%20%20%20%20%20%20this._inputHasContent%20%3D%20true%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this._inputHasContent%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this.updateAddons(%7B%0A%20%20%20%20%20%20%20%20inputElement%3A%20inputElement%2C%0A%20%20%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20%20%20invalid%3A%20this.invalid%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_handleValueAndAutoValidate%3A%20function(inputElement)%20%7B%0A%20%20%20%20%20%20if%20(this.autoValidate%20%26%26%20inputElement)%20%7B%0A%20%20%20%20%20%20%20%20var%20valid%3B%0A%0A%20%20%20%20%20%20%20%20if%20(inputElement.validate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20valid%20%3D%20inputElement.validate(this._inputElementValue)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20valid%20%3D%20inputElement.checkValidity()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!valid%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Call%20this%20last%20to%20notify%20the%20add-ons.%0A%20%20%20%20%20%20this._handleValue(inputElement)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onIronInputValidate%3A%20function(event)%20%7B%0A%20%20%20%20%20%20this.invalid%20%3D%20this._inputElement.invalid%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_invalidChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this._addons)%20%7B%0A%20%20%20%20%20%20%20%20this.updateAddons(%7Binvalid%3A%20this.invalid%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Call%20this%20to%20update%20the%20state%20of%20add-ons.%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20state%20Add-on%20state.%0A%20%20%20%20%20*%2F%0A%20%20%20%20updateAddons%3A%20function(state)%20%7B%0A%20%20%20%20%20%20for%20(var%20addon%2C%20index%20%3D%200%3B%20addon%20%3D%20this._addons%5Bindex%5D%3B%20index%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20addon.update(state)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeInputContentClass%3A%20function(noLabelFloat%2C%20alwaysFloatLabel%2C%20focused%2C%20invalid%2C%20_inputHasContent)%20%7B%0A%20%20%20%20%20%20var%20cls%20%3D%20'input-content'%3B%0A%20%20%20%20%20%20if%20(!noLabelFloat)%20%7B%0A%20%20%20%20%20%20%20%20var%20label%20%3D%20this.querySelector('label')%3B%0A%0A%20%20%20%20%20%20%20%20if%20(alwaysFloatLabel%20%7C%7C%20_inputHasContent)%20%7B%0A%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20label-is-floating'%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20the%20label%20is%20floating%2C%20ignore%20any%20offsets%20that%20may%20have%20been%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20applied%20from%20a%20prefix%20element.%0A%20%20%20%20%20%20%20%20%20%20this.%24.labelAndInputContainer.style.position%20%3D%20'static'%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20%22%20label-is-highlighted%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20When%20the%20label%20is%20not%20floating%2C%20it%20should%20overlap%20the%20input%20element.%0A%20%20%20%20%20%20%20%20%20%20if%20(label)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%24.labelAndInputContainer.style.position%20%3D%20'relative'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20(_inputHasContent)%20%7B%0A%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20label-is-hidden'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20focused'%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20cls%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeUnderlineClass%3A%20function(focused%2C%20invalid)%20%7B%0A%20%20%20%20%20%20var%20cls%20%3D%20'underline'%3B%0A%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-highlighted'%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20cls%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_computeAddOnContentClass%3A%20function(focused%2C%20invalid)%20%7B%0A%20%20%20%20%20%20var%20cls%20%3D%20'add-on-content'%3B%0A%20%20%20%20%20%20if%20(invalid)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-invalid'%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(focused)%20%7B%0A%20%20%20%20%20%20%20%20cls%20%2B%3D%20'%20is-highlighted'%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20cls%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpaper-input%2Fpaper-input-container.html.js%0A",
            "totalBytes": 8425,
            "wastedBytes": 4261,
            "wastedPercent": 50.57566765578635
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3B%2F%2F%20Microtask%20implemented%20using%20Mutation%20Observer%0Avar%20microtaskCurrHandle%3D0%3Bvar%20microtaskLastHandle%3D0%3Bvar%20microtaskCallbacks%3D%5B%5D%3Bvar%20microtaskNodeContent%3D0%3Bvar%20microtaskNode%3Ddocument.createTextNode('')%3Bnew%20window.MutationObserver(microtaskFlush).observe(microtaskNode%2C%7BcharacterData%3Atrue%7D)%3Bfunction%20microtaskFlush()%7Bvar%20len%3DmicrotaskCallbacks.length%3Bfor(var%20i%3D0%3Bi%3Clen%3Bi%2B%2B)%7Bvar%20cb%3DmicrotaskCallbacks%5Bi%5D%3Bif(cb)%7Btry%7Bcb()%3B%7Dcatch(e)%7BsetTimeout(function()%7Bthrow%20e%3B%7D)%3B%7D%7D%7DmicrotaskCallbacks.splice(0%2Clen)%3BmicrotaskLastHandle%2B%3Dlen%3B%7D%2F**%0A%20%20%20*%20Module%20that%20provides%20a%20number%20of%20strategies%20for%20enqueuing%20asynchronous%0A%20%20%20*%20tasks.%20%20Each%20sub-module%20provides%20a%20standard%20%60run(fn)%60%20interface%20that%20returns%20a%0A%20%20%20*%20handle%2C%20and%20a%20%60cancel(handle)%60%20interface%20for%20canceling%20async%20tasks%20before%0A%20%20%20*%20they%20run.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20that%20provides%20a%20number%20of%20strategies%20for%20enqueuing%20asynchronous%0A%20%20%20*%20tasks.%0A%20%20%20*%2FPolymer.Async%3D%7B%2F**%0A%20%20%20%20%20*%20Async%20interface%20wrapper%20around%20%60setTimeout%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20wrapper%20around%20%60setTimeout%60.%0A%20%20%20%20%20*%2FtimeOut%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Returns%20a%20sub-module%20with%20the%20async%20interface%20providing%20the%20provided%0A%20%20%20%20%20%20%20*%20delay.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.timeOut%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20delay%20Time%20to%20wait%20before%20calling%20callbacks%20in%20ms%0A%20%20%20%20%20%20%20*%20%40return%20%7B!AsyncInterface%7D%20An%20async%20timeout%20interface%0A%20%20%20%20%20%20%20*%2Fafter%3Afunction%20after(delay)%7Breturn%7Brun%3Afunction%20run(fn)%7Breturn%20window.setTimeout(fn%2Cdelay)%3B%7D%2Ccancel%3Afunction%20cancel(handle)%7Bwindow.clearTimeout(handle)%3B%7D%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20in%20the%20next%20task.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.timeOut%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Function%7D%20fn%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%3D%7D%20delay%20Delay%20in%20milliseconds%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(fn%2Cdelay)%7Breturn%20window.setTimeout(fn%2Cdelay)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60timeOut%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.timeOut%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bwindow.clearTimeout(handle)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Async%20interface%20wrapper%20around%20%60requestAnimationFrame%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20wrapper%20around%20%60requestAnimationFrame%60.%0A%20%20%20%20%20*%2FanimationFrame%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20at%20%60requestAnimationFrame%60%20timing.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.animationFrame%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(number)%3Avoid%7D%20fn%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(fn)%7Breturn%20window.requestAnimationFrame(fn)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60animationFrame%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.animationFrame%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bwindow.cancelAnimationFrame(handle)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Async%20interface%20wrapper%20around%20%60requestIdleCallback%60.%20%20Falls%20back%20to%0A%20%20%20%20%20*%20%60setTimeout%60%20on%20browsers%20that%20do%20not%20support%20%60requestIdleCallback%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20wrapper%20around%20%60requestIdleCallback%60.%0A%20%20%20%20%20*%2FidlePeriod%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20at%20%60requestIdleCallback%60%20timing.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.idlePeriod%0A%20%20%20%20%20%20%20*%20%40param%20%7Bfunction(!IdleDeadline)%3Avoid%7D%20fn%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(fn)%7Breturn%20window.requestIdleCallback%3Fwindow.requestIdleCallback(fn)%3Awindow.setTimeout(fn%2C16)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60idlePeriod%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.idlePeriod%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bwindow.cancelIdleCallback%3Fwindow.cancelIdleCallback(handle)%3Awindow.clearTimeout(handle)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20*%20Async%20interface%20for%20enqueuing%20callbacks%20that%20run%20at%20microtask%20timing.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%20that%20microtask%20timing%20is%20achieved%20via%20a%20single%20%60MutationObserver%60%2C%0A%20%20%20%20%20*%20and%20thus%20callbacks%20enqueued%20with%20this%20API%20will%20all%20run%20in%20a%20single%0A%20%20%20%20%20*%20batch%2C%20and%20not%20interleaved%20with%20other%20microtasks%20such%20as%20promises.%0A%20%20%20%20%20*%20Promises%20are%20avoided%20as%20an%20implementation%20choice%20for%20the%20time%20being%0A%20%20%20%20%20*%20due%20to%20Safari%20bugs%20that%20cause%20Promises%20to%20lack%20microtask%20guarantees.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40namespace%0A%20%20%20%20%20*%20%40memberof%20Polymer.Async%0A%20%20%20%20%20*%20%40summary%20Async%20interface%20for%20enqueuing%20callbacks%20that%20run%20at%20microtask%0A%20%20%20%20%20*%20%20%20timing.%0A%20%20%20%20%20*%2FmicroTask%3A%7B%2F**%0A%20%20%20%20%20%20%20*%20Enqueues%20a%20function%20called%20at%20microtask%20timing.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.microTask%0A%20%20%20%20%20%20%20*%20%40param%20%7B!Function%3D%7D%20callback%20Callback%20to%20run%0A%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20Handle%20used%20for%20canceling%20task%0A%20%20%20%20%20%20%20*%2Frun%3Afunction%20run(callback)%7BmicrotaskNode.textContent%3DmicrotaskNodeContent%2B%2B%3BmicrotaskCallbacks.push(callback)%3Breturn%20microtaskCurrHandle%2B%2B%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20*%20Cancels%20a%20previously%20enqueued%20%60microTask%60%20callback.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40memberof%20Polymer.Async.microTask%0A%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20handle%20Handle%20returned%20from%20%60run%60%20of%20callback%20to%20cancel%0A%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20*%2Fcancel%3Afunction%20cancel(handle)%7Bvar%20idx%3Dhandle-microtaskLastHandle%3Bif(idx%3E%3D0)%7Bif(!microtaskCallbacks%5Bidx%5D)%7Bthrow%20new%20Error('invalid%20async%20handle%3A%20'%2Bhandle)%3B%7DmicrotaskCallbacks%5Bidx%5D%3Dnull%3B%7D%7D%7D%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fasync.html.js%0A",
            "totalBytes": 5682,
            "wastedBytes": 4165,
            "wastedPercent": 73.30165434706089
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.PartnerUtils%20*%2Ffunction%20_toConsumableArray(arr)%7Bif(Array.isArray(arr))%7Bfor(var%20i%3D0%2Carr2%3DArray(arr.length)%3Bi%3Carr.length%3Bi%2B%2B)%7Barr2%5Bi%5D%3Darr%5Bi%5D%3B%7Dreturn%20arr2%3B%7Delse%7Breturn%20Array.from(arr)%3B%7D%7Dvar%20PartnerUtils%3D%7Bcreated%3Afunction%20created()%7Bthis.adLoggerEnabled%3D!!this.getUrlParamValue('usat_console')%3B%7D%2C_loadScript%3Afunction%20_loadScript(url)%7Breturn%20new%20Promise(function(resolve%2Creject)%7Bvar%20element%3Ddocument.createElement('script')%3Belement.async%3Dtrue%3Belement.src%3Durl%3B%2F%2F%20Important%20success%20and%20error%20for%20the%20promise%0Aelement.onload%3Dfunction()%7Bresolve(url)%3B%7D%3Belement.onerror%3Dfunction()%7Breject(url)%3B%7D%3Bdocument.body.appendChild(element)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Deep%20dive%20into%20an%20object%20without%20crashing%20on%20null%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20%20%20%20%20%20%20%20%20%20obj%20%20object%20to%20retrieve%20a%20nested%20value%20from%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7B...String%7CNumber%7D%20path%20comma%20separated%20list%20of%20keys%20to%20retrieve%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20returned%20value%20or%20undefined%20if%20does%20not%20exist%0A%20%20%20%20%20%20%20%20%20*%2F_getNested%3Afunction%20_getNested(obj)%7Bif(obj)%7Bfor(var%20_len%3Darguments.length%2Cpath%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bpath%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dreturn%20path.reduce(function(obj%2Carg)%7Breturn%20obj%26%26obj%5Barg%5D%3B%7D%2Cobj)%3B%7Dreturn%20undefined%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Checks%20the%20url%20query%20parameters%20for%20the%20key%20and%20if%20set%20returns%20it's%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20%20%20%20%20%20%20%20%20key%20Query%20Parameter%20key%20to%20lookup%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7CBoolean%7D%20%20%20%20%20Key's%20corresponding%20value%20or%20false%20if%20not%20set.%0A%20%20%20%20%20%20%20%20%20*%2FgetUrlParamValue%3Afunction%20getUrlParamValue(key)%7Bvar%20value%3DdecodeURI((new%20RegExp(key%2B'%3D'%2B'(.%2B%3F)(%26%7C%24)').exec(this._getQueryString())%7C%7C%5B''%2C'false'%5D)%5B1%5D)%3Bif(value%3D%3D%3D'false')%7Breturn%20false%3B%7Delse%20if(value%3D%3D%3D'true')%7Breturn%20true%3B%7Dreturn%20value%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20query%20string%20for%20current%20location%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20returns%20query%20string%0A%20%20%20%20%20%20%20%20%20*%2F_getQueryString%3Afunction%20_getQueryString()%7Breturn%20window.location.search%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Checks%20whether%20an%20element%20is%20within%2C%20above%2C%20or%20below%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20elm%20element%20to%20check%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20threshold%20pixel%20threshold%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNumber%7D%20viewHeight%20client%2Fwindow%20height%20override%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BString%7D%20Whether%20the%20element%20is%20'visible'%2C%20'above'%2C%20or%20'below'%20relative%20to%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20*%2F_checkVisible%3Afunction%20_checkVisible(elm%2Cthreshold%2CviewHeight)%7Bthreshold%3Dthreshold%7C%7C0%3BviewHeight%3DviewHeight%7C%7CMath.max(document.documentElement.clientHeight%2Cwindow.innerHeight)%3Bvar%20rect%3Delm.getBoundingClientRect()%2Cabove%3Drect.bottom-threshold%3C0%2Cbelow%3Drect.top-viewHeight%2Bthreshold%3E%3D0%3Breturn%20above%3F'above'%3Abelow%3F'below'%3A'visible'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20current%20coordinates%20for%20an%20element%20relative%20to%20the%20current%20viewport.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20el%20element%20to%20get%20coordinates%20for%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20obj%20with%20%60top%60%20and%20%60left%60%20properties%0A%20%20%20%20%20%20%20%20%20*%20*%2F_getCoords%3Afunction%20_getCoords(el)%7Bvar%20box%3Del.getBoundingClientRect()%2CdocEl%3Ddocument.documentElement%2Ctop%3Dbox.top%2Bwindow.pageYOffset-(docEl.clientTop%7C%7C0)%2Cleft%3Dbox.left%2Bwindow.pageXOffset-(docEl.clientLeft%7C%7C0)%3Breturn%7Btop%3AMath.round(top)%2Cleft%3AMath.round(left)%7D%3B%7D%2C_deferred%3Afunction%20_deferred(timeout%2CtimeoutCallback)%7Bvar%20_this%3Dthis%3Bthis.promise%3Dnew%20Promise(function(resolve%2Creject)%7B_this.done%3Dfalse%3B_this.reject%3Dreject%3B_this.resolve%3Dresolve%3Bif(timeout%26%26typeof%20timeout%3D%3D%3D'number')%7BsetTimeout(function()%7Bif(!_this.done)%7Bif(typeof%20timeoutCallback%3D%3D%3D'function')%7BtimeoutCallback(resolve)%3B%7Delse%7Bresolve()%3B%7D%7D%7D%2Ctimeout)%3B%7D%7D)%3Bthis.promise.then(function()%7B_this.done%3Dtrue%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Attempts%20to%20parse%20string.%20If%20an%20error%20is%20encountered%20return%20the%20fallback%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20json%20%20%20%20%20JSON%20String%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20%20%20%20fallback%20Fallback%20value%20to%20return%20if%20an%20error%20is%20encountered%20parsing%20the%20string%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Parsed%2Ffallback%20value%0A%20%20%20%20%20%20%20%20%20*%2F_parseJsonArray%3Afunction%20_parseJsonArray(json%2Cfallback)%7Btry%7Bvar%20data%3DJSON.parse(json)%3Bif(Array.isArray(data))%7Breturn%20data%3B%7D%7Dcatch(e)%7B%7D%2F%2F%20Parsing%20error%2C%20continue%20below%0A%2F%2F%20return%20a%20*copy*%20of%20our%20fallback%20when%20appropriate%0Aif(Array.isArray(fallback))%7Breturn%20Object.assign(%5B%5D%2Cfallback)%3B%7Dreturn%5B%5D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Attempts%20to%20parse%20string.%20If%20an%20error%20is%20encountered%20return%20the%20fallback%20value%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20json%20%20%20%20%20JSON%20String%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20%20%20%20%20fallback%20Fallback%20value%20to%20return%20if%20an%20error%20is%20encountered%20parsing%20the%20string%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BObject%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Parsed%2Ffallback%20value%0A%20%20%20%20%20%20%20%20%20*%2F_parseJsonObject%3Afunction%20_parseJsonObject(json%2Cfallback)%7Btry%7Bvar%20data%3DJSON.parse(json)%3Bif(Object.prototype.toString.call(data)%3D%3D%3D'%5Bobject%20Object%5D')%7Breturn%20data%3B%7D%7Dcatch(e)%7B%7D%2F%2F%20Parsing%20error%2C%20continue%20below%0A%2F%2F%20return%20a%20*copy*%20of%20our%20fallback%20when%20appropriate%0Aif(Object.prototype.toString.call(fallback)%3D%3D%3D'%5Bobject%20Object%5D')%7Breturn%20Object.assign(%7B%7D%2Cfallback)%3B%7Dreturn%7B%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Broadcast%20event%20polyfill%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20eventName%20Event%20Name%20to%20broadcast%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20params%20%20%20%20Data%20to%20be%20attached%20to%20the%20broadcast%20event%0A%20%20%20%20%20%20%20%20%20*%2F_broadcastEvent%3Afunction%20_broadcastEvent(eventName%2Cparams)%7Bvar%20parameters%3Dparams%7C%7C%7Bbubbles%3Atrue%2Ccancelable%3Afalse%2Cdetail%3Aundefined%7D%3Bif(typeof%20window%5B'CustomEvent'%5D%3D%3D%3D'function')%7Bwindow.dispatchEvent(new%20CustomEvent(eventName%2Cparameters))%3B%7Delse%7Bvar%20docEvt%3Ddocument.createEvent('CustomEvent')%3BdocEvt.initCustomEvent(eventName%2Cparameters.bubbles%2Cparameters.cancelable%2Cparameters.detail)%3Bwindow.dispatchEvent(docEvt)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Filters%20an%20array%20of%20sizes%20to%20remove%20the%20'fluid'%20size%20from%20the%20array%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20Array%20of%20sizes%20for%20the%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20Array%20of%20sizes%20for%20the%20slot%20with%20'fluid'%20removed%20if%20present%0A%20%20%20%20%20%20%20%20%20*%2F_filterFluidSize%3Afunction%20_filterFluidSize(sizes)%7Bvar%20fluidIdx%3Dsizes.indexOf('fluid')%3Bif(fluidIdx%3D%3D%3D-1)return%20sizes%3B%2F%2F%20Remove%20fluid%20as%20a%20size%0Areturn%20sizes.reduce(function(sizeOutput%2Csize)%7Bif(size%3D%3D%3D'fluid')return%20sizeOutput%3BsizeOutput.push(size)%3Breturn%20sizeOutput%3B%7D%2C%5B%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Check%20to%20see%20if%20we%20are%20%22mobile%22%20sized%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BBoolean%7D%20True%20is%20the%20screen%20is%20considered%20mobile%0A%20%20%20%20%20%20%20%20%20*%2F_inMobileEnvironment%3Afunction%20_inMobileEnvironment()%7Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bif(typeof%20window.ga_data.ads.inMobileEnvironment%3D%3D%3D'undefined')%7Bwindow.ga_data.ads.inMobileEnvironment%3Dwindow.innerWidth%3C768%3B%7Dreturn%20window.ga_data.ads.inMobileEnvironment%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Transverses%20the%20provided%20attribute%20of%20the%20el's%20parents%20until%20it%20finds%20one%20with%20a%20non-zero%20value.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BElement%7D%20el%20%20%20Initial%20parent%20element%20to%20check%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20%20attr%20Attribute%20to%20check%20the%20value%20of%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BNumber%7D%20%20%20%20%20%20%20First%20non-zero%20value%20found%0A%20%20%20%20%20%20%20%20%20*%2F_getNonZeroAttr%3Afunction%20_getNonZeroAttr(el%2Cattr)%7Bvar%20val%3Del%5Battr%5D%3Bwhile(val%3D%3D%3D0)%7Bel%3Del.parentNode%3Bval%3Del%5Battr%5D%3B%7Dreturn%20val%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Log%20info%20to%20console%20if%20debug%20mode%20is%20enabled.%0A%20%20%20%20%20%20%20%20%20*%20*%2F_log%3Afunction%20_log(msg)%7Bvar%20elapsed%3Dvoid%200%2Cargs%3DArray.prototype.slice.call(arguments%2C1)%3Bif(this.adLoggerEnabled%26%26window.console)%7Bvar%20_console%3Belapsed%3D(performance.now()%2F1000).toFixed(3)%3Bmsg%3D'AD%20ELEMENT%20('%2Bthis.id%2B')%20%3A%20'%2Belapsed%2B's%20%3A%20'%2Bmsg%3B(_console%3Dconsole).info.apply(_console%2C%5Bmsg%5D.concat(_toConsumableArray(args)))%3B%2F%2F%20eslint-disable-line%20no-console%0A%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Retrieves%20override%20values%20from%20request%20query%20parameters.%0A%20%20%20%20%20%20%20%20%20*%20%40returns%20%7BObject%7D%20override%20map%0A%20%20%20%20%20%20%20%20%20*%20*%2F_getOverrides%3Afunction%20_getOverrides()%7Bvar%20_this2%3Dthis%3B%2F%2F%20Override%20params%20to%20check%20for%0Avar%20params%3D%5B'usatai'%2C'usatan'%2C'usatl'%5D%3B%2F%2F%20Set%20each%20param%20with%20its%20string%20value%2C%20defaulting%20to%20%60null%60%0Avar%20overrides%3D%7B%7D%3Bparams.forEach(function(param)%7Bvar%20val%3D_this2.getUrlParamValue(param)%3Boverrides%5Bparam%5D%3Dval%3Fval.toString()%3Anull%3B%7D)%3Breturn%20overrides%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Whether%20%22Ad%20Free%22%20handling%20should%20be%20applied%20to%20the%20page%0A%20%20%20%20%20%20%20%20%20*%2FisAdFreeExperience%3Afunction%20isAdFreeExperience()%7Bif(window.ga_data%26%26window.ga_data.utils%26%26window.ga_data.utils.isAdFreeExperience)%7Breturn%20window.ga_data.utils.isAdFreeExperience()%3B%7Dreturn%20this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'scroll'%2C'enabled')%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Utils%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerUtils%3DPartnerUtils%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-utils.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-utils.html.js%0A",
            "totalBytes": 8565,
            "wastedBytes": 3976,
            "wastedPercent": 46.421482778750736
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F*global%20IntlMessageFormat%20*%2Fwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%20%40polymerBehavior%20window.ga_data.behaviors.GalliumI18n%20*%2Fwindow.ga_data.behaviors.GalliumI18n%3D%7Bproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20language%20used%20for%20translation.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Flanguage%3A%7Btype%3AString%2Cvalue%3Awindow.ga_data.site.language%7C%7C'en'%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20In%20some%20circumstances%2C%20specific%20overrides%20are%20needed%20per-site.%20This%20is%20where%20you%20define%20that.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Should%20typically%20be%20a%20site%20code.%20(e.g.%20PCIN)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Foverrides%3A%7Btype%3AString%2Cvalue%3Awindow.ga_data.site.l10n%7C%7Cnull%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20dictionary%20of%20localized%20messages%20defined%20by%20the%20module%2C%20for%20each%20of%20the%20languages%20that%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20are%20going%20to%20be%20used.%20See%20http%3A%2F%2Fformatjs.io%2Fguides%2Fmessage-syntax%2F%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20more%20information%20on%20the%20message%20syntax.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20For%20example%2C%20a%20valid%20dictionary%20would%20be%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this.l10n%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20'en'%3A%20%7B%20'greeting'%3A%20'Hello!'%20%7D%2C%20'es'%20%3A%20%7B%20'greeting'%3A%20'Bonjour!'%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fl10n%3A%7Btype%3AObject%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Optional%20dictionary%20of%20user%20defined%20formats%2C%20as%20explained%20here%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fformatjs.io%2Fguides%2Fmessage-syntax%2F%23custom-formats%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20For%20example%2C%20a%20valid%20dictionary%20of%20formats%20would%20be%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20this.formats%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20%20%20number%3A%20%7B%20USD%3A%20%7B%20style%3A%20'currency'%2C%20currency%3A%20'USD'%20%7D%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fformats%3A%7Btype%3AObject%2Cvalue%3Afunction%20value()%7Breturn%7B%7D%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Translates%20a%20string%20to%20the%20current%20%60language%60.%20Any%20parameters%20to%20the%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20string%20should%20be%20passed%20in%20order%2C%20as%20follows%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%60localize(stringKey%2C%20param1Name%2C%20param1Value%2C%20param2Name%2C%20param2Value)%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Flocalize%3A%7Btype%3AFunction%2Ccomputed%3A'__computeLocalize(language%2C%20l10n%2C%20formats)'%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Upon%20attachment%2C%20if%20this%20site%20has%20custom%20copy%2C%20lets%20load%20it%20from%20an%20external%20resource.%0A%20%20%20%20%20%20%20%20*%2Fattached%3Afunction%20attached()%7Bif(this.overrides)%7Bthis.loadL10nResources()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20a%20computed%20%60localize%60%20method%2C%20based%20on%20the%20current%20%60language%60.%0A%20%20%20%20%20%20%20%20%20*%2F__computeLocalize%3Afunction%20__computeLocalize(language%2Cl10n%2Cformats)%7Bvar%20proto%3Dthis.constructor.prototype%3Bthis.__checkLocalizationCache(proto)%3B%2F%2F%20Every%20time%20any%20of%20the%20parameters%20change%2C%20invalidate%20the%20strings%20cache.%0Aproto.__localizationCache.messages%3D%7B%7D%3Breturn%20function()%7Bvar%20key%3Darguments%5B0%5D%3Bif(!key%7C%7C!l10n%7C%7C!language%7C%7C!l10n%5Blanguage%5D)return%3B%2F%2F%20Cache%20the%20key%2Fvalue%20pairs%20for%20the%20same%20language%2C%20so%20that%20we%20don't%0A%2F%2F%20do%20extra%20work%20if%20we're%20just%20reusing%20strings%20across%20an%20application.%0Avar%20translatedValue%3Dl10n%5Blanguage%5D%5Bkey%5D%3Bif(!translatedValue)%7B%2F%2F%20A%20complete%20miss%20happened.%20Return%20empty%20value%20%26%20notify%20the%20console.%0A%2F%2Fconsole.warn('WARNING%3A%20A%20localization%20value%20was%20missing%20for%20component%3A%20'%2C%20this.localName%2C%20'key%3A%20'%2C%20key%2C%20'language%3A%20'%2C%20language)%3B%0Areturn''%3B%7Dvar%20messageKey%3Dkey%2BtranslatedValue%3Bvar%20translatedMessage%3Dproto.__localizationCache.messages%5BmessageKey%5D%3Bif(!translatedMessage)%7BtranslatedMessage%3Dnew%20IntlMessageFormat(translatedValue%2Clanguage%2Cformats)%3Bproto.__localizationCache.messages%5BmessageKey%5D%3DtranslatedMessage%3B%7Dvar%20args%3D%7B%7D%3Bfor(var%20i%3D1%3Bi%3Carguments.length%3Bi%2B%3D2)%7Bargs%5Barguments%5Bi%5D%5D%3Darguments%5Bi%2B1%5D%3B%7Dreturn%20translatedMessage.format(args)%3B%7D%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20Fetches%20remote%20l10n%20resource%20from%20the%20CDN.%20If%20multiple%20components%20request%20the%20same%20resource%2C%0A%20%20%20%20%20%20%20%20*%20they'll%20received%20a%20cached%20version.%0A%20%20%20%20%20%20%20%20*%2FloadL10nResources%3Afunction%20loadL10nResources()%7Bvar%20path%3D'https%3A%2F%2Fwww.gannett-cdn.com%2Fgannett-web%2Fconfig%2Fl10n%2F'%2Bthis.overrides%2B'.json'%3Bvar%20proto%3Dthis.constructor.prototype%3Bthis.__checkLocalizationCache(proto)%3B%2F%2F%20If%20the%20global%20ajax%20object%20has%20not%20been%20initialized%2C%20initialize%20and%20cache%20it.%0Avar%20ajax%3Dproto.__localizationCache.ajax%3Bif(!ajax)%7Bajax%3Dproto.__localizationCache.ajax%3Ddocument.createElement('iron-ajax')%3B%7Dvar%20request%3Dproto.__localizationCache.requests%5Bpath%5D%3Bif(!request)%7Bajax.url%3Dpath%3Bvar%20req%3Dajax.generateRequest()%3Breq.completes.then(this.__onRequestResponse.bind(this)%2Cthis.__onRequestError.bind(this))%3B%2F%2F%20Cache%20the%20instance%20so%20that%20it%20can%20be%20reused%20if%20the%20same%20path%20is%20loaded.%0Aproto.__localizationCache.requests%5Bpath%5D%3Dreq%3B%7Delse%7Brequest.completes.then(this.__onRequestResponse.bind(this)%2Cthis.__onRequestError.bind(this))%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20*%20If%20we%20fetch%20external%20l10n%2C%20we%20need%20to%20intelligently%20merge%20it%20in%20with%20this%20components%20l10n.%0A%20%20%20%20%20%20%20%20*%20In%20the%20external%20resources%2C%20they%20are%20required%20to%20prefix%20all%20keys%20with%20the%20components%20name%0A%20%20%20%20%20%20%20%20*%20(e.g.%20el-social-sharing)%2C%20so%20%60share-this-page%60%20INSIDE%20the%20component%20matches%0A%20%20%20%20%20%20%20%20*%20with%20%60el-social-sharing.share-this-page%60%20in%20the%20external%20l10n%20file.%0A%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20*%20We%20only%20perform%20the%20computation%20on%20the%20current%20language.%20Other%20languages%20do%20not%20get%20merged%20in%20for%20performance.%0A%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20*%20This%20causes%20a%20re-computation%20and%20dirties%20the%20element.%0A%20%20%20%20%20%20%20%20*%2F__onRequestResponse%3Afunction%20__onRequestResponse(event)%7Bvar%20response%3Devent.response%3B%2F%2F%20Deeply%20merge%20the%20response%0Avar%20l10nCache%3Dthis.l10n%7C%7C%7B%7D%3Bfor(var%20elName%20in%20l10nCache%5Bthis.language%5D)%7Bvar%20externalLocalizedResource%3Dresponse%5Bthis.language%5D%5Bthis.localName%2B'.'%2BelName%5D%3Bif(externalLocalizedResource)%7Bl10nCache%5Bthis.language%5D%5BelName%5D%3DexternalLocalizedResource%3B%7D%7D%2F%2F%20Force%20a%20re-compute%20by%20setting%20to%20null%20then%20its%20actual%20new%20value.%0Athis.l10n%3Dnull%3Bthis.l10n%3Dl10nCache%3B%7D%2C__onRequestError%3Afunction%20__onRequestError(event)%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Uh%20oh!%20There's%20really%20no%20recovering%20from%20this%20error.%20Lets%20just%20try%20our%20best%20with%20what%20we%20have%20%C2%AF%5C_(%E3%83%84)_%2F%C2%AF%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Pray%20that%20the%20component%20has%20all%20the%20needed%20copy.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F%2F%2F%20console.warn('WARNING%3A%20The%20external%20localization%20resource%20for%20this%20site%20failed.')%3B%0A%7D%2C__checkLocalizationCache%3Afunction%20__checkLocalizationCache(proto)%7B%2F%2F%20do%20nothing%20if%20proto%20is%20undefined.%0Aif(proto%3D%3D%3Dundefined)return%3B%2F%2F%20In%20the%20event%20proto%20not%20have%20__localizationCache%20object%2C%20create%20it.%0Aif(proto%5B'__localizationCache'%5D%3D%3D%3Dundefined)%7Bproto%5B'__localizationCache'%5D%3D%7Brequests%3A%7B%7D%2Cmessages%3A%7B%7D%2Cajax%3Anull%7D%3B%7D%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fgallium-i18n.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fgallium-i18n.html.js%0A",
            "totalBytes": 6179,
            "wastedBytes": 3696,
            "wastedPercent": 59.82186234817814
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20%20%20%20%20*%20%60%3Cpartner-posterscroll%3E%60%20adds%20a%20Posterscroll%20ad%20to%20your%20page.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%2FPolymer(%7Bis%3A'partner-posterscroll'%2CdesignIds%3A'A12'%2Cproperties%3A%7B%2F**%20DFP%20placement%20name%20for%20this%20ad%20slot.%20*%2Fplacement%3A%7Btype%3AString%2Cvalue%3A''%7D%2Csticky%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2Cstuck%3A%7Btype%3AString%2Cvalue%3A''%7D%2CheaderOffset%3A%7Btype%3ANumber%2Cvalue%3A56%7D%2CautoRefresh%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2CwinHeight%3A%7Btype%3ANumber%2Cvalue%3Awindow.innerHeight%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20bidding%20*%2Fprebid%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20aps%20bidding%20*%2Faps%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%2C%2F**%20This%20unit%20has%20eligible%20sizes%20for%20inx%20bidding%20*%2Finx%3A%7Btype%3ABoolean%2Cvalue%3Atrue%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20the%20setup%20of%20the%20posterscroll%20ad%20unit.%20Creates%20an%20additional%20container%20that%20will%20be%20used%20for%20sticking%20the%20ad.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bthis.top%3Dthis.headerOffset%3BPolymer.RenderStatus.afterNextRender(this%2Cfunction()%7B%2F%2F%20Set%20top%20offset%20based%20on%20header%20size%20and%20top%20margin%0Avar%20style%3Dwindow.getComputedStyle(_this%2Cnull)%3Bvar%20topMargin%3DparseInt(style.marginTop%2C10)%3B_this.top%3D_this.headerOffset%2BtopMargin%3B%2F%2F%20Use%20%60position%3Asticky%60%20where%20supported%0Aif(_this._positionStickySupported())%7B_this.positionSticky%3Dtrue%3B_this._setupPositionSticky()%3B%7Delse%7B%2F%2F%20Otherwise%20use%20a%20scroll%20listener%0A_this._setupScrollListenerSticky()%3B%7D%7D%2C%5B%5D)%3B%7D%2C%2F**%20Sets%20ad%20sizes%20for%20this%20ad%20slot.%20*%2FgetDefaultSizes%3Afunction%20getDefaultSizes()%7Breturn%5B%5B300%2C250%5D%2C%5B300%2C600%5D%5D%3B%7D%2CslotReady%3Afunction%20slotReady()%7B%2F%2F%20Set%20placement%20dynamically%20if%20not%20set%20on%20element%0Aif(!this.placement)%7Bthis.placement%3Dthis._getPlacement()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Get%20placement%20dynamically%20based%20on%20%60ga_data.route%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_getPlacement%3Afunction%20_getPlacement()%7Bvar%20front%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'contentType')%3D%3D%3D'section'%3Breturn%20front%3F'poster_scroll_front'%3A'poster_scroll'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Checks%20to%20see%20if%20%60position%3A%20sticky%60%20is%20supported%20on%20current%20browser.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Stolen%20from%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fgithub.com%2Fdollarshaveclub%2Fstickybits%2Fblob%2F93b905d76b47d30b34ff75c61158e226cc4d7ae1%2Fsrc%2Fstickybits.js%23L106-L116%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_positionStickySupported%3Afunction%20_positionStickySupported()%7Bvar%20prefix%3D%5B''%2C'-o-'%2C'-webkit-'%2C'-moz-'%2C'-ms-'%5D%3Bvar%20test%3Ddocument.head.style%3Bfor(var%20i%3D0%3Bi%3Cprefix.length%3Bi%2B%3D1)%7Btest.position%3Dprefix%5Bi%5D%2B'sticky'%3B%7Dvar%20stickyProp%3D'fixed'%3Bif(typeof%20test.position!%3D%3D'undefined')stickyProp%3Dtest.position%3Btest.position%3D''%3Breturn%20stickyProp%3D%3D%3D'sticky'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20up%20our%20element%20as%20sticky%20using%20%60position%3A%20sticky%3B%60%20CSS%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_setupPositionSticky%3Afunction%20_setupPositionSticky()%7Bthis.style.position%3D'sticky'%3Bthis.style.top%3Dthis.top%2B'px'%3Bthis.style.marginBottom%3D'0px'%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20up%20our%20element%20as%20sticky%20using%20scroll%20listeners%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2F_setupScrollListenerSticky%3Afunction%20_setupScrollListenerSticky()%7Bvar%20_this2%3Dthis%3Bvar%20slotContainer%3Dvoid%200%2Cparent%3Dthis.parentNode%3B%2F%2F%20Can't%20find%20a%20parent%2C%20or%20I'm%20inactive%0Aif(!parent%7C%7Cthis.inactive)return%3B%2F%2F%20Wrap%20this%20in%20poster-scroll%20div%0Athis.slotContainer%3DslotContainer%3Ddocument.createElement('div')%3BslotContainer.className%3D'poster-scroll'%3Bparent.insertBefore(slotContainer%2Cthis)%3BslotContainer.appendChild(this)%3B%2F%2F%20setup%20resize%20listener%0Awindow.addEventListener('ga-resize'%2Cfunction()%7Breturn%20_this2._resizeListener()%3B%7D%2Cfalse)%3Bdocument.addEventListener('DOMContentLoaded'%2Cfunction()%7B%2F%2F%20Catch%20instance%20where%20lazy%20ad%20needs%20to%20load%2C%20when%20a%20user%20loads%20the%20page%20halfway%20down%20the%20rail%0A_this2._setupSticky()%3B%7D)%3B%7D%2CslotAttached%3Afunction%20slotAttached()%7Bvar%20_this3%3Dthis%3B%2F%2F%20Adjust%20our%20ad%20request%20sizes%2C%20so%20we%20don't%20load%20anything%20taller%20than%20the%20window%20height%0Athis.sizes%3Dthis.sizes.reduce(function(arr%2Csize)%7Bif(size%5B1%5D%3C%3D_this3.winHeight-_this3.top%7C%7Csize%5B1%5D%3D%3D%3D250)arr.push(size)%3Breturn%20arr%3B%7D%2C%5B%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Listener%20function%20for%20the%20window%20resize%20event.%20Will%20reset%20the%20sticky%20ad%20after%20the%20user%20stops%20resizing%20the%20screen.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_resizeListener%3Afunction%20_resizeListener()%7Bvar%20_this4%3Dthis%3B%2F%2F%20Only%20fire%20when%20a%20users%20stops%20resizing%20for%20more%20500ms%0Aif(this._timeout)%7BPolymer.Async.timeOut.cancel(this._timeout)%3B%7Dthis._timeout%3DPolymer.Async.timeOut.after(500).run(function()%7B_this4._setupSticky()%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Called%20when%20render%20has%20finished%20for%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2FrenderEnded%3Afunction%20renderEnded()%7Bif(!this.positionSticky)%7Bthis._setupSticky()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Set's%20up%20everything%20needed%20to%20make%20this%20ad%20slot%20sticky.%20Sets%20heights%2Fwidths%2C%20and%20variables%20needed%20for%20calculations%2C%20then%20starts%20observing%20if%20there%20is%20enough%20space%20for%20a%20sticky%20ad.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setupSticky%3Afunction%20_setupSticky()%7Bvar%20_this5%3Dthis%3Bthis._setHeight()%3Bif(this.sticky%26%26this.lastPosition%3D%3D%3Dundefined)%7Bthis.lastPosition%3D0%3Bwindow.addEventListener('ga-scroll'%2Cfunction()%7Breturn%20_this5._scrollListener()%3B%7D%2Cfalse)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Alternative%20for%20when%20%60position%3Asticky%60%20is%20not%20supported.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_scrollListener%3Afunction%20_scrollListener()%7Bvar%20slotContainerPos%3Dthis.slotContainer.getBoundingClientRect()%2CcurrentPosition%3DslotContainerPos.top%2Ctype%3DcurrentPosition%3Ethis.lastPosition%3F'ceil'%3A'floor'%3Bthis._setPosition(type%2CslotContainerPos)%3Bthis.lastPosition%3DcurrentPosition%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Checks%20where%20the%20ad%20slot%20container%20is%20on%20the%20page%2C%20and%20fixes%20the%20ad%20slot%20accordingly%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BString%7D%20type%20%20%20%20%20%20%20%20%20%20%20%20%20%20Type%20of%20listener%20calling%20the%20function%20('ceil'%2C%20'floor')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20slotContainerPos%20%20Bounding%20Client%20Rectangle%20object%20for%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setPosition%3Afunction%20_setPosition(type%2CslotContainerPos)%7Bvar%20topOffset%3Dthis.stuck%3D%3D%3D'top'%26%26type%3D%3D%3D'ceil'%3Fthis.headerOffset%3Athis.headerOffset%2Bthis.topMargin%3Bif(slotContainerPos.top%3CtopOffset%7C%7Ctype%3D%3D%3D'ceil'%26%26this.stuck%3D%3D%3D'none'%26%26slotContainerPos.top%3D%3D%3DtopOffset)%7Bif(slotContainerPos.bottom%3E%3Dthis.slotHeight%2BtopOffset)%7Bthis._fixToTop()%3B%7Delse%7Bthis._fixToFloor()%3B%7D%7Delse%7Bthis._unFix()%3B%7Dif(this.lazy)%7Bthis.lazyRenderCheck()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Fixes%20the%20ad%20slot%20to%20the%20floor%20of%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_fixToFloor%3Afunction%20_fixToFloor()%7Bif(this.stuck!%3D%3D'floor')%7Bthis.stuck%3D'floor'%3Bthis.style.bottom%3D'0px'%3Bthis.style.top%3Dnull%3Bthis.style.position%3D'absolute'%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Fixes%20the%20ad%20slot%20to%20the%20top%20of%20the%20ad%20slot%20container%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_fixToTop%3Afunction%20_fixToTop()%7Bif(this.stuck!%3D%3D'top')%7Bthis.stuck%3D'top'%3Bthis.style.bottom%3D0%3Bthis.style.position%3D'fixed'%3Bthis.style.top%3Dthis.headerOffset%2B'px'%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Un-fixes%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_unFix%3Afunction%20_unFix()%7Bif(this.stuck!%3D%3D'none')%7Bthis.stuck%3D'none'%3Bthis.style.bottom%3Dnull%3Bthis.style.position%3D'relative'%3Bthis.style.top%3Dnull%3Bthis.style.width%3Dnull%3B%2F%2F%20Check%20whenever%20we%20fix%2Funfix%20the%20slot%2C%20just%20in%20case%20something%20lazily%20loaded%20in%20changing%20the%20dimensions%0Athis._setHeight()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20Sets%20the%20height%20of%20the%20ad%20slot%2C%20ad%20slot%20container%2C%20and%20sets%20variables%20used%20for%20calculating%20where%20to%20fix%20the%20ad%20slot%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F_setHeight%3Afunction%20_setHeight()%7Bvar%20offset%3Dvoid%200%2CslotContainerHeight%3Dvoid%200%2CparentHeight%3Dvoid%200%2CslotContainer%3Dthis.slotContainer%2Cparent%3DslotContainer.parentNode%2Cad%3Dthis.querySelector('%5Bid%24%3D__container__%5D')%7C%7Cthis%2CadHeight%3Dad.clientHeight%2CslotStyles%3Dwindow.getComputedStyle(this%2Cnull)%3B%2F%2Freset%20values%20before%20we%20attempt%20to%20get%20them%20again%0Athis.style.width%3Dnull%3BslotContainer.style.height%3Dnull%3BparentHeight%3Dthis._getNonZeroAttr(parent%2C'clientHeight')%3Boffset%3Dthis._getCoords(parent).top-this._getCoords(slotContainer).top%3BslotContainerHeight%3DparentHeight%2Boffset%3Bthis.slotHeight%3DadHeight%2BparseInt(slotStyles.paddingTop%2C10)%2BparseInt(slotStyles.paddingBottom%2C10)%3Bthis.topMargin%3DparseInt(slotStyles.marginTop%2C10)%3Bthis.winHeight%3Dwindow.innerHeight%3B%2F%2F%20adjust%20the%20width%2Fheight%20of%20the%20ad%0Athis.style.height%3DadHeight%2B'px'%3Bif(this.stuck%3D%3D%3D'top'%7C%7Cthis.stuck%3D%3D%3D'floor')%7Bthis.style.width%3Dthis._getNonZeroAttr(this.parentNode%2C'clientWidth')%2B'px'%3B%7D%2F%2F%20Check%20to%20see%20if%20the%20slot%20container%20is%20large%20enough%20to%20make%20this%20sticky%0Athis.sticky%3Dthis.slotHeight%3CslotContainerHeight%3Bif(this.sticky)%7BslotContainer.style.height%3DslotContainerHeight%2B'px'%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%2Fbehaviors%3A%5Bwindow.ga_data.behaviors.PartnerUtils%2Cwindow.ga_data.behaviors.PartnerSlot%2Cwindow.ga_data.behaviors.PartnerBid%5D%7D)%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fpartner%2Fpartner-posterscroll%2Fpartner-posterscroll.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fpartner%2Fpartner-posterscroll%2Fpartner-posterscroll.html.js%0A",
            "totalBytes": 8719,
            "wastedBytes": 3633,
            "wastedPercent": 41.66762243376534
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%20%20%2F**%0A%20%20%20*%20Singleton%20IronMeta%20instance.%0A%20%20%20*%2F%0A%20%20Polymer.IronValidatableBehaviorMeta%20%3D%20null%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%60Use%20Polymer.IronValidatableBehavior%60%20to%20implement%20an%20element%20that%20validates%20user%20input.%0A%20%20%20*%20Use%20the%20related%20%60Polymer.IronValidatorBehavior%60%20to%20add%20custom%20validation%20logic%20to%20an%20iron-input.%0A%20%20%20*%0A%20%20%20*%20By%20default%2C%20an%20%60%3Ciron-form%3E%60%20element%20validates%20its%20fields%20when%20the%20user%20presses%20the%20submit%20button.%0A%20%20%20*%20To%20validate%20a%20form%20imperatively%2C%20call%20the%20form's%20%60validate()%60%20method%2C%20which%20in%20turn%20will%0A%20%20%20*%20call%20%60validate()%60%20on%20all%20its%20children.%20By%20using%20%60Polymer.IronValidatableBehavior%60%2C%20your%0A%20%20%20*%20custom%20element%20will%20get%20a%20public%20%60validate()%60%2C%20which%0A%20%20%20*%20will%20return%20the%20validity%20of%20the%20element%2C%20and%20a%20corresponding%20%60invalid%60%20attribute%2C%0A%20%20%20*%20which%20can%20be%20used%20for%20styling.%0A%20%20%20*%0A%20%20%20*%20To%20implement%20the%20custom%20validation%20logic%20of%20your%20element%2C%20you%20must%20override%0A%20%20%20*%20the%20protected%20%60_getValidity()%60%20method%20of%20this%20behaviour%2C%20rather%20than%20%60validate()%60.%0A%20%20%20*%20See%20%5Bthis%5D(https%3A%2F%2Fgithub.com%2FPolymerElements%2Firon-form%2Fblob%2Fmaster%2Fdemo%2Fsimple-element.html)%0A%20%20%20*%20for%20an%20example.%0A%20%20%20*%0A%20%20%20*%20%23%23%23%20Accessibility%0A%20%20%20*%0A%20%20%20*%20Changing%20the%20%60invalid%60%20property%2C%20either%20manually%20or%20by%20calling%20%60validate()%60%20will%20update%20the%0A%20%20%20*%20%60aria-invalid%60%20attribute.%0A%20%20%20*%0A%20%20%20*%20%40demo%20demo%2Findex.html%0A%20%20%20*%20%40polymerBehavior%0A%20%20%20*%2F%0A%20%20Polymer.IronValidatableBehavior%20%3D%20%7B%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Name%20of%20the%20validator%20to%20use.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20validator%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20String%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20if%20the%20last%20call%20to%20%60validate%60%20is%20invalid.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20invalid%3A%20%7B%0A%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20reflectToAttribute%3A%20true%2C%0A%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20value%3A%20false%2C%0A%20%20%20%20%20%20%20%20observer%3A%20'_invalidChanged'%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20registered%3A%20function()%20%7B%0A%20%20%20%20%20%20Polymer.IronValidatableBehaviorMeta%20%3D%20new%20Polymer.IronMeta(%7Btype%3A%20'validator'%7D)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_invalidChanged%3A%20function()%20%7B%0A%20%20%20%20%20%20if%20(this.invalid)%20%7B%0A%20%20%20%20%20%20%20%20this.setAttribute('aria-invalid'%2C%20'true')%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.removeAttribute('aria-invalid')%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F*%20Recompute%20this%20every%20time%20it's%20needed%2C%20because%20we%20don't%20know%20if%20the%0A%20%20%20%20%20*%20underlying%20IronValidatableBehaviorMeta%20has%20changed.%20*%2F%0A%20%20%20%20get%20_validator()%20%7B%0A%20%20%20%20%20%20return%20Polymer.IronValidatableBehaviorMeta%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Polymer.IronValidatableBehaviorMeta.byKey(this.validator)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20validator%20%60validator%60%20exists.%0A%20%20%20%20%20*%2F%0A%20%20%20%20hasValidator%3A%20function()%20%7B%0A%20%20%20%20%20%20return%20this._validator%20!%3D%20null%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20%60value%60%20is%20valid%2C%20and%20updates%20%60invalid%60.%20If%20you%20want%0A%20%20%20%20%20*%20your%20element%20to%20have%20custom%20validation%20logic%2C%20do%20not%20override%20this%20method%3B%0A%20%20%20%20%20*%20override%20%60_getValidity(value)%60%20instead.%0A%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20value%20Deprecated%3A%20The%20value%20to%20be%20validated.%20By%20default%2C%0A%20%20%20%20%20*%20it%20is%20passed%20to%20the%20validator's%20%60validate()%60%20function%2C%20if%20a%20validator%20is%20set.%0A%20%20%20%20%20*%20If%20this%20argument%20is%20not%20specified%2C%20then%20the%20element's%20%60value%60%20property%0A%20%20%20%20%20*%20is%20used%2C%20if%20it%20exists.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60value%60%20is%20valid.%0A%20%20%20%20%20*%2F%0A%20%20%20%20validate%3A%20function(value)%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20this%20is%20an%20element%20that%20also%20has%20a%20value%20property%2C%20and%20there%20was%0A%20%20%20%20%20%20%2F%2F%20no%20explicit%20value%20argument%20passed%2C%20use%20the%20element's%20property%20instead.%0A%20%20%20%20%20%20if%20(value%20%3D%3D%3D%20undefined%20%26%26%20this.value%20!%3D%3D%20undefined)%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!this._getValidity(this.value)%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20this.invalid%20%3D%20!this._getValidity(value)%3B%0A%20%20%20%20%20%20return%20!this.invalid%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20%60value%60%20is%20valid.%20%20By%20default%2C%20it%20is%20passed%0A%20%20%20%20%20*%20to%20the%20validator's%20%60validate()%60%20function%2C%20if%20a%20validator%20is%20set.%20You%0A%20%20%20%20%20*%20should%20override%20this%20method%20if%20you%20want%20to%20implement%20custom%20validity%0A%20%20%20%20%20*%20logic%20for%20your%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BObject%7D%20value%20The%20value%20to%20be%20validated.%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20%60value%60%20is%20valid.%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20_getValidity%3A%20function(value)%20%7B%0A%20%20%20%20%20%20if%20(this.hasValidator())%20%7B%0A%20%20%20%20%20%20%20%20return%20this._validator.validate(value)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-validatable-behavior%2Firon-validatable-behavior.html.js%0A",
            "totalBytes": 4116,
            "wastedBytes": 3217,
            "wastedPercent": 78.1584062196307
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Class%20representing%20a%20static%20string%20value%20which%20can%20be%20used%20to%20filter%0A%20%20%20%20%20*%20strings%20by%20asseting%20that%20they%20have%20been%20created%20via%20this%20class.%20The%0A%20%20%20%20%20*%20%60value%60%20property%20returns%20the%20string%20passed%20to%20the%20constructor.%0A%20%20%20%20%20*%2Fvar%20LiteralString%3Dfunction()%7Bfunction%20LiteralString(string)%7B_classCallCheck(this%2CLiteralString)%3B%2F**%20%40type%20%7Bstring%7D%20*%2Fthis.value%3Dstring.toString()%3B%7D%2F**%0A%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20LiteralString%20string%20value%0A%20%20%20%20%20%20%20*%2F_createClass(LiteralString%2C%5B%7Bkey%3A'toString'%2Cvalue%3Afunction%20toString()%7Breturn%20this.value%3B%7D%7D%5D)%3Breturn%20LiteralString%3B%7D()%3B%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Object%20to%20stringify%20into%20HTML%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20HTML%20stringified%20form%20of%20%60obj%60%0A%20%20%20%20%20*%2Ffunction%20literalValue(value)%7Bif(value%20instanceof%20LiteralString)%7Breturn(%2F**%20%40type%20%7B!LiteralString%7D%20*%2Fvalue.value)%3B%7Delse%7Bthrow%20new%20Error('non-literal%20value%20passed%20to%20Polymer.htmlLiteral%3A%20'%2Bvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Object%20to%20stringify%20into%20HTML%0A%20%20%20%20%20*%20%40return%20%7Bstring%7D%20HTML%20stringified%20form%20of%20%60obj%60%0A%20%20%20%20%20*%2Ffunction%20htmlValue(value)%7Bif(value%20instanceof%20HTMLTemplateElement)%7Breturn(%2F**%20%40type%20%7B!HTMLTemplateElement%20%7D%20*%2Fvalue.innerHTML)%3B%7Delse%20if(value%20instanceof%20LiteralString)%7Breturn%20literalValue(value)%3B%7Delse%7Bthrow%20new%20Error('non-template%20value%20passed%20to%20Polymer.html%3A%20'%2Bvalue)%3B%7D%7D%2F**%0A%20%20%20%20%20*%20A%20template%20literal%20tag%20that%20creates%20an%20HTML%20%3Ctemplate%3E%20element%20from%20the%0A%20%20%20%20%20*%20contents%20of%20the%20string.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20allows%20you%20to%20write%20a%20Polymer%20Template%20in%20JavaScript.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Templates%20can%20be%20composed%20by%20interpolating%20%60HTMLTemplateElement%60s%20in%0A%20%20%20%20%20*%20expressions%20in%20the%20JavaScript%20template%20literal.%20The%20nested%20template's%0A%20%20%20%20%20*%20%60innerHTML%60%20is%20included%20in%20the%20containing%20template.%20%20The%20only%20other%0A%20%20%20%20%20*%20values%20allowed%20in%20expressions%20are%20those%20returned%20from%20%60Polymer.htmlLiteral%60%0A%20%20%20%20%20*%20which%20ensures%20only%20literal%20values%20from%20JS%20source%20ever%20reach%20the%20HTML%2C%20to%0A%20%20%20%20%20*%20guard%20against%20XSS%20risks.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20All%20other%20values%20are%20disallowed%20in%20expressions%20to%20help%20prevent%20XSS%0A%20%20%20%20%20*%20attacks%3B%20however%2C%20%60Polymer.htmlLiteral%60%20can%20be%20used%20to%20compose%20static%0A%20%20%20%20%20*%20string%20values%20into%20templates.%20This%20is%20useful%20to%20compose%20strings%20into%0A%20%20%20%20%20*%20places%20that%20do%20not%20accept%20html%2C%20like%20the%20css%20text%20of%20a%20%60style%60%0A%20%20%20%20%20*%20element.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20template()%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20return%20Polymer.html%60%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cstyle%3E%3Ahost%7B%20content%3A%22...%22%20%7D%3C%2Fstyle%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22shadowed%22%3E%24%7Bthis.partialTemplate%7D%3C%2Fdiv%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%24%7Bsuper.template%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20partialTemplate()%20%7B%20return%20Polymer.html%60%3Cspan%3EPartial!%3C%2Fspan%3E%60%3B%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40param%20%7B!ITemplateArray%7D%20strings%20Constant%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40param%20%7B...*%7D%20values%20Variable%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40return%20%7B!HTMLTemplateElement%7D%20Constructed%20HTMLTemplateElement%0A%20%20%20%20%20*%2FPolymer.html%3Dfunction%20html(strings)%7Bvar%20template%3D%2F**%20%40type%20%7B!HTMLTemplateElement%7D%20*%2Fdocument.createElement('template')%3Bfor(var%20_len%3Darguments.length%2Cvalues%3DArray(_len%3E1%3F_len-1%3A0)%2C_key%3D1%3B_key%3C_len%3B_key%2B%2B)%7Bvalues%5B_key-1%5D%3Darguments%5B_key%5D%3B%7Dtemplate.innerHTML%3Dvalues.reduce(function(acc%2Cv%2Cidx)%7Breturn%20acc%2BhtmlValue(v)%2Bstrings%5Bidx%2B1%5D%3B%7D%2Cstrings%5B0%5D)%3Breturn%20template%3B%7D%3B%2F**%0A%20%20%20%20%20*%20An%20html%20literal%20tag%20that%20can%20be%20used%20with%20%60Polymer.html%60%20to%20compose.%0A%20%20%20%20%20*%20a%20literal%20string.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20template()%20%7B%0A%20%20%20%20%20*%20%20%20%20%20%20%20return%20Polymer.html%60%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cstyle%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%3Ahost%20%7B%20display%3A%20block%3B%20%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%20%20%24%7BstyleTemplate%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3C%2Fstyle%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22shadowed%22%3E%24%7BstaticValue%7D%3C%2Fdiv%3E%0A%20%20%20%20%20*%20%20%20%20%20%20%20%20%20%24%7Bsuper.template%7D%0A%20%20%20%20%20*%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20*%20%20%20%20%20static%20get%20styleTemplate()%20%7B%20return%20Polymer.htmlLiteral%60.shadowed%20%7B%20background%3A%20gray%3B%20%7D%60%3B%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%20%40param%20%7B!ITemplateArray%7D%20strings%20Constant%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40param%20%7B...*%7D%20values%20Variable%20parts%20of%20tagged%20template%20literal%0A%20%20%20%20%20*%20%40return%20%7B!LiteralString%7D%20Constructed%20literal%20string%0A%20%20%20%20%20*%2FPolymer.htmlLiteral%3Dfunction(strings)%7Bfor(var%20_len2%3Darguments.length%2Cvalues%3DArray(_len2%3E1%3F_len2-1%3A0)%2C_key2%3D1%3B_key2%3C_len2%3B_key2%2B%2B)%7Bvalues%5B_key2-1%5D%3Darguments%5B_key2%5D%3B%7Dreturn%20new%20LiteralString(values.reduce(function(acc%2Cv%2Cidx)%7Breturn%20acc%2BliteralValue(v)%2Bstrings%5Bidx%2B1%5D%3B%7D%2Cstrings%5B0%5D))%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fhtml-tag.html.js%0A",
            "totalBytes": 5107,
            "wastedBytes": 3208,
            "wastedPercent": 62.81574309770903
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20modules%3D%7B%7D%3Bvar%20lcModules%3D%7B%7D%3Bfunction%20setModule(id%2Cmodule)%7B%2F%2F%20store%20id%20separate%20from%20lowercased%20id%20so%20that%0A%2F%2F%20in%20all%20cases%20mixedCase%20id%20will%20stored%20distinctly%0A%2F%2F%20and%20lowercase%20version%20is%20a%20fallback%0Amodules%5Bid%5D%3DlcModules%5Bid.toLowerCase()%5D%3Dmodule%3B%7Dfunction%20findModule(id)%7Breturn%20modules%5Bid%5D%7C%7ClcModules%5Bid.toLowerCase()%5D%3B%7Dfunction%20styleOutsideTemplateCheck(inst)%7Bif(inst.querySelector('style'))%7Bconsole.warn('dom-module%20%25s%20has%20style%20outside%20template'%2Cinst.id)%3B%7D%7D%2F**%0A%20%20%20*%20The%20%60dom-module%60%20element%20registers%20the%20dom%20it%20contains%20to%20the%20name%20given%0A%20%20%20*%20by%20the%20module's%20id%20attribute.%20It%20provides%20a%20unified%20database%20of%20dom%0A%20%20%20*%20accessible%20via%20its%20static%20%60import%60%20API.%0A%20%20%20*%0A%20%20%20*%20A%20key%20use%20case%20of%20%60dom-module%60%20is%20for%20providing%20custom%20element%20%60%3Ctemplate%3E%60s%0A%20%20%20*%20via%20HTML%20imports%20that%20are%20parsed%20by%20the%20native%20HTML%20parser%2C%20that%20can%20be%0A%20%20%20*%20relocated%20during%20a%20bundling%20pass%20and%20still%20looked%20up%20by%20%60id%60.%0A%20%20%20*%0A%20%20%20*%20Example%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20%3Cdom-module%20id%3D%22foo%22%3E%0A%20%20%20*%20%20%20%20%20%20%20%3Cimg%20src%3D%22stuff.png%22%3E%0A%20%20%20*%20%20%20%20%20%3C%2Fdom-module%3E%0A%20%20%20*%0A%20%20%20*%20Then%20in%20code%20in%20some%20other%20location%20that%20cannot%20access%20the%20dom-module%20above%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20let%20img%20%3D%20customElements.get('dom-module').import('foo'%2C%20'img')%3B%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40extends%20HTMLElement%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20that%20provides%20a%20registry%20of%20relocatable%20DOM%20content%0A%20%20%20*%20%20%20by%20%60id%60%20that%20is%20agnostic%20to%20bundling.%0A%20%20%20*%20%40unrestricted%0A%20%20%20*%2Fvar%20DomModule%3Dfunction(_HTMLElement)%7B_inherits(DomModule%2C_HTMLElement)%3Bfunction%20DomModule()%7B_classCallCheck(this%2CDomModule)%3Breturn%20_possibleConstructorReturn(this%2C(DomModule.__proto__%7C%7CObject.getPrototypeOf(DomModule)).apply(this%2Carguments))%3B%7D_createClass(DomModule%2C%5B%7Bkey%3A'attributeChangedCallback'%2C%2F*%20eslint-disable%20no-unused-vars%20*%2F%2F**%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Name%20of%20attribute.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20old%20Old%20value%20of%20attribute.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20value%20Current%20value%20of%20attribute.%0A%20%20%20%20%20*%20%40param%20%7B%3Fstring%7D%20namespace%20Attribute%20namespace.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fvalue%3Afunction%20attributeChangedCallback(name%2Cold%2Cvalue%2Cnamespace)%7Bif(old!%3D%3Dvalue)%7Bthis.register()%3B%7D%7D%2F*%20eslint-enable%20no-unused-args%20*%2F%2F**%0A%20%20%20%20%20*%20The%20absolute%20URL%20of%20the%20original%20location%20of%20this%20%60dom-module%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20value%20will%20differ%20from%20this%20element's%20%60ownerDocument%60%20in%20the%0A%20%20%20%20%20*%20following%20ways%3A%0A%20%20%20%20%20*%20-%20Takes%20into%20account%20any%20%60assetpath%60%20attribute%20added%20during%20bundling%0A%20%20%20%20%20*%20%20%20to%20indicate%20the%20original%20location%20relative%20to%20the%20bundled%20location%0A%20%20%20%20%20*%20-%20Uses%20the%20HTMLImports%20polyfill's%20%60importForElement%60%20API%20to%20ensure%0A%20%20%20%20%20*%20%20%20the%20path%20is%20relative%20to%20the%20import%20document's%20location%20since%0A%20%20%20%20%20*%20%20%20%60ownerDocument%60%20is%20not%20currently%20polyfilled%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'register'%2C%2F**%0A%20%20%20%20%20*%20Registers%20the%20dom-module%20at%20a%20given%20id.%20This%20method%20should%20only%20be%20called%0A%20%20%20%20%20*%20when%20a%20dom-module%20is%20imperatively%20created.%20For%0A%20%20%20%20%20*%20example%2C%20%60document.createElement('dom-module').register('foo')%60.%0A%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20id%20The%20id%20at%20which%20to%20register%20the%20dom-module.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fvalue%3Afunction%20register(id)%7Bid%3Did%7C%7Cthis.id%3Bif(id)%7B%2F%2F%20Under%20strictTemplatePolicy%2C%20reject%20and%20null%20out%20any%20re-registered%0A%2F%2F%20dom-module%20since%20it%20is%20ambiguous%20whether%20first-in%20or%20last-in%20is%20trusted%20%0Aif(Polymer.strictTemplatePolicy%26%26findModule(id)!%3D%3Dundefined)%7BsetModule(id%2Cnull)%3Bthrow%20new%20Error('strictTemplatePolicy%3A%20dom-module%20'%2Bid%2B'%20re-registered')%3B%7Dthis.id%3Did%3BsetModule(id%2Cthis)%3BstyleOutsideTemplateCheck(this)%3B%7D%7D%7D%2C%7Bkey%3A'assetpath'%2Cget%3Afunction%20get()%7B%2F%2F%20Don't%20override%20existing%20assetpath.%0Aif(!this.__assetpath)%7B%2F%2F%20note%3A%20assetpath%20set%20via%20an%20attribute%20must%20be%20relative%20to%20this%0A%2F%2F%20element's%20location%3B%20accomodate%20polyfilled%20HTMLImports%0Avar%20owner%3Dwindow.HTMLImports%26%26HTMLImports.importForElement%3FHTMLImports.importForElement(this)%7C%7Cdocument%3Athis.ownerDocument%3Bvar%20url%3DPolymer.ResolveUrl.resolveUrl(this.getAttribute('assetpath')%7C%7C''%2Cowner.baseURI)%3Bthis.__assetpath%3DPolymer.ResolveUrl.pathFromUrl(url)%3B%7Dreturn%20this.__assetpath%3B%7D%7D%5D%2C%5B%7Bkey%3A'import'%2C%2F**%0A%20%20%20%20%20*%20Retrieves%20the%20element%20specified%20by%20the%20css%20%60selector%60%20in%20the%20module%0A%20%20%20%20%20*%20registered%20by%20%60id%60.%20For%20example%2C%20this.import('foo'%2C%20'img')%3B%0A%20%20%20%20%20*%20%40param%20%7Bstring%7D%20id%20The%20id%20of%20the%20dom-module%20in%20which%20to%20search.%0A%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20selector%20The%20css%20selector%20by%20which%20to%20find%20the%20element.%0A%20%20%20%20%20*%20%40return%20%7BElement%7D%20Returns%20the%20element%20which%20matches%20%60selector%60%20in%20the%0A%20%20%20%20%20*%20module%20registered%20at%20the%20specified%20%60id%60.%0A%20%20%20%20%20*%2Fvalue%3Afunction%20_import(id%2Cselector)%7Bif(id)%7Bvar%20m%3DfindModule(id)%3Bif(m%26%26selector)%7Breturn%20m.querySelector(selector)%3B%7Dreturn%20m%3B%7Dreturn%20null%3B%7D%7D%2C%7Bkey%3A'observedAttributes'%2Cget%3Afunction%20get()%7Breturn%5B'id'%5D%3B%7D%7D%5D)%3Breturn%20DomModule%3B%7D(HTMLElement)%3BDomModule.prototype%5B'modules'%5D%3Dmodules%3BcustomElements.define('dom-module'%2CDomModule)%3B%2F**%20%40const%20*%2FPolymer.DomModule%3DDomModule%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fdom-module.html.js%0A",
            "totalBytes": 6199,
            "wastedBytes": 3169,
            "wastedPercent": 51.12114857235037
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20attr%3D'include'%3Bvar%20CustomStyleInterface%3Dwindow.ShadyCSS.CustomStyleInterface%3B%2F**%0A%20%20%20*%20Custom%20element%20for%20defining%20styles%20in%20the%20main%20document%20that%20can%20take%0A%20%20%20*%20advantage%20of%20%5Bshady%20DOM%5D(https%3A%2F%2Fgithub.com%2Fwebcomponents%2Fshadycss)%20shims%0A%20%20%20*%20for%20style%20encapsulation%2C%20custom%20properties%2C%20and%20custom%20mixins.%0A%20%20%20*%0A%20%20%20*%20-%20Document%20styles%20defined%20in%20a%20%60%3Ccustom-style%3E%60%20are%20shimmed%20to%20ensure%20they%0A%20%20%20*%20%20%20do%20not%20leak%20into%20local%20DOM%20when%20running%20on%20browsers%20without%20native%0A%20%20%20*%20%20%20Shadow%20DOM.%0A%20%20%20*%20-%20Custom%20properties%20can%20be%20defined%20in%20a%20%60%3Ccustom-style%3E%60.%20Use%20the%20%60html%60%20selector%0A%20%20%20*%20%20%20to%20define%20custom%20properties%20that%20apply%20to%20all%20custom%20elements.%0A%20%20%20*%20-%20Custom%20mixins%20can%20be%20defined%20in%20a%20%60%3Ccustom-style%3E%60%2C%20if%20you%20import%20the%20optional%0A%20%20%20*%20%20%20%5Bapply%20shim%5D(https%3A%2F%2Fgithub.com%2Fwebcomponents%2Fshadycss%23about-applyshim)%0A%20%20%20*%20%20%20(%60shadycss%2Fapply-shim.html%60).%0A%20%20%20*%0A%20%20%20*%20To%20use%3A%0A%20%20%20*%0A%20%20%20*%20-%20Import%20%60custom-style.html%60.%0A%20%20%20*%20-%20Place%20a%20%60%3Ccustom-style%3E%60%20element%20in%20the%20main%20document%2C%20wrapping%20an%20inline%20%60%3Cstyle%3E%60%20tag%20that%0A%20%20%20*%20%20%20contains%20the%20CSS%20rules%20you%20want%20to%20shim.%0A%20%20%20*%0A%20%20%20*%20For%20example%3A%0A%20%20%20*%0A%20%20%20*%20%60%60%60html%0A%20%20%20*%20%3C!--%20import%20apply%20shim--only%20required%20if%20using%20mixins%20--%3E%0A%20%20%20*%20%3Clink%20rel%3D%22import%22%20href%3D%22bower_components%2Fshadycss%2Fapply-shim.html%22%3E%0A%20%20%20*%20%3C!--%20import%20custom-style%20element%20--%3E%0A%20%20%20*%20%3Clink%20rel%3D%22import%22%20href%3D%22bower_components%2Fpolymer%2Flib%2Felements%2Fcustom-style.html%22%3E%0A%20%20%20*%0A%20%20%20*%20%3Ccustom-style%3E%0A%20%20%20*%20%20%20%3Cstyle%3E%0A%20%20%20*%20%20%20%20%20html%20%7B%0A%20%20%20*%20%20%20%20%20%20%20--custom-color%3A%20blue%3B%0A%20%20%20*%20%20%20%20%20%20%20--custom-mixin%3A%20%7B%0A%20%20%20*%20%20%20%20%20%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20*%20%20%20%20%20%20%20%20%20color%3A%20red%3B%0A%20%20%20*%20%20%20%20%20%20%20%7D%3B%0A%20%20%20*%20%20%20%20%20%7D%0A%20%20%20*%20%20%20%3C%2Fstyle%3E%0A%20%20%20*%20%3C%2Fcustom-style%3E%0A%20%20%20*%20%60%60%60%0A%20%20%20*%0A%20%20%20*%20%40customElement%0A%20%20%20*%20%40extends%20HTMLElement%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Custom%20element%20for%20defining%20styles%20in%20the%20main%20document%20that%20can%0A%20%20%20*%20%20%20take%20advantage%20of%20Polymer's%20style%20scoping%20and%20custom%20properties%20shims.%0A%20%20%20*%2Fvar%20CustomStyle%3Dfunction(_HTMLElement)%7B_inherits(CustomStyle%2C_HTMLElement)%3Bfunction%20CustomStyle()%7B_classCallCheck(this%2CCustomStyle)%3Bvar%20_this%3D_possibleConstructorReturn(this%2C(CustomStyle.__proto__%7C%7CObject.getPrototypeOf(CustomStyle)).call(this))%3B_this._style%3Dnull%3BCustomStyleInterface.addCustomStyle(_this)%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20*%20Returns%20the%20light-DOM%20%60%3Cstyle%3E%60%20child%20this%20element%20wraps.%20%20Upon%20first%0A%20%20%20%20%20*%20call%20any%20style%20modules%20referenced%20via%20the%20%60include%60%20attribute%20will%20be%0A%20%20%20%20%20*%20concatenated%20to%20this%20element's%20%60%3Cstyle%3E%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7BHTMLStyleElement%7D%20This%20element's%20light-DOM%20%60%3Cstyle%3E%60%0A%20%20%20%20%20*%2F_createClass(CustomStyle%2C%5B%7Bkey%3A'getStyle'%2Cvalue%3Afunction%20getStyle()%7Bif(this._style)%7Breturn%20this._style%3B%7Dvar%20style%3D%2F**%20%40type%20%7BHTMLStyleElement%7D%20*%2Fthis.querySelector('style')%3Bif(!style)%7Breturn%20null%3B%7Dthis._style%3Dstyle%3Bvar%20include%3Dstyle.getAttribute(attr)%3Bif(include)%7Bstyle.removeAttribute(attr)%3Bstyle.textContent%3DPolymer.StyleGather.cssFromModules(include)%2Bstyle.textContent%3B%7D%2F*%0A%20%20%20%20%20%20HTML%20Imports%20styling%20the%20main%20document%20are%20deprecated%20in%20Chrome%0A%20%20%20%20%20%20https%3A%2F%2Fcrbug.com%2F523952%0A%0A%20%20%20%20%20%20If%20this%20element%20is%20not%20in%20the%20main%20document%2C%20then%20it%20must%20be%20in%20an%20HTML%20Import%20document.%0A%20%20%20%20%20%20In%20that%20case%2C%20move%20the%20custom%20style%20to%20the%20main%20document.%0A%0A%20%20%20%20%20%20The%20ordering%20of%20%60%3Ccustom-style%3E%60%20should%20stay%20the%20same%20as%20when%20loaded%20by%20HTML%20Imports%2C%20but%20there%20may%20be%20odd%0A%20%20%20%20%20%20cases%20of%20ordering%20w.r.t%20the%20main%20document%20styles.%0A%20%20%20%20%20%20*%2Fif(this.ownerDocument!%3D%3Dwindow.document)%7Bwindow.document.head.appendChild(this)%3B%7Dreturn%20this._style%3B%7D%7D%5D)%3Breturn%20CustomStyle%3B%7D(HTMLElement)%3Bwindow.customElements.define('custom-style'%2CCustomStyle)%3B%2F**%20%40const%20*%2FPolymer.CustomStyle%3DCustomStyle%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Felements%2Fcustom-style.html.js%0A",
            "totalBytes": 5009,
            "wastedBytes": 2719,
            "wastedPercent": 54.28229187462568
          },
          {
            "url": "data:text/javascript;charset=utf-8,%2F**%20%40suppress%20%7Bdeprecated%7D%20*%2F(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20Sets%20the%20global%2C%20legacy%20settings.%0A%20%20%20*%0A%20%20%20*%20%40deprecated%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.Settings%3DPolymer.Settings%7C%7C%7B%7D%3BPolymer.Settings.useShadow%3D!window.ShadyDOM%3BPolymer.Settings.useNativeCSSProperties%3DBoolean(!window.ShadyCSS%7C%7Cwindow.ShadyCSS.nativeCss)%3BPolymer.Settings.useNativeCustomElements%3D!window.customElements.polyfillWrapFlushCallback%3B%2F**%0A%20%20%20*%20Globally%20settable%20property%20that%20is%20automatically%20assigned%20to%0A%20%20%20*%20%60Polymer.ElementMixin%60%20instances%2C%20useful%20for%20binding%20in%20templates%20to%0A%20%20%20*%20make%20URL's%20relative%20to%20an%20application's%20root.%20%20Defaults%20to%20the%20main%0A%20%20%20*%20document%20URL%2C%20but%20can%20be%20overridden%20by%20users.%20%20It%20may%20be%20useful%20to%20set%0A%20%20%20*%20%60Polymer.rootPath%60%20to%20provide%20a%20stable%20application%20mount%20path%20when%0A%20%20%20*%20using%20client%20side%20routing.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.rootPath%3DPolymer.rootPath%7C%7CPolymer.ResolveUrl.pathFromUrl(document.baseURI%7C%7Cwindow.location.href)%3B%2F**%0A%20%20%20*%20Sets%20the%20global%20rootPath%20property%20used%20by%20%60Polymer.ElementMixin%60%20and%0A%20%20%20*%20available%20via%20%60Polymer.rootPath%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20new%20root%20path%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setRootPath%3Dfunction(path)%7BPolymer.rootPath%3Dpath%3B%7D%3B%2F**%0A%20%20%20*%20A%20global%20callback%20used%20to%20sanitize%20any%20value%20before%20inserting%20it%20into%20the%20DOM.%20The%20callback%20signature%20is%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%20%20Polymer%20%3D%20%7B%0A%20%20%20*%20%20%20%20%20%20%20sanitizeDOMValue%3A%20function(value%2C%20name%2C%20type%2C%20node)%20%7B%20...%20%7D%0A%20%20%20*%20%20%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20Where%3A%0A%20%20%20*%0A%20%20%20*%20%60value%60%20is%20the%20value%20to%20sanitize.%0A%20%20%20*%20%60name%60%20is%20the%20name%20of%20an%20attribute%20or%20property%20(for%20example%2C%20href).%0A%20%20%20*%20%60type%60%20indicates%20where%20the%20value%20is%20being%20inserted%3A%20one%20of%20property%2C%20attribute%2C%20or%20text.%0A%20%20%20*%20%60node%60%20is%20the%20node%20where%20the%20value%20is%20being%20inserted.%0A%20%20%20*%0A%20%20%20*%20%40type%20%7B(function(*%2Cstring%2Cstring%2CNode)%3A*)%7Cundefined%7D%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.sanitizeDOMValue%3DPolymer.sanitizeDOMValue%7C%7Cnull%3B%2F**%0A%20%20%20*%20Sets%20the%20global%20sanitizeDOMValue%20available%20via%20%60Polymer.sanitizeDOMValue%60.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7B(function(*%2Cstring%2Cstring%2CNode)%3A*)%7Cundefined%7D%20newSanitizeDOMValue%20the%20global%20sanitizeDOMValue%20callback%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setSanitizeDOMValue%3Dfunction(newSanitizeDOMValue)%7BPolymer.sanitizeDOMValue%3DnewSanitizeDOMValue%3B%7D%3B%2F**%0A%20%20%20*%20Globally%20settable%20property%20to%20make%20Polymer%20Gestures%20use%20passive%20TouchEvent%20listeners%20when%20recognizing%20gestures.%0A%20%20%20*%20When%20set%20to%20%60true%60%2C%20gestures%20made%20from%20touch%20will%20not%20be%20able%20to%20prevent%20scrolling%2C%20allowing%20for%20smoother%0A%20%20%20*%20scrolling%20performance.%0A%20%20%20*%20Defaults%20to%20%60false%60%20for%20backwards%20compatibility.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2FPolymer.passiveTouchGestures%3DPolymer.passiveTouchGestures%7C%7Cfalse%3B%2F**%0A%20%20%20*%20Sets%20%60passiveTouchGestures%60%20globally%20for%20all%20elements%20using%20Polymer%20Gestures.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bboolean%7D%20usePassive%20enable%20or%20disable%20passive%20touch%20gestures%20globally%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setPassiveTouchGestures%3Dfunction(usePassive)%7BPolymer.passiveTouchGestures%3DusePassive%3B%7D%3BPolymer.legacyOptimizations%3DPolymer.legacyOptimizations%7C%7Cwindow.PolymerSettings%26%26window.PolymerSettings.legacyOptimizations%7C%7Cfalse%3B%2F**%0A%20%20%20*%20Sets%20%60legacyOptimizations%60%20globally%20for%20all%20elements.%20Enables%0A%20%20%20*%20optimizations%20when%20only%20legacy%20Polymer()%20style%20elements%20are%20used.%0A%20%20%20*%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40param%20%7Bboolean%7D%20useLegacyOptimizations%20enable%20or%20disable%20legacy%20optimizations%20globally.%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2FPolymer.setLegacyOptimizations%3Dfunction(useLegacyOptimizations)%7BPolymer.legacyOptimizations%3DuseLegacyOptimizations%3B%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fsettings.html.js%0A",
            "totalBytes": 3665,
            "wastedBytes": 2636,
            "wastedPercent": 71.92360163710778
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
            "totalBytes": 5322,
            "wastedBytes": 2520,
            "wastedPercent": 47.35983153461437
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7D(function()%7B'use%20strict'%3B%2F**%0A%20%20%20*%20%40summary%20Collapse%20multiple%20callbacks%20into%20one%20invocation%20after%20a%20timer.%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%2Fvar%20Debouncer%3Dfunction()%7Bfunction%20Debouncer()%7B_classCallCheck(this%2CDebouncer)%3Bthis._asyncModule%3Dnull%3Bthis._callback%3Dnull%3Bthis._timer%3Dnull%3B%7D%2F**%0A%20%20%20%20%20*%20Sets%20the%20scheduler%3B%20that%20is%2C%20a%20module%20with%20the%20Async%20interface%2C%0A%20%20%20%20%20*%20a%20callback%20and%20optional%20arguments%20to%20be%20passed%20to%20the%20run%20function%0A%20%20%20%20%20*%20from%20the%20async%20module.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7B!AsyncInterface%7D%20asyncModule%20Object%20with%20Async%20interface.%0A%20%20%20%20%20*%20%40param%20%7Bfunction()%7D%20callback%20Callback%20to%20run.%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F_createClass(Debouncer%2C%5B%7Bkey%3A'setConfig'%2Cvalue%3Afunction%20setConfig(asyncModule%2Ccallback)%7Bvar%20_this%3Dthis%3Bthis._asyncModule%3DasyncModule%3Bthis._callback%3Dcallback%3Bthis._timer%3Dthis._asyncModule.run(function()%7B_this._timer%3Dnull%3B_this._callback()%3B%7D)%3B%7D%2F**%0A%20%20%20%20%20*%20Cancels%20an%20active%20debouncer%20and%20returns%20a%20reference%20to%20itself.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'cancel'%2Cvalue%3Afunction%20cancel()%7Bif(this.isActive())%7Bthis._asyncModule.cancel(this._timer)%3Bthis._timer%3Dnull%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Flushes%20an%20active%20debouncer%20and%20returns%20a%20reference%20to%20itself.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'flush'%2Cvalue%3Afunction%20flush()%7Bif(this.isActive())%7Bthis.cancel()%3Bthis._callback()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Returns%20true%20if%20the%20debouncer%20is%20active.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20active.%0A%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'isActive'%2Cvalue%3Afunction%20isActive()%7Breturn%20this._timer!%3Dnull%3B%7D%2F**%0A%20%20%20%20%20*%20Creates%20a%20debouncer%20if%20no%20debouncer%20is%20passed%20as%20a%20parameter%0A%20%20%20%20%20*%20or%20it%20cancels%20an%20active%20debouncer%20otherwise.%20The%20following%0A%20%20%20%20%20*%20example%20shows%20how%20a%20debouncer%20can%20be%20called%20multiple%20times%20within%20a%0A%20%20%20%20%20*%20microtask%20and%20%22debounced%22%20such%20that%20the%20provided%20callback%20function%20is%0A%20%20%20%20%20*%20called%20once.%20Add%20this%20method%20to%20a%20custom%20element%3A%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20_debounceWork()%20%7B%0A%20%20%20%20%20*%20%20%20this._debounceJob%20%3D%20Polymer.Debouncer.debounce(this._debounceJob%2C%0A%20%20%20%20%20*%20%20%20%20%20%20%20Polymer.Async.microTask%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20*%20%20%20%20%20this._doWork()%3B%0A%20%20%20%20%20*%20%20%20%7D)%3B%0A%20%20%20%20%20*%20%7D%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20If%20the%20%60_debounceWork%60%20method%20is%20called%20multiple%20times%20within%20the%20same%0A%20%20%20%20%20*%20microtask%2C%20the%20%60_doWork%60%20function%20will%20be%20called%20only%20once%20at%20the%20next%0A%20%20%20%20%20*%20microtask%20checkpoint.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Note%3A%20In%20testing%20it%20is%20often%20convenient%20to%20avoid%20asynchrony.%20To%20accomplish%0A%20%20%20%20%20*%20this%20with%20a%20debouncer%2C%20you%20can%20use%20%60Polymer.enqueueDebouncer%60%20and%0A%20%20%20%20%20*%20%60Polymer.flush%60.%20For%20example%2C%20extend%20the%20above%20example%20by%20adding%0A%20%20%20%20%20*%20%60Polymer.enqueueDebouncer(this._debounceJob)%60%20at%20the%20end%20of%20the%0A%20%20%20%20%20*%20%60_debounceWork%60%20method.%20Then%20in%20a%20test%2C%20call%20%60Polymer.flush%60%20to%20ensure%0A%20%20%20%20%20*%20the%20debouncer%20has%20completed.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40param%20%7BDebouncer%3F%7D%20debouncer%20Debouncer%20object.%0A%20%20%20%20%20*%20%40param%20%7B!AsyncInterface%7D%20asyncModule%20Object%20with%20Async%20interface%0A%20%20%20%20%20*%20%40param%20%7Bfunction()%7D%20callback%20Callback%20to%20run.%0A%20%20%20%20%20*%20%40return%20%7B!Debouncer%7D%20Returns%20a%20debouncer%20object.%0A%20%20%20%20%20*%2F%7D%5D%2C%5B%7Bkey%3A'debounce'%2Cvalue%3Afunction%20debounce(debouncer%2CasyncModule%2Ccallback)%7Bif(debouncer%20instanceof%20Debouncer)%7Bdebouncer.cancel()%3B%7Delse%7Bdebouncer%3Dnew%20Debouncer()%3B%7Ddebouncer.setConfig(asyncModule%2Ccallback)%3Breturn%20debouncer%3B%7D%7D%5D)%3Breturn%20Debouncer%3B%7D()%3B%2F**%20%40const%20*%2FPolymer.Debouncer%3DDebouncer%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Fdebounce.html.js%0A",
            "totalBytes": 3961,
            "wastedBytes": 2367,
            "wastedPercent": 59.75763696036355
          },
          {
            "url": "data:text/javascript;charset=utf-8,var%20_createClass%3Dfunction()%7Bfunction%20defineProperties(target%2Cprops)%7Bfor(var%20i%3D0%3Bi%3Cprops.length%3Bi%2B%2B)%7Bvar%20descriptor%3Dprops%5Bi%5D%3Bdescriptor.enumerable%3Ddescriptor.enumerable%7C%7Cfalse%3Bdescriptor.configurable%3Dtrue%3Bif(%22value%22in%20descriptor)descriptor.writable%3Dtrue%3BObject.defineProperty(target%2Cdescriptor.key%2Cdescriptor)%3B%7D%7Dreturn%20function(Constructor%2CprotoProps%2CstaticProps)%7Bif(protoProps)defineProperties(Constructor.prototype%2CprotoProps)%3Bif(staticProps)defineProperties(Constructor%2CstaticProps)%3Breturn%20Constructor%3B%7D%3B%7D()%3Bvar%20_get%3Dfunction%20get(object%2Cproperty%2Creceiver)%7Bif(object%3D%3D%3Dnull)object%3DFunction.prototype%3Bvar%20desc%3DObject.getOwnPropertyDescriptor(object%2Cproperty)%3Bif(desc%3D%3D%3Dundefined)%7Bvar%20parent%3DObject.getPrototypeOf(object)%3Bif(parent%3D%3D%3Dnull)%7Breturn%20undefined%3B%7Delse%7Breturn%20get(parent%2Cproperty%2Creceiver)%3B%7D%7Delse%20if(%22value%22in%20desc)%7Breturn%20desc.value%3B%7Delse%7Bvar%20getter%3Ddesc.get%3Bif(getter%3D%3D%3Dundefined)%7Breturn%20undefined%3B%7Dreturn%20getter.call(receiver)%3B%7D%7D%3Bfunction%20_classCallCheck(instance%2CConstructor)%7Bif(!(instance%20instanceof%20Constructor))%7Bthrow%20new%20TypeError(%22Cannot%20call%20a%20class%20as%20a%20function%22)%3B%7D%7Dfunction%20_possibleConstructorReturn(self%2Ccall)%7Bif(!self)%7Bthrow%20new%20ReferenceError(%22this%20hasn't%20been%20initialised%20-%20super()%20hasn't%20been%20called%22)%3B%7Dreturn%20call%26%26(typeof%20call%3D%3D%3D%22object%22%7C%7Ctypeof%20call%3D%3D%3D%22function%22)%3Fcall%3Aself%3B%7Dfunction%20_inherits(subClass%2CsuperClass)%7Bif(typeof%20superClass!%3D%3D%22function%22%26%26superClass!%3D%3Dnull)%7Bthrow%20new%20TypeError(%22Super%20expression%20must%20either%20be%20null%20or%20a%20function%2C%20not%20%22%2Btypeof%20superClass)%3B%7DsubClass.prototype%3DObject.create(superClass%26%26superClass.prototype%2C%7Bconstructor%3A%7Bvalue%3AsubClass%2Cenumerable%3Afalse%2Cwritable%3Atrue%2Cconfigurable%3Atrue%7D%7D)%3Bif(superClass)Object.setPrototypeOf%3FObject.setPrototypeOf(subClass%2CsuperClass)%3AsubClass.__proto__%3DsuperClass%3B%7D(function()%7B'use%20strict'%3Bvar%20HOST_DIR%3D%2F%3Ahost%5C(%3Adir%5C((ltr%7Crtl)%5C)%5C)%2Fg%3Bvar%20HOST_DIR_REPLACMENT%3D'%3Ahost(%5Bdir%3D%22%241%22%5D)'%3Bvar%20EL_DIR%3D%2F(%5B%5Cs%5Cw-%23%5C.%5C%5B%5C%5D%5C*%5D*)%3Adir%5C((ltr%7Crtl)%5C)%2Fg%3Bvar%20EL_DIR_REPLACMENT%3D'%3Ahost(%5Bdir%3D%22%242%22%5D)%20%241'%3Bvar%20DIR_CHECK%3D%2F%3Adir%5C((%3F%3Altr%7Crtl)%5C)%2F%3Bvar%20SHIM_SHADOW%3DBoolean(window%5B'ShadyDOM'%5D%26%26window%5B'ShadyDOM'%5D%5B'inUse'%5D)%3B%2F**%0A%20%20%20%20%20*%20%40type%20%7B!Array%3C!Polymer_DirMixin%3E%7D%0A%20%20%20%20%20*%2Fvar%20DIR_INSTANCES%3D%5B%5D%3B%2F**%20%40type%20%7BMutationObserver%7D%20*%2Fvar%20observer%3Dnull%3Bvar%20DOCUMENT_DIR%3D''%3Bfunction%20getRTL()%7BDOCUMENT_DIR%3Ddocument.documentElement.getAttribute('dir')%3B%7D%2F**%0A%20%20%20%20%20*%20%40param%20%7B!Polymer_DirMixin%7D%20instance%20Instance%20to%20set%20RTL%20status%20on%0A%20%20%20%20%20*%2Ffunction%20setRTL(instance)%7Bif(!instance.__autoDirOptOut)%7Bvar%20el%3D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Finstance%3Bel.setAttribute('dir'%2CDOCUMENT_DIR)%3B%7D%7Dfunction%20updateDirection()%7BgetRTL()%3BDOCUMENT_DIR%3Ddocument.documentElement.getAttribute('dir')%3Bfor(var%20i%3D0%3Bi%3CDIR_INSTANCES.length%3Bi%2B%2B)%7BsetRTL(DIR_INSTANCES%5Bi%5D)%3B%7D%7Dfunction%20takeRecords()%7Bif(observer%26%26observer.takeRecords().length)%7BupdateDirection()%3B%7D%7D%2F**%0A%20%20%20%20%20*%20Element%20class%20mixin%20that%20allows%20elements%20to%20use%20the%20%60%3Adir%60%20CSS%20Selector%20to%20have%0A%20%20%20%20%20*%20text%20direction%20specific%20styling.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20With%20this%20mixin%2C%20any%20stylesheet%20provided%20in%20the%20template%20will%20transform%20%60%3Adir%60%20into%0A%20%20%20%20%20*%20%60%3Ahost(%5Bdir%5D)%60%20and%20sync%20direction%20with%20the%20page%20via%20the%20element's%20%60dir%60%20attribute.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Elements%20can%20opt%20out%20of%20the%20global%20page%20text%20direction%20by%20setting%20the%20%60dir%60%20attribute%0A%20%20%20%20%20*%20directly%20in%20%60ready()%60%20or%20in%20HTML.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Caveats%3A%0A%20%20%20%20%20*%20-%20Applications%20must%20set%20%60%3Chtml%20dir%3D%22ltr%22%3E%60%20or%20%60%3Chtml%20dir%3D%22rtl%22%3E%60%20to%20sync%20direction%0A%20%20%20%20%20*%20-%20Automatic%20left-to-right%20or%20right-to-left%20styling%20is%20sync'd%20with%20the%20%60%3Chtml%3E%60%20element%20only.%0A%20%20%20%20%20*%20-%20Changing%20%60dir%60%20at%20runtime%20is%20supported.%0A%20%20%20%20%20*%20-%20Opting%20out%20of%20the%20global%20direction%20styling%20is%20permanent%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40mixinFunction%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40appliesMixin%20Polymer.PropertyAccessors%0A%20%20%20%20%20*%20%40memberof%20Polymer%0A%20%20%20%20%20*%2FPolymer.DirMixin%3DPolymer.dedupingMixin(function(base)%7Bif(!SHIM_SHADOW)%7Bif(!observer)%7BgetRTL()%3Bobserver%3Dnew%20MutationObserver(updateDirection)%3Bobserver.observe(document.documentElement%2C%7Battributes%3Atrue%2CattributeFilter%3A%5B'dir'%5D%7D)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20%20%20*%20%40extends%20%7Bbase%7D%0A%20%20%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20*%2Fvar%20elementBase%3DPolymer.PropertyAccessors(base)%3B%2F**%0A%20%20%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20%20%20*%20%40implements%20%7BPolymer_DirMixin%7D%0A%20%20%20%20%20%20%20*%2Fvar%20Dir%3Dfunction(_elementBase)%7B_inherits(Dir%2C_elementBase)%3B_createClass(Dir%2Cnull%2C%5B%7Bkey%3A'_processStyleText'%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20%20%20*%2Fvalue%3Afunction%20_processStyleText(cssText%2CbaseURI)%7BcssText%3D_get(Dir.__proto__%7C%7CObject.getPrototypeOf(Dir)%2C'_processStyleText'%2Cthis).call(this%2CcssText%2CbaseURI)%3Bif(!SHIM_SHADOW%26%26DIR_CHECK.test(cssText))%7BcssText%3Dthis._replaceDirInCssText(cssText)%3Bthis.__activateDir%3Dtrue%3B%7Dreturn%20cssText%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20Replace%20%60%3Adir%60%20in%20the%20given%20CSS%20text%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20text%20CSS%20text%20to%20replace%20DIR%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bstring%7D%20Modified%20CSS%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'_replaceDirInCssText'%2Cvalue%3Afunction%20_replaceDirInCssText(text)%7Bvar%20replacedText%3Dtext%3BreplacedText%3DreplacedText.replace(HOST_DIR%2CHOST_DIR_REPLACMENT)%3BreplacedText%3DreplacedText.replace(EL_DIR%2CEL_DIR_REPLACMENT)%3Breturn%20replacedText%3B%7D%7D%5D)%3Bfunction%20Dir()%7B_classCallCheck(this%2CDir)%3B%2F**%20%40type%20%7Bboolean%7D%20*%2Fvar%20_this%3D_possibleConstructorReturn(this%2C(Dir.__proto__%7C%7CObject.getPrototypeOf(Dir)).call(this))%3B_this.__autoDirOptOut%3Dfalse%3Breturn%20_this%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%20Closure%20doesn't%20understand%20that%20%60this%60%20is%20an%20HTMLElement%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F_createClass(Dir%2C%5B%7Bkey%3A'ready'%2Cvalue%3Afunction%20ready()%7B_get(Dir.prototype.__proto__%7C%7CObject.getPrototypeOf(Dir.prototype)%2C'ready'%2Cthis).call(this)%3Bthis.__autoDirOptOut%3D%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Fthis.hasAttribute('dir')%3B%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20If%20it%20exists%20on%20elementBase%2C%20it%20can%20be%20super'd%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'connectedCallback'%2Cvalue%3Afunction%20connectedCallback()%7Bif(elementBase.prototype.connectedCallback)%7B_get(Dir.prototype.__proto__%7C%7CObject.getPrototypeOf(Dir.prototype)%2C'connectedCallback'%2Cthis).call(this)%3B%7Dif(this.constructor.__activateDir)%7BtakeRecords()%3BDIR_INSTANCES.push(this)%3BsetRTL(this)%3B%7D%7D%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20If%20it%20exists%20on%20elementBase%2C%20it%20can%20be%20super'd%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%7D%2C%7Bkey%3A'disconnectedCallback'%2Cvalue%3Afunction%20disconnectedCallback()%7Bif(elementBase.prototype.disconnectedCallback)%7B_get(Dir.prototype.__proto__%7C%7CObject.getPrototypeOf(Dir.prototype)%2C'disconnectedCallback'%2Cthis).call(this)%3B%7Dif(this.constructor.__activateDir)%7Bvar%20idx%3DDIR_INSTANCES.indexOf(this)%3Bif(idx%3E-1)%7BDIR_INSTANCES.splice(idx%2C1)%3B%7D%7D%7D%7D%5D)%3Breturn%20Dir%3B%7D(elementBase)%3BDir.__activateDir%3Dfalse%3Breturn%20Dir%3B%7D)%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Fmixins%2Fdir-mixin.html.js%0A",
            "totalBytes": 6777,
            "wastedBytes": 2284,
            "wastedPercent": 33.70222812453888
          },
          {
            "url": "data:text/javascript;charset=utf-8,%0A%0A%20%20(function()%20%7B%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40param%20%7B%7B%0A%20%20%20%20%20*%20%20%20type%3A%20(string%7Cnull%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20key%3A%20(string%7Cnull%7Cundefined)%2C%0A%20%20%20%20%20*%20%20%20value%3A%20*%2C%0A%20%20%20%20%20*%20%7D%3D%7D%20options%0A%20%20%20%20%20*%2F%0A%20%20%20%20Polymer.IronMeta%20%3D%20function(options)%20%7B%0A%20%20%20%20%20%20Polymer.IronMeta%5B'%20'%5D(options)%3B%0A%0A%20%20%20%20%20%20this.type%20%3D%20(options%20%26%26%20options.type)%20%7C%7C%20'default'%3B%0A%20%20%20%20%20%20this.key%20%3D%20options%20%26%26%20options.key%3B%0A%20%20%20%20%20%20if%20(options%20%26%26%20'value'%20in%20options)%20%7B%0A%20%20%20%20%20%20%20%20this.value%20%3D%20options.value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20%2F%2F%20This%20function%20is%20used%20to%20convince%20Closure%20not%20to%20remove%20constructor%20calls%0A%20%20%20%20%2F%2F%20for%20instances%20that%20are%20not%20held%20anywhere.%20For%20example%2C%20when%0A%20%20%20%20%2F%2F%20%60new%20Polymer.IronMeta(%7B...%7D)%60%20is%20used%20only%20for%20the%20side%20effect%20of%20adding%0A%20%20%20%20%2F%2F%20a%20value.%0A%20%20%20%20Polymer.IronMeta%5B'%20'%5D%20%3D%20function()%7B%7D%3B%0A%0A%20%20%20%20Polymer.IronMeta.types%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20Polymer.IronMeta.prototype%20%3D%20%7B%0A%20%20%20%20%20%20get%20value()%20%7B%0A%20%20%20%20%20%20%20%20var%20type%20%3D%20this.type%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20this.key%3B%0A%0A%20%20%20%20%20%20%20%20if%20(type%20%26%26%20key)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20Polymer.IronMeta.types%5Btype%5D%20%26%26%20Polymer.IronMeta.types%5Btype%5D%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20set%20value(value)%20%7B%0A%20%20%20%20%20%20%20%20var%20type%20%3D%20this.type%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20this.key%3B%0A%0A%20%20%20%20%20%20%20%20if%20(type%20%26%26%20key)%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%20%3D%20Polymer.IronMeta.types%5Btype%5D%20%3D%20Polymer.IronMeta.types%5Btype%5D%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(value%20%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20type%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20type%5Bkey%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20get%20list()%20%7B%0A%20%20%20%20%20%20%20%20var%20type%20%3D%20this.type%3B%0A%0A%20%20%20%20%20%20%20%20if%20(type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20items%20%3D%20Polymer.IronMeta.types%5Bthis.type%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!items)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20return%20Object.keys(items).map(function(key)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20metaDatas%5Bthis.type%5D%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20byKey%3A%20function(key)%20%7B%0A%20%20%20%20%20%20%20%20this.key%20%3D%20key%3B%0A%20%20%20%20%20%20%20%20return%20this.value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20metaDatas%20%3D%20Polymer.IronMeta.types%3B%0A%0A%20%20%20%20Polymer(%7B%0A%0A%20%20%20%20%20%20is%3A%20'iron-meta'%2C%0A%0A%20%20%20%20%20%20properties%3A%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20type%20of%20meta-data.%20%20All%20meta-data%20of%20the%20same%20type%20is%20stored%0A%20%20%20%20%20%20%20%20%20*%20together.%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7Bstring%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%20%20value%3A%20'default'%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20key%20used%20to%20store%20%60value%60%20under%20the%20%60type%60%20namespace.%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7B%3Fstring%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20key%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20The%20meta-data%20to%20store%20or%20retrieve.%0A%20%20%20%20%20%20%20%20%20*%20%40type%20%7B*%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20String%2C%0A%20%20%20%20%20%20%20%20%20%20notify%3A%20true%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20If%20true%2C%20%60value%60%20is%20set%20to%20the%20iron-meta%20instance%20itself.%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20%20self%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20%20%20observer%3A%20'_selfChanged'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20__meta%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20Boolean%2C%0A%20%20%20%20%20%20%20%20%20%20computed%3A%20'__computeMeta(type%2C%20key%2C%20value)'%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20hostAttributes%3A%20%7B%0A%20%20%20%20%20%20%20%20hidden%3A%20true%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20__computeMeta%3A%20function(type%2C%20key%2C%20value)%20%7B%0A%20%20%20%20%20%20%20%20var%20meta%20%3D%20new%20Polymer.IronMeta(%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20type%2C%0A%20%20%20%20%20%20%20%20%20%20key%3A%20key%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20if%20(value%20!%3D%3D%20undefined%20%26%26%20value%20!%3D%3D%20meta.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20meta.value%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.value%20!%3D%3D%20meta.value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.value%20%3D%20meta.value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20return%20meta%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20get%20list()%20%7B%0A%20%20%20%20%20%20%20%20return%20this.__meta%20%26%26%20this.__meta.list%3B%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20_selfChanged%3A%20function(self)%20%7B%0A%20%20%20%20%20%20%20%20if%20(self)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.value%20%3D%20this%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20Retrieves%20meta%20data%20value%20by%20key.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40method%20byKey%0A%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20key%20The%20key%20of%20the%20meta-data%20to%20be%20returned.%0A%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20byKey%3A%20function(key)%20%7B%0A%20%20%20%20%20%20%20%20return%20new%20Polymer.IronMeta(%7B%0A%20%20%20%20%20%20%20%20%20%20type%3A%20this.type%2C%0A%20%20%20%20%20%20%20%20%20%20key%3A%20key%0A%20%20%20%20%20%20%20%20%7D).value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%7D)()%3B%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Firon-meta%2Firon-meta.html.js%0A",
            "totalBytes": 3838,
            "wastedBytes": 2271,
            "wastedPercent": 59.171443460135485
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3Bvar%20_typeof%3Dtypeof%20Symbol%3D%3D%3D%22function%22%26%26typeof%20Symbol.iterator%3D%3D%3D%22symbol%22%3Ffunction(obj)%7Breturn%20typeof%20obj%3B%7D%3Afunction(obj)%7Breturn%20obj%26%26typeof%20Symbol%3D%3D%3D%22function%22%26%26obj.constructor%3D%3D%3DSymbol%26%26obj!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20obj%3B%7D%3BPolymer(%7Bis%3A'nav-manager-legacy'%2CdesignId%3A'N13'%2Cproperties%3A%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20route%20aka%20ssts%20object%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2Froute%3A%7Btype%3AObject%7D%2Csite%3A%7Btype%3AObject%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20The%20navigation%20item%20key%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FnavKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20The%20sub%20nav%20key%20to%20get%20child%20assets%20for%20subnav%20module%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2FsubNavKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20%20The%20third%20level%20sub%20nav%20key%20to%20get%20child%20assets%20for%20subnav%20module%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20*%2FtertiaryKey%3AString%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20tag%20list%20for%20the%20current%20route%0A%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FrouteTagList%3A%7Btype%3AArray%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20un-messed%20with%20tag%20list%20for%20the%20current%20nav-key%0A%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FkeyTagList%3A%7Btype%3AArray%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20This%20is%20the%20raw%20schema%20data%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20**%2FschemaData%3A%7Btype%3AObject%2CreadOnly%3Atrue%2Cnotify%3Atrue%7D%2CapiKey%3A%7Btype%3AString%2Cvalue%3A'f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh'%7D%7D%2Cobservers%3A%5B'_handleSchemaRequest(apiKey%2C%20site.navigation.id%2C%20navKey)'%2C'_updateKeyTagList(schemaData)'%2C'_updateRouteTagList(route%2C%20schemaData)'%5D%2Cready%3Afunction%20ready()%7Bif(this.route%3D%3D%3Dundefined)%7Bthis.set('route'%2C(window.ga_data%7C%7C%7B%7D).route)%3B%7Dif(this.site%3D%3D%3Dundefined)%7Bthis.set('site'%2C(window.ga_data%7C%7C%7B%7D).site)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20Gets%20top%20level%20navigation%20tag%20items%20for%20the%20current%20site%20if%20nav%20data%20has%20loaded%0A%20%20%20%20%20%20%20%20%20%20*%2FgetCurrentSiteTags%3Afunction%20getCurrentSiteTags()%7Bif(this.schemaData%26%26this.schemaData.children)%7Breturn%20navManagerMappers.currentSiteTags(this.schemaData)%3B%7Delse%7Breturn%5B%5D%3B%7D%7D%2C%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Private%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A_schemaUrl%3Afunction%20_schemaUrl(apiKey%2Cschema%2CnavKey)%7Breturn%20ga_data.site.hosts.gannettCDNAPI%2B'%2Fargon%2Fnavigation%2F'%2Bescape(schema)%2B'%2F'%2Bescape(navKey)%2B'%2F'%3B%7D%2C_schemaParams%3Afunction%20_schemaParams(apiKey%2Csite%2CnavKey)%7Breturn%7B'apiKey'%3AapiKey%7D%3B%7D%2C_handleSchemaRequest%3Afunction%20_handleSchemaRequest(apiKey%2Cschema%2CnavKey)%7Bif(!!apiKey%26%26!!schema%26%26!!navKey)%7Bthis.%24.schemaAjax.set('url'%2Cthis._schemaUrl(apiKey%2Cschema%2CnavKey))%3Bthis.%24.schemaAjax.set('params'%2Cthis._schemaParams(apiKey%2Cschema%2CnavKey))%3B%7D%7D%2C_handleSchemaResponse%3Afunction%20_handleSchemaResponse(evt)%7Bthis._setSchemaData(evt.detail.response)%3B%7D%2C_updateKeyTagList%3Afunction%20_updateKeyTagList(schema)%7Bif(schema)%7Bthis._setKeyTagList(navManagerMappers.schemaToKeyTagList(schema))%3B%7D%7D%2C_updateRouteTagList%3Afunction%20_updateRouteTagList(route%2Cschema)%7Bif(!!route%26%26!!schema)%7Bthis._setRouteTagList(navManagerMappers.schemaToRouteTagList(schema%2Croute))%3B%7D%7D%7D)%3Bvar%20navManagerMappers%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20schemaToRouteTagList(schema%2C%20route%2C%20isContent)%0A%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20*%20schema%20-%20The%20schema%20returned%20from%20argon%0A%20%20%20%20%20%20%20%20%20%20*%20route%20-%20The%20ga_data.route%20value%0A%20%20%20%20%20%20%20%20%20%20*%20isContent%20-%20a%20bool%20flag%20returned%20if%20the%20current%20page%20is%20content%20within%20the%20route%0A%20%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20%20**%2FnavItemToTag%3Afunction%20navItemToTag(x)%7Breturn%7Bkey%3Ax.key%2Curl%3Awindow.ga_data.route.cobrand%26%26!new%20RegExp('%5E(%3F%3A%5Ba-z%5D%2B%3A)%3F%2F%2F'%2C'i').test(x.url)%3F''%2Bwindow.ga_data.site.publicationURL%2Bx.url.substring(1)%3Ax.url%2Cname%3Ax.name%2Chidden%3Ax.visibility%3D%3D%3D'hidden'%3Ftrue%3Afalse%2Cchildren%3Ax.children%7D%3B%7D%2CcurrentSiteTags%3Afunction%20currentSiteTags(schema)%7Bvar%20children%3DnavManagerMappers._children(schema)%3Bvar%20injectedHome%3D%2F%2F%20If%20the%20schema%20does%20not%20have%20a%20home%20entry%0A!navManagerMappers._hasHome(schema)%3F%2F%2F%20Define%20the%20injected%20home%20entry%0A%7B'key'%3A'home'%2C'url'%3A'%2F'%2C'name'%3A'Home'%7D%3A%2F%2F%20Otherwise%20use%20null%0Anull%3Breturn%5B%5D.concat(navManagerMappers.maybeToArray(injectedHome)%2Cchildren).map(navManagerMappers.navItemToTag)%3B%7D%2C_ensureObj%3Afunction%20_ensureObj(x)%7Bif(!Array.isArray(x)%26%26(typeof%20x%3D%3D%3D'undefined'%3F'undefined'%3A_typeof(x))%3D%3D%3D'object'%26%26x!%3D%3Dnull)%7Breturn%20x%3B%7Delse%7Breturn%7B%7D%3B%7D%7D%2CschemaToKeyTagList%3Afunction%20schemaToKeyTagList(schema)%7Breturn%20navManagerMappers._children(schema).map(navManagerMappers.navItemToTag)%3B%7D%2CschemaToRouteTagList%3Afunction%20schemaToRouteTagList(schema%2Croute)%7Bvar%20taglist%3D%5B%5D%3Broute%3DnavManagerMappers._ensureObj(route)%3Bif(route.sectionName%3D%3D%3D'home'%7C%7C!route.sectionName)%7Btaglist%3Dthis._getTopLevel(schema)%3B%7Delse%7Bvar%20isContent%3Droute.contentType!%3D'section'%3Bif(isContent)%7Btaglist%3Dthis._getContentTagList(schema%2Croute)%3B%7Delse%7Btaglist%3Dthis._getFrontTagList(schema)%3B%7D%7Dif(taglist.length%3C2)%7Btaglist%3Dthis._getTopLevel(schema)%3B%7Dreturn%20taglist%3B%7D%2C_checkForNavDupe%3Afunction%20_checkForNavDupe(baseTag%2CtagsToJoin)%7Bif(tagsToJoin%26%26tagsToJoin.length)%7Bvar%20key%3DbaseTag.key%2Cname%3DbaseTag.name%2Curl%3DbaseTag.url%3Bvar%20firstTag%3DtagsToJoin%5B0%5D%3Bif(!!key%26%26key%3D%3D%3DfirstTag.key%26%26!!name%26%26name%3D%3D%3DfirstTag.name%26%26!!url%26%26url.replace(%2F%5C%2F%2Fg%2C'')%3D%3D%3DfirstTag.url.replace(%2F%5C%2F%2Fg%2C''))%7BtagsToJoin.shift()%3B%7D%7Dreturn%20tagsToJoin%3B%7D%2C_getContentTagList%3Afunction%20_getContentTagList(schema%2Croute)%7Bvar%20home%3DnavManagerMappers._getHome(schema)%3Bvar%20level1%3DnavManagerMappers._level1(schema%2Croute.sectionName%2Croute.subsection)%3Bvar%20level2%3DnavManagerMappers._level2(level1%2Croute.subsection)%3Bvar%20level3Sisters%3DnavManagerMappers._sisters(level2%2Croute.topic)%3Bthis._checkForNavDupe(level2%2Clevel3Sisters)%3Bvar%20level2Sisters%3DnavManagerMappers._level2Sisters(level1%2Clevel2%2Croute.subsection)%3Blevel1%3DnavManagerMappers._filterLevel1(level1%2Croute.subsection)%3Blevel2%3DnavManagerMappers._filterLevel2(level2%2Croute.contentType!%3D'section')%3Breturn%5B%5D.concat(%5Bhome%5D%2CnavManagerMappers.maybeToArray(level2)%2Clevel3Sisters%2Clevel2Sisters%2CnavManagerMappers.maybeToArray(level1)).map(navManagerMappers.navItemToTag)%3B%7D%2C_getFrontTagList%3Afunction%20_getFrontTagList(schema)%7Bvar%20home%3DnavManagerMappers._getHome(schema)%3Bvar%20root%3DnavManagerMappers._findNodeByURL(schema)%3Bvar%20taglist%3D%5Bhome%5D%3Bif(root.node)%7Bif(root.node.children%26%26root.node.children.length)%7Btaglist%3D%5B%5D.concat(%5Bhome%5D%2CnavManagerMappers._sisters(root.node%2Croot.node.key))%3B%7Delse%20if(root.parent)%7Bvar%20siblings%3DnavManagerMappers._sisters(root.parent%2Croot.parent.key)%3Btaglist%3Dsiblings.filter(function(x)%7Breturn%20x.key!%3D%3Droot.node.key%3B%7D)%3Bif(!navManagerMappers._hasHome(schema))%7Btaglist%3D%5B%5D.concat(%5Bhome%5D%2Ctaglist)%3B%7D%7D%7Dreturn%20taglist%3B%7D%2C_getTopLevel%3Afunction%20_getTopLevel(schema)%7Breturn%20navManagerMappers._children(schema).map(navManagerMappers.navItemToTag)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20%20*%20Returns%20an%20empty%20list%20is%20null%2C%20otherwise%20returns%20%5Bmaybe%5D%0A%20%20%20%20%20%20%20%20%20%20**%2FmaybeToArray%3Afunction%20maybeToArray(maybe)%7Bif(maybe%3D%3D%3Dnull%7C%7Cmaybe%3D%3D%3Dundefined)return%5B%5D%3Breturn%5Bmaybe%5D%3B%7D%2C_getHome%3Afunction%20_getHome(schema)%7Bvar%20home%3DnavManagerMappers._getSection(schema%2C'home')%3Bif(!home)%7Breturn%7B'key'%3A'home'%2C'url'%3A'%2F'%2C'name'%3A'Home'%7D%3B%7Delse%7Breturn%20home%3B%7D%7D%2C_hasHome%3Afunction%20_hasHome(schema)%7Breturn!!navManagerMappers._getSection(schema%2C'home')%3B%7D%2C_children%3Afunction%20_children(schema)%7Bif(navManagerMappers._hasChildren(schema))%7Breturn%20schema.children%3B%7Delse%7Breturn%5B%5D%3B%7D%7D%2C_level1%3Afunction%20_level1(schema%2CsectionName%2Csubsection)%7Breturn%20navManagerMappers._getSection(schema%2CsectionName)%3B%7D%2C_slugify%3Afunction%20_slugify(text)%7Breturn%20text.toString().toLowerCase().replace(%2F%5Cs%2B%2Fg%2C'-')%2F%2F%20Replace%20spaces%20with%20-%0A.replace(%2F%5B%5E%5Cw%5C-%5D%2B%2Fg%2C'')%2F%2F%20Remove%20all%20non-word%20chars%0A.replace(%2F%5C-%5C-%2B%2Fg%2C'-')%2F%2F%20Replace%20multiple%20-%20with%20single%20-%0A.replace(%2F%5E-%2B%2F%2C'')%2F%2F%20Trim%20-%20from%20start%20of%20text%0A.replace(%2F-%2B%24%2F%2C'')%3B%2F%2F%20Trim%20-%20from%20end%20of%20text%0A%7D%2C_filterLevel1%3Afunction%20_filterLevel1(level1%2Csubsection)%7Bif(!subsection)%7B%2F%2F%20If%20subsection%20is%20not%20given%2C%20don't%20display%20level1%0Areturn%20null%3B%7Delse%7B%2F%2F%20otherwise%20return%20level1%0Areturn%20level1%3B%7D%7D%2C_filterLevel2%3Afunction%20_filterLevel2(level2%2CisContent)%7Bif(!isContent)%7B%2F%2F%20If%20we're%20not%20on%20a%20content%20page%2C%20suppress%20the%20level2%0Areturn%20null%3B%7Delse%7B%2F%2F%20otherwise%20return%20level1%0Areturn%20level2%3B%7D%7D%2C_level2%3Afunction%20_level2(level1%2Csubsection)%7Breturn%20navManagerMappers._getSection(level1%2Csubsection)%3B%7D%2C_level2Sisters%3Afunction%20_level2Sisters(level1%2Clevel2%2Csubsection)%7B%2F%2F%20If%20there%20is%20a%20level3%2C%20supress%20the%20level2%20sisters%0Aif(navManagerMappers._hasChildren(level2))%7Breturn%5B%5D%3B%7Delse%7Breturn%20navManagerMappers._sisters(level1%2Csubsection)%3B%7D%7D%2C_sisters%3Afunction%20_sisters(parent%2Ckey)%7Bvar%20sisters%3D%5B%5D%3Bif(navManagerMappers._hasChildren(parent))%7Breturn%20parent.children.filter(function(x)%7Breturn%20x.key!%3Dkey%3B%7D)%3B%7Dreturn%20sisters%3B%7D%2C_hasChildren%3Afunction%20_hasChildren(item)%7Breturn%20item%26%26item.children%26%26item.children.length%3B%7D%2C_getSection%3Afunction%20_getSection(a%2Ckey)%7Bif(key%26%26navManagerMappers._hasChildren(a))%7Bfor(var%20i%3D0%3Bi%3Ca.children.length%3Bi%2B%2B)%7Bvar%20x%3Da.children%5Bi%5D%3Bif(x.key%3D%3Dkey)return%20x%3B%7D%7Dreturn%20null%3B%7D%2C%2F%2F%20used%20to%20hold%20the%20node%20and%20the%20level%20at%20which%20it%20was%20found.%0A%2F%2FfoundNodes%3A%20%5B%5D%2C%0A_findNodeByURL%3Afunction%20_findNodeByURL(schema)%7Bvar%20foundNodes%3Dthis._getNodesByURL(schema%2Cwindow.location.pathname%2C0%2C%7B%7D%2C%5B%5D)%3Bvar%20topNode%3D%7B'node'%3A%7B%7D%7D%3Bif(foundNodes.length)%7B%2F%2F%20arbitrary%20large%20number%0Avar%20lowest%3D1000%3BfoundNodes.forEach(function(node)%7Bif(node.level%3Clowest)%7Blowest%3Dnode.level%3BtopNode%3Dnode%3B%7D%7D)%3B%7Dreturn%20topNode%3B%7D%2C_getNodesByURL%3Afunction%20_getNodesByURL(root%2Cpath%2Clevel%2Cparent%2Carr)%7Bif(root.url%3D%3D%3Dpath)%7Barr.push(%7B'node'%3Aroot%2C'level'%3Alevel%2C'parent'%3Aparent%7D)%3B%7Dif(root.children)%7Bfor(var%20i%3D0%3Bi%3Croot.children.length%3Bi%2B%2B)%7Bthis._getNodesByURL(root.children%5Bi%5D%2Cpath%2Clevel%2B1%2Croot%2Carr)%3B%7D%7Dreturn%20arr%3B%7D%7D%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2F..%2Fmaps%2Felements%2Fnav%2Fnav-manager%2Fnav-manager.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Felements%2Fnav%2Fnav-manager%2Fnav-manager.html.js%0A",
            "totalBytes": 9348,
            "wastedBytes": 2084,
            "wastedPercent": 22.29353872486093
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20scheduled%3Dfalse%3Bvar%20beforeRenderQueue%3D%5B%5D%3Bvar%20afterRenderQueue%3D%5B%5D%3Bfunction%20schedule()%7Bscheduled%3Dtrue%3B%2F%2F%20before%20next%20render%0ArequestAnimationFrame(function()%7Bscheduled%3Dfalse%3BflushQueue(beforeRenderQueue)%3B%2F%2F%20after%20the%20render%0AsetTimeout(function()%7BrunQueue(afterRenderQueue)%3B%7D)%3B%7D)%3B%7Dfunction%20flushQueue(queue)%7Bwhile(queue.length)%7BcallMethod(queue.shift())%3B%7D%7Dfunction%20runQueue(queue)%7Bfor(var%20i%3D0%2Cl%3Dqueue.length%3Bi%3Cl%3Bi%2B%2B)%7BcallMethod(queue.shift())%3B%7D%7Dfunction%20callMethod(info)%7Bvar%20context%3Dinfo%5B0%5D%3Bvar%20callback%3Dinfo%5B1%5D%3Bvar%20args%3Dinfo%5B2%5D%3Btry%7Bcallback.apply(context%2Cargs)%3B%7Dcatch(e)%7BsetTimeout(function()%7Bthrow%20e%3B%7D)%3B%7D%7Dfunction%20flush()%7Bwhile(beforeRenderQueue.length%7C%7CafterRenderQueue.length)%7BflushQueue(beforeRenderQueue)%3BflushQueue(afterRenderQueue)%3B%7Dscheduled%3Dfalse%3B%7D%2F**%0A%20%20%20*%20Module%20for%20scheduling%20flushable%20pre-render%20and%20post-render%20tasks.%0A%20%20%20*%0A%20%20%20*%20%40namespace%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Module%20for%20scheduling%20flushable%20pre-render%20and%20post-render%20tasks.%0A%20%20%20*%2FPolymer.RenderStatus%3D%7B%2F**%0A%20%20%20%20%20*%20Enqueues%20a%20callback%20which%20will%20be%20run%20before%20the%20next%20render%2C%20at%0A%20%20%20%20%20*%20%60requestAnimationFrame%60%20timing.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20is%20useful%20for%20enqueuing%20work%20that%20requires%20DOM%20measurement%2C%0A%20%20%20%20%20*%20since%20measurement%20may%20not%20be%20reliable%20in%20custom%20element%20callbacks%20before%0A%20%20%20%20%20*%20the%20first%20render%2C%20as%20well%20as%20for%20batching%20measurement%20tasks%20in%20general.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20Tasks%20in%20this%20queue%20may%20be%20flushed%20by%20calling%20%60Polymer.RenderStatus.flush()%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.RenderStatus%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20context%20Context%20object%20the%20callback%20function%20will%20be%20bound%20to%0A%20%20%20%20%20*%20%40param%20%7Bfunction(...*)%3Avoid%7D%20callback%20Callback%20function%0A%20%20%20%20%20*%20%40param%20%7B!Array%3D%7D%20args%20An%20array%20of%20arguments%20to%20call%20the%20callback%20function%20with%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FbeforeNextRender%3Afunction%20beforeNextRender(context%2Ccallback%2Cargs)%7Bif(!scheduled)%7Bschedule()%3B%7DbeforeRenderQueue.push(%5Bcontext%2Ccallback%2Cargs%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Enqueues%20a%20callback%20which%20will%20be%20run%20after%20the%20next%20render%2C%20equivalent%0A%20%20%20%20%20*%20to%20one%20task%20(%60setTimeout%60)%20after%20the%20next%20%60requestAnimationFrame%60.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20This%20method%20is%20useful%20for%20tuning%20the%20first-render%20performance%20of%20an%0A%20%20%20%20%20*%20element%20or%20application%20by%20deferring%20non-critical%20work%20until%20after%20the%0A%20%20%20%20%20*%20first%20paint.%20%20Typical%20non-render-critical%20work%20may%20include%20adding%20UI%0A%20%20%20%20%20*%20event%20listeners%20and%20aria%20attributes.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.RenderStatus%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20context%20Context%20object%20the%20callback%20function%20will%20be%20bound%20to%0A%20%20%20%20%20*%20%40param%20%7Bfunction(...*)%3Avoid%7D%20callback%20Callback%20function%0A%20%20%20%20%20*%20%40param%20%7B!Array%3D%7D%20args%20An%20array%20of%20arguments%20to%20call%20the%20callback%20function%20with%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2FafterNextRender%3Afunction%20afterNextRender(context%2Ccallback%2Cargs)%7Bif(!scheduled)%7Bschedule()%3B%7DafterRenderQueue.push(%5Bcontext%2Ccallback%2Cargs%5D)%3B%7D%2C%2F**%0A%20%20%20%20%20*%20Flushes%20all%20%60beforeNextRender%60%20tasks%2C%20followed%20by%20all%20%60afterNextRender%60%0A%20%20%20%20%20*%20tasks.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40memberof%20Polymer.RenderStatus%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%2Fflush%3Aflush%7D%3B%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fvendor%2Fcomponents%2Fpolymer%2Flib%2Futils%2Frender-status.html.js%0A",
            "totalBytes": 3121,
            "wastedBytes": 2072,
            "wastedPercent": 66.38897789170137
          }
        ],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 383196,
        "sortedBy": [
          "wastedBytes"
        ],
        "debugData": {
          "type": "debugdata",
          "metricSavings": {
            "FCP": 0,
            "LCP": 0
          }
        }
      },
      "guidanceLevel": 3
    },
    "unused-css-rules": {
      "id": "unused-css-rules",
      "title": "Reduce unused CSS",
      "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
      "score": 1,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 0,
      "numericUnit": "millisecond",
      "displayValue": "",
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "opportunity",
        "headings": [],
        "items": [],
        "overallSavingsMs": 0,
        "overallSavingsBytes": 0,
        "sortedBy": [
          "wastedBytes"
        ],
        "debugData": {
          "type": "debugdata",
          "metricSavings": {
            "FCP": 0,
            "LCP": 0
          }
        }
      },
      "guidanceLevel": 1
    },
    "unused-javascript": {
      "id": "unused-javascript",
      "title": "Reduce unused JavaScript",
      "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "numericValue": 600,
      "numericUnit": "millisecond",
      "displayValue": "Est savings of 130 KiB",
      "metricSavings": {
        "FCP": 0,
        "LCP": 600
      },
      "details": {
        "type": "opportunity",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "subItemsHeading": {
              "key": "source",
              "valueType": "code"
            },
            "label": "URL"
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "subItemsHeading": {
              "key": "sourceBytes"
            },
            "label": "Transfer Size"
          },
          {
            "key": "wastedBytes",
            "valueType": "bytes",
            "subItemsHeading": {
              "key": "sourceWastedBytes"
            },
            "label": "Est Savings"
          }
        ],
        "items": [
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "totalBytes": 131284,
            "wastedBytes": 76609,
            "wastedPercent": 58.353554715921895
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "totalBytes": 83689,
            "wastedBytes": 35961,
            "wastedPercent": 42.97004210733347,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "source": "…node_modules/@glidejs/glide/dist/glide.esm.js",
                  "sourceBytes": 6829,
                  "sourceWastedBytes": 6093
                },
                {
                  "source": "…elements-lit/partner/partner-gci-analytics/partner-gci-analytics.js",
                  "sourceBytes": 2523,
                  "sourceWastedBytes": 2372
                },
                {
                  "source": "…elements-lit/partner/partner-slot/partner-slot.js",
                  "sourceBytes": 5727,
                  "sourceWastedBytes": 2284
                },
                {
                  "source": "…elements-lit/promo/promo-story-thumb-small/promo-story-thumb-small.js",
                  "sourceBytes": 1785,
                  "sourceWastedBytes": 1726
                },
                {
                  "source": "…elements-lit/nav/nav-share-buttons/nav-share-buttons.js",
                  "sourceBytes": 1781,
                  "sourceWastedBytes": 1715
                }
              ]
            }
          },
          {
            "url": "data:text/javascript;charset=utf-8,'use%20strict'%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%20Adds%20header%20bidding%20functionality%20to%20an%20ad.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%20window.ga_data.behaviors.PartnerBid%0A%20%20%20%20%20*%2Fvar%20PartnerBid%3D%7B%2F**%0A%20%20%20%20%20%20%20%20%20*%20Kicks%20off%20prebid%20integration%0A%20%20%20%20%20%20%20%20%20*%2Fready%3Afunction%20ready()%7Bvar%20_this%3Dthis%3Bif(this.inactive%7C%7Cthis._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))return%3Bwindow.pbjs%3Dwindow.pbjs%7C%7C%7B%7D%3Bwindow.pbjs.que%3Dwindow.pbjs.que%7C%7C%5B%5D%3Bwindow.googletag%3Dwindow.googletag%7C%7C%7B%7D%3Bwindow.googletag.cmd%3Dwindow.googletag.cmd%7C%7C%5B%5D%3B%2F%2F%20Get%20debug%20params%0Athis.pbDebug%3Dthis.getUrlParamValue('pb_debug')%3Bthis.apsDebug%3Dthis.getUrlParamValue('aps_debug')%3Bif(this._getNested(this%2C'apsUnit'%2C'mediaType')%3D%3D%3D'video')%7Bthis.aps%3Dthis.apsDebug%7C%7Cthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%26%26this.placementConfig.aps%3B%7Dif(!this.prebid%26%26!this.aps)return%3B%2F%2F%20Set%20up%20bidding%20barriers%0Athis.apsSetup%3Dnew%20this._deferred()%3Bthis.pbSetup%3Dnew%20this._deferred()%3B%2F%2F%20Set%20ID%20if%20not%20already%20set%0Aif(!this.id)%7Bwindow.ga_data.adId%3Dwindow.ga_data.adId%7C%7C0%3Bthis.id%3D'partner-position-'%2Bwindow.ga_data.adId%2B%2B%3B%7Dif(!this.slotId)%7Bthis.slotId%3Dthis.id%3B%7D%2F%2F%20Start%0Athis._refreshBids()%3B%2F%2F%20Lazy%20fetch%20bids%20for%20slots%20that%20are%20lazy%20fetching%0Aif(!this.isVideo%26%26this.lazyFetch)%7Bthis.defineDefer.promise.then(function()%7B_this._setupVendors()%3B%7D)%3B%7Delse%7Bthis._setupVendors()%3B%7D%7D%2C_setupVendors%3Afunction%20_setupVendors()%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%3B%2F%2F%20Setup%20Prebid.js%20if%20enabled%0Aif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bthis._log('Prebid%20setting%20up')%3Bif(this.isVideo)%7Bthis._setupVideoPrebid(prebidSiteConfig)%3B%7Delse%7Bthis._setupPreBids(prebidSiteConfig)%3B%7D%7D%2F%2F%20setup%20APS%20if%20enabled%0Aif((this._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps'%2C'enabled')%7C%7Cthis.apsDebug)%26%26this.aps)%7Bthis._log('APS%20setting%20up')%3Bthis._setupAPS()%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20Amazon%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_setupAPS%3Afunction%20_setupAPS()%7Bif(!this.apsUnit)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bthis.apsUnit%3D%7BslotID%3A'videoPlayer_plcmt'%2B(this.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt'))%7C%7C4%2Csizes%3Athis._getApsSizes(this.sizes)%7D%3B%7Dthis.apsSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gets%20acceptable%20APS%20sizes%20from%20a%20list%20of%20sizes%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20sizeList%20List%20of%20DFP%20sizes%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20List%20of%20sizes%20to%20pass%20to%20APS%0A%20%20%20%20%20%20%20%20%20*%2F_getApsSizes%3Afunction%20_getApsSizes(sizeList)%7Bvar%20apsSizes%3D%5B%5D%3Bfor(var%20i%3D0%3Bi%3CsizeList.length%3Bi%2B%2B)%7Bif(sizeList%5Bi%5D!%3D%3D'fluid')%7BapsSizes.push(sizeList%5Bi%5D)%3B%7D%7Dreturn%20apsSizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Get%20current%20player%20dimensions%20for%20prebid%20params%0A%20%20%20%20%20%20%20%20%20*%2F_getVideoSize%3Afunction%20_getVideoSize()%7Bif(this.videoHeight%26%26this.videoWidth)return%3Bthis.videoHeight%3DMath.round(this.%24.still%26%26this.%24.still.offsetHeight%3Fthis.%24.still.offsetHeight%3Awindow.innerWidth*.5625)%3Bthis.videoWidth%3DMath.round(this.%24.still%26%26this.%24.still.offsetWidth%3Fthis.%24.still.offsetWidth%3Awindow.innerWidth)%3B%7D%2C_setupVideoPrebid%3Afunction%20_setupVideoPrebid(prebidSiteConfig)%7Bthis._log('Setting%20up%20video%20prebid')%3Bthis.bids%3D%5B%5D%3Bthis._getVideoSize()%3Bvar%20ssts%3Dthis.getRawData().ssts%3Bvar%20sz%3Dthis.isMobile%3Fthis.adSettings.sizes.mobile%3Athis.adSettings.sizes.desktop%2CappNexusMainConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CappNexusVideoConfig%3Dthis.prebidConfig.appNexus%7C%7C%7B%7D%2CrubiconMainConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CrubiconVideoConfig%3Dthis.prebidConfig.rubicon%7C%7C%7B%7D%2CopenXConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.openx%2Cthis.prebidConfig.openx%7C%7C%7B%7D)%2CindexConfig%3DObject.assign(%7B%7D%2CprebidSiteConfig.index%2Cthis.prebidConfig.index%7C%7C%7B%7D)%2CstickyAdsConfig%3Dthis.prebidConfig.stickyAds%7C%7C%7B%7D%2CsonobiConfig%3Dthis.prebidConfig.sonobi%7C%7C%7B%7D%2CpubmaticConfig%3Dthis.prebidConfig.pubmatic%7C%7C%7B%7D%2CtripleliftConfig%3Dthis.prebidConfig.triplelift%7C%7C%7B%7D%2CundertoneConfig%3Dthis.prebidConfig.undertone%7C%7C%7B%7D%2Cgpid%3D'%2F'%2Bthis.Preroll.iu%2B'%2F'%2Bthis.slotId%3Bif(this._isEnabled('appNexus'%2CappNexusMainConfig)%26%26appNexusVideoConfig.enabled)this._setupAppNexusVideo(appNexusVideoConfig%2Cssts)%3Bif(this._isEnabled('rubicon'%2CrubiconMainConfig)%26%26rubiconVideoConfig.enabled)this._setupRubiconVideo(rubiconVideoConfig%2Cssts)%3Bif(this._isEnabled('openx'%2CopenXConfig))this._setupOpenXVideo(openXConfig)%3Bif(this._isEnabled('index'%2CindexConfig))this._setupIndexVideo(indexConfig)%3Bif(this._isEnabled('stickyads'%2CstickyAdsConfig))this._setupStickyAdsVideo(stickyAdsConfig)%3Bif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobiVideo(sonobiConfig)%3Bif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmaticConfigVideo(pubmaticConfig)%3Bif(this._isEnabled('triplelift'%2CtripleliftConfig))this._setupTripleliftVideo(tripleliftConfig)%3Bif(this._isEnabled('undertone'%2CundertoneConfig))this._setupUndertoneVideo(undertoneConfig)%3Bthis._populateUserIds()%3Bthis.addAdUnits(%5B%5Bsz.width%2Csz.height%5D%5D%2Cgpid)%3B%7D%2C_populateUserIds%3Afunction%20_populateUserIds()%7Bvar%20getNested%3Dthis._getNested%2Cutils%3Dga_data.utils%2CgetParam%3Dutils.getUrlParamValue%2Cpbc%3DgetNested(ga_data%2C'site'%2C'ads'%2C'prebid')%2CliveRampEnabled%3Dutils.isCookieLessBrowser()%26%26getNested(pbc%2C'identityLink'%2C'enabled')%7C%7CgetParam('identitylink')%2CsharedIdEnabled%3DgetNested(pbc%2C'sharedId'%2C'enabled')%7C%7CgetParam('sharedid')%3Bif(!liveRampEnabled%26%26!sharedIdEnabled)%7Breturn%3B%7Dvar%20anonId%3Dvoid%200%2CliverampId%3Dvoid%200%3Bif(sharedIdEnabled)%7BanonId%3Dutils.anonId%3B%7Dif(liveRampEnabled)%7BliverampId%3Dutils.lrEnv%3B%7Dthis.bids.forEach(function(b)%7Bb.userId%3D%7B%7D%3Bb.userIdAsEids%3D%5B%5D%3Bif(liveRampEnabled%26%26liverampId)%7Bb.userId.idl_env%3DliverampId%3Bb.userIdAsEids.push(%7Bsource%3A'liveramp.com'%2Cuids%3A%5B%7Bid%3AliverampId%2Catype%3A3%7D%5D%7D)%3B%7Dif(sharedIdEnabled%26%26anonId)%7Bb.userId.sharedid%3D%7B'id'%3AanonId%7D%3Bb.userIdAsEids.push(%7Bsource%3A'pubcid.org'%2Cuids%3A%5B%7Bid%3AanonId%2Catype%3A1%7D%5D%7D)%3B%7D%7D)%3B%7D%2C_setupAppNexusVideo%3Afunction%20_setupAppNexusVideo(config%2Cssts)%7Bvar%20placementId%3Dthis.getUrlParamValue('pb_video_id')%7C%7Cconfig.placementId%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(placementId)%7Bthis.bids.push(%7Bbidder%3A'appnexusAst'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cposition%3A%5Bthis.placement%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3Bthis._log('Adding%20video%20ad%20unit%20placement'%2CplacementId)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-302%0A%20%20%20%20%20%20%20%20%20*%20http%3A%2F%2Fprebid.org%2Fdev-docs%2Fbidders%2Frubicon.html%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubiconVideo%3Afunction%20_setupRubiconVideo(config%2Cssts)%7Bvar%20getNested%3Dthis._getNested%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(ssts.topic)%7BtopicArr.push(ssts.topic)%3B%7Dthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.accountId%2CsiteId%3Aconfig.siteId%2CzoneId%3Aconfig.zoneId%2Cvideo%3A%7Blanguage%3A'en'%7D%2Cinventory%3A%7Bbrandsafety%3Athis._getBrandSafety()%2Cdomain%3A%5BgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%5D%2Csection%3A%5Bssts.section%7C%7C''%5D%2Csubsection%3A%5Bssts.subsection%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-395%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenXVideo%3Afunction%20_setupOpenXVideo(config)%7Bthis.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3Aconfig.unit.toString()%2CdelDomain%3Aconfig.domain%2Cvideo%3A%7Burl%3Athis.placementConfig.iframed%3Fdocument.referrer%3Awindow.location.href%7D%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-420%0A%20%20%20%20%20%20%20%20%20*%2F_setupIndexVideo%3Afunction%20_setupIndexVideo(config)%7Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(params%26%26params.id%26%26params.siteId)%7Bthis.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7Bid%3Aparams.id%2CsiteID%3Aparams.siteId%2Cvideo%3A%7BsiteID%3Aparams.siteId%2CplayerType%3Aconfig.playerType%2Cprotocols%3Aconfig.supportedVastVersions%2Cmaxduration%3Aconfig.maxDuration%7D%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-332%0A%20%20%20%20%20%20%20%20%20*%2F_setupStickyAdsVideo%3Afunction%20_setupStickyAdsVideo(config)%7Bif(config.zoneId)%7Bthis.bids.push(%7Bbidder%3A'stickyadstv'%2Cparams%3A%7BzoneId%3Aconfig.zoneId%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FGVP-530%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobiVideo%3Afunction%20_setupSonobiVideo(config)%7Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%3Bvar%20TagID%3Dthis._getNested(config%2Cplatform%2C'TagID')%3Bif(TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3ATagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fjira.gannett.com%2Fbrowse%2FWP-4177%0A%20%20%20%20%20%20%20%20%20*%20https%3A%2F%2Fcommunity.pubmatic.com%2Fdisplay%2FOP%2FPubMatic%2BPrebid.js%2BAdapter%2BParameters%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmaticConfigVideo%3Afunction%20_setupPubmaticConfigVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bvar%20params%3Dthis.isMobile%3Fconfig.mobile%3Aconfig.desktop%3Bif(config.publisherId)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.publisherId%2CadSlot%3Aparams.adSlot%2Cvideo%3A%7Bapi%3Aconfig.supportedVpaidVersions%2Ch%3Athis.videoHeight%2Clinearity%3A1%2Cmaxduration%3Aconfig.maxDuration%2Cmimes%3Aconfig.mimeTypes%2Cminduration%3Aconfig.minDuration%2Cplacement%3Aconfig.placement%2Cplaybackmethod%3Aconfig.playbackmethod%2Cprotocols%3Aconfig.supportedVastVersions%2Cskippable%3Aconfig.skippable%2Cstartdelay%3A0%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%7D%2C_setupTripleliftVideo%3Afunction%20_setupTripleliftVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aconfig.inventoryCode%2Cvideo%3A%7Bcontext%3Aconfig.context%2Ch%3Athis.videoHeight%2Cplacement%3Aconfig.placement%2Cw%3Athis.videoWidth%7D%7D%7D)%3B%7D%2C_setupUndertoneVideo%3Afunction%20_setupUndertoneVideo()%7Bvar%20config%3Darguments.length%3E0%26%26arguments%5B0%5D!%3D%3Dundefined%3Farguments%5B0%5D%3A%7B%7D%3Bthis.bids.push(%7Bbidder%3A'undertone'%2Cparams%3A%7BplacementId%3Aconfig.placementId%2CpublisherId%3Aconfig.publisherId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Setups%20bidder%20adapters%20for%20our%20header%20bidders%20that%20are%20included%20in%20prebid.js%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20prebidSiteConfig%20Site%20specific%20config%20object%20for%20prebid%0A%20%20%20%20%20%20%20%20%20*%2F_setupPreBids%3Afunction%20_setupPreBids(prebidSiteConfig)%7Bvar%20adSize%3Dvoid%200%2CadSizeStr%3Dvoid%200%2CgetNested%3Dthis._getNested%2CadCount%3Dthis.adCount%7C%7Cthis.getAdCount()%2CadUnitPath%3Dthis._generatePath()%2CadUnitSizes%3Dthis._filterFluidSize(this.sizes)%2Clocation%3Dthis.btf%3F'btf'%3A'atf'%2Csection%3DgetNested(window%2C'ga_data'%2C'route'%2C'sectionName')%2Cssts%3DgetNested(window%2C'ga_data'%2C'route'%2C'ssts')%7C%7C''%2CacceptedSizes%3DprebidSiteConfig.sizes%2CappNexusConfig%3DprebidSiteConfig.appnexus%7C%7C%7B%7D%2CaolConfig%3DprebidSiteConfig.aol%7C%7C%7B%7D%2CcriteoConfig%3DprebidSiteConfig.criteo%7C%7C%7B%7D%2CixConfig%3DprebidSiteConfig.ix%7C%7C%7B%7D%2ConeMobileConfig%3DprebidSiteConfig.onemobile%7C%7C%7B%7D%2CopenxConfig%3DprebidSiteConfig.openx%7C%7C%7B%7D%2CpubmaticConfig%3DprebidSiteConfig.pubmatic%7C%7C%7B%7D%2CsonobiConfig%3DprebidSiteConfig.sonobi%7C%7C%7B%7D%2CrubiconConfig%3DprebidSiteConfig.rubicon%7C%7C%7B%7D%2CtripleLiftConfig%3DprebidSiteConfig.triplelift%7C%7C%7B%7D%2CkargoConfig%3DprebidSiteConfig.kargo%7C%7C%7B%7D%2CtrustxConfig%3DprebidSiteConfig.trustx%7C%7C%7B%7D%2CyieldmoConfig%3DprebidSiteConfig.yieldmo%7C%7C%7B%7D%3Bthis.bids%3D%5B%5D%3B%2F%2F%20Check%20to%20see%20if%20this%20slot%20has%20a%20size%20that%20we%20can%20bid%20on%0AadSize%3Dthis._getMaxSize(adUnitSizes%2CacceptedSizes)%3Bif(!adSize%7C%7Cthis.inactive)%7Bthis._log('Inactive%2FNo%20valid%20sizes%20for%20bidding.')%3Breturn%20this.prebid%3Dfalse%3B%7DadSizeStr%3DadSize%5B0%5D%2B'x'%2BadSize%5B1%5D%3B%2F%2F%20Sonobi%20Adapter%20Setup%0Aif(this._isEnabled('sonobi'%2CsonobiConfig))this._setupSonobi(sonobiConfig%2CadUnitPath)%3B%2F%2F%20Criteo%20Adapter%20Setup%0Aif(this._isEnabled('criteo'%2CcriteoConfig))this._setupCriteo(criteoConfig%2CadUnitSizes)%3B%2F%2F%20Index%20Exchange%20Adapter%20Setup%0Aif(this._isEnabled('ix'%2CixConfig))this._setupIx(ixConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20OpenX%20Adapter%20Setup%0Aif(this._isEnabled('openx'%2CopenxConfig))this._setupOpenX(openxConfig%2CadUnitSizes%2Csection)%3B%2F%2F%20Rubicon%20Adapter%20Setup%0Aif(this._isEnabled('rubicon'%2CrubiconConfig))this._setupRubicon(rubiconConfig%2Csection%2Cssts%2Clocation%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('appNexus'%2CappNexusConfig))this._setupAppNexus(appNexusConfig%2CadUnitSizes%2Csection%2Cssts%2CadCount)%3B%2F%2F%20AppNexus%20Adapter%20Setup%0Aif(this._isEnabled('tripleLift'%2CtripleLiftConfig))this._setupTripleLift(tripleLiftConfig%2CadUnitSizes)%3B%2F%2F%20Pubmatic%20Adapter%20Setup%0Aif(this._isEnabled('pubmatic'%2CpubmaticConfig))this._setupPubmatic(pubmaticConfig%2CadSizeStr%2Clocation)%3B%2F%2F%20OneMobile%20by%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('onemobile'%2ConeMobileConfig))this._setupOneMobile(oneMobileConfig%2CadUnitSizes)%3B%2F%2F%20Aol%20Adapter%20Setup%0Aif(this._isEnabled('aol'%2CaolConfig))this._setupAol(aolConfig%2CadUnitPath%2CadUnitSizes)%3B%2F%2F%20Kargo%20Adapter%20Setup%0Aif(this._isEnabled('kargo'%2CkargoConfig)%26%26adCount%3D%3D%3D1%26%26this.placement%3D%3D%3D'mobileweb-banner_bottom')this._setupKargo(kargoConfig%2CadUnitSizes)%3B%2F%2F%20Trustx%20Adapter%20Setup%0Aif(this._isEnabled('trustx'%2CtrustxConfig)%26%26(this._inMobileEnvironment()%7C%7Cthis.sticky))this._setupTrustx(trustxConfig%2CadUnitSizes)%3B%2F%2F%20Yieldmo%20Setup%0Aif(this._isEnabled('yieldmo'%2CyieldmoConfig))this._setupYieldmo(yieldmoConfig)%3Bvar%20experiment%3DgetNested(window.ga_data%2C'ads'%2C'experiment')%7C%7C%7B%7D%3Bif(experiment.flag%3D%3D%3D'ordered'%26%26Array.isArray(experiment.params))%7Bvar%20sortArray%3Dexperiment.params%3Bthis.bids.sort(function(a%2Cb)%7Breturn%20sortArray.indexOf(a.bidder)-sortArray.indexOf(b.bidder)%3B%7D)%3B%7Dthis.addAdUnits(adUnitSizes)%3B%7D%2C_isEnabled%3Afunction%20_isEnabled(bidder%2CbidderConfig)%7Breturn%20this.pbDebug%3D%3D%3Dbidder%7C%7C!this.pbDebug%26%26bidderConfig.enabled%26%26!(!bidderConfig.usp%26%26this._noSell())%3B%7D%2C_noSell%3Afunction%20_noSell()%7Bvar%20privacy%3Dwindow.ga_privacy%7C%7C%7Bchoices%3A%7B%7D%7D%3Breturn%20privacy.ccpaApplies%26%26privacy.choices.targeting%3D%3D%3Dfalse%3B%7D%2CaddAdUnits%3Afunction%20addAdUnits(adUnitSizes%2Cgpid)%7Bif(this.bids.length)%7Bvar%20pbUnit%3D%7Bcode%3Athis.slotId%2CmediaTypes%3A%7Bbanner%3A%7Bsizes%3Athis._sortSizes(adUnitSizes)%7D%7D%2Cbids%3Athis.bids%2Cortb2Imp%3A%7Bext%3A%7Bdata%3A%7Badserver%3A%7Badslot%3Agpid%2Cname%3A'gam'%7D%2Cpbadslot%3Agpid%7D%2Cgpid%3Agpid%7D%7D%7D%3Bif(this.isVideo)%7Bvar%20videoCfg%3Dthis._getNested(ga_data%2C'site'%2C'video')%3Bvar%20plcmt%3Dthis.placement.includes('snow')%3Fthis._getNested(videoCfg%2C'snow'%2C'placements'%2Cthis.placement%2C'plcmt')%3Athis._getNested(videoCfg%2C'placements'%2Cthis.placement%2C'plcmt')%3BpbUnit.mediaTypes%3D%7Bvideo%3A%7Bapi%3A%5B2%5D%2Ccontext%3A'instream'%2Clinearity%3A1%2Cmaxduration%3A120%2Cmimes%3A%5B'application%2Fjavascript'%2C'video%2Fmp4'%2C'video%2Fwebm'%2C'video%2Fogg'%2C'application%2Fx-mpegURL'%2C'application%2Fdash%2Bxml'%2C'video%2Fx-ms-wmv'%2C'video%2Fms-asf'%5D%2Cstartdelay%3A0%2Csize_id%3A201%2CplayerHeight%3Athis.videoHeight%2CplayerWidth%3Athis.videoWidth%2Cplcmt%3Aplcmt%7C%7C2%2C%2F%2F%20playerSize%20with%20window%20width%2Fheight%20works%20for%20our%20current%20use%20cases%20(iframes%2C%20mobile%20web)%0A%2F%2F%20will%20need%20to%20be%20updated%20once%20more%20use%20cases%20are%20added%0AplayerSize%3A%5Bwindow.innerWidth%2CMath.round(window.innerWidth*.5625)%5D%2Cprotocols%3A%5B2%2C3%2C5%2C6%2C7%2C8%5D%7D%7D%3B%7Dwindow.pbjs.que.push(function()%7Bwindow.pbjs.addAdUnits(pbUnit)%3B%7D)%3B%7Dthis.pbSetup.resolve()%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Trustx%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Trustx%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTrustx%3Afunction%20_setupTrustx(config%2Csizes)%7Bvar%20_this2%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bplacements.forEach(function(placement)%7B_this2.bids.push(%7Bbidder%3A'trustx'%2Cparams%3A%7Buid%3Aplacement.uid%2Ckeywords%3A%7Btopic%3AtopicArr.filter(Boolean)%2Cbrandsafety%3A_this2._getBrandSafety()%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Kargo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Kargo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupKargo%3Afunction%20_setupKargo(config%2Csizes)%7Bvar%20_this3%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7Bplacement.ids.forEach(function(id)%7B_this3.bids.push(%7Bbidder%3A'kargo'%2Cparams%3A%7BplacementId%3Aid%7D%7D)%3B%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Aol%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupAol%3Afunction%20_setupAol(config%2CadUnitPath%2Csizes)%7Bvar%20_this4%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this4.bids.push(%7Bbidder%3A'aol'%2Cparams%3A%7Bplacement%3Aplacement.id%2Cnetwork%3Aconfig.network%2Calias%3AadUnitPath%2Cserver%3Aconfig.server%2CsizeId%3Aplacement.sizeId%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OneMobile%20by%20Aol%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20OneMobile%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupOneMobile%3Afunction%20_setupOneMobile(config%2Csizes)%7Bvar%20_this5%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this5.bids.push(%7Bbidder%3A'onemobile'%2Cparams%3A%7Bdcn%3Aconfig.dcn%2Cpos%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20AppNexus%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20AppNexus%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupAppNexus%3Afunction%20_setupAppNexus(config%2Csizes%2Csection%2Cssts%2CadCount)%7Bvar%20_this6%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3Dthis._getNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bvar%20placementId%3Dvoid%200%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3B_this6.bids.push(%7Bbidder%3A'appnexus'%2Cparams%3A%7BplacementId%3AplacementId%2Ckeywords%3A%7BadCount%3AadCount%2Cbrandsafety%3A_this6._getBrandSafety()%2Cposition%3A_this6.placement%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Criteo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Criteo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupCriteo%3Afunction%20_setupCriteo(config)%7Bthis.bids.push(%7Bbidder%3A'criteo'%2Cparams%3A%7BnetworkId%3Aconfig.networkId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20IndexExchange%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20IndexExchange%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20adUnitSizes%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupIx%3Afunction%20_setupIx(config%2CadUnitPath%2CadUnitSizes)%7Bvar%20_this7%3Dthis%3Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%3Bvar%20placement%3Dvoid%200%3Bplacement%3Dconfig.placements%5Bkey%5D%3Bif(placement)%7BadUnitSizes.forEach(function(size)%7B_this7.bids.push(%7Bbidder%3A'ix'%2Cparams%3A%7BsiteId%3Aplacement.siteid%2Csize%3Asize%7D%7D)%3B%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20OpenX%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20OpenX%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%2F_setupOpenX%3Afunction%20_setupOpenX(config%2Csizes%2Csection)%7Bvar%20_this8%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bvar%20placementId%3Dvoid%200%3Bplacements.forEach(function(placement)%7BplacementId%3Dplacement%5Bsection%5D%7C%7Cplacement.ros%3Bif(placementId)%7B_this8.bids.push(%7Bbidder%3A'openx'%2Cparams%3A%7Bunit%3AplacementId%2CdelDomain%3Aconfig.domain%7D%7D)%3B%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Pubmatic%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20%20Pubmatic%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adSizeStr%20%20String%20value%20for%20ad%20size.%20i.e.%20%22300x250%22%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20%20%20Whether%20we%20are%20above%20or%20below%20the%20fold%20('abf'%2F'btf')%0A%20%20%20%20%20%20%20%20%20*%2F_setupPubmatic%3Afunction%20_setupPubmatic(config%2CadSizeStr%2Clocation)%7Bvar%20slot%3Dlocation.toUpperCase()%2B'%40'%2BadSizeStr%2CrosSlot%3D'ROS%40'%2BadSizeStr%2CadSlot%3Dconfig.placements.indexOf(slot)%3E-1%3Fslot%3Aconfig.placements.indexOf(rosSlot)%3E-1%3FrosSlot%3Anull%3Bif(adSlot)%7Bthis.bids.push(%7Bbidder%3A'pubmatic'%2Cparams%3A%7BpublisherId%3Aconfig.account%2CadSlot%3AadSlot%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Rubicon%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20Rubicon%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20section%20%20Current%20route%20section%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20ssts%20%20%20%20%20SSTS%20string%20for%20this%20current%20route%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20location%20Ad%20location%20on%20page.%20Options%20are%20'btf'%20or%20'aft'.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BNumber%7D%20adCount%20%20Current%20ad%20count%20for%20this%20ad%20placement%0A%20%20%20%20%20%20%20%20%20*%2F_setupRubicon%3Afunction%20_setupRubicon(config%2Csection%2Cssts%2Clocation%2CadCount)%7Bvar%20getNested%3Dthis._getNested%2CzoneId%3DgetNested(config%2C'zones'%2Clocation%2Csection)%7C%7CgetNested(config%2C'zones'%2C'catchall')%2CsstsParts%3Dssts.split('%2F')%2CtopicArr%3DgetNested(window%2C'ga_data'%2C'route'%2C'keywords')%7C%7C%5B%5D%3Bif(sstsParts%5B2%5D)%7BtopicArr.push(sstsParts%5B2%5D)%3B%7Dif(zoneId)%7Bthis.bids.push(%7Bbidder%3A'rubicon'%2Cparams%3A%7BaccountId%3Aconfig.account%2CsiteId%3Aconfig.siteId%2CzoneId%3AzoneId%2Cinventory%3A%7Badcount%3AadCount%2Cbrandsafety%3Athis._getBrandSafety()%2Cdomain%3AgetNested(window%2C'ga_data'%2C'site'%2C'baseName')%2BgetNested(window%2C'ga_data'%2C'site'%2C'topLevelDomain')%2Csection%3A%5Bsection%5D%2Csubsection%3A%5BsstsParts%5B1%5D%7C%7C''%5D%2Ctopic%3AtopicArr%7D%2Cposition%3Alocation%3D%3D%3D'atf'%3Flocation%3A''%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Sonobi%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20%20%20%20Sonobi%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BString%7D%20adUnitPath%20DFP%20Ad%20Unit%20path%0A%20%20%20%20%20%20%20%20%20*%2F_setupSonobi%3Afunction%20_setupSonobi(config%2CadUnitPath)%7Bvar%20key%3DadUnitPath.split('%2F')%5B3%5D%2Cplacement%3Dconfig.placements%26%26(config.placements%5Bkey%5D%7C%7Cconfig.placements%5B'*'%5D)%3Bif(placement%26%26placement.TagID)%7Bthis.bids.push(%7Bbidder%3A'sonobi'%2Cparams%3A%7BTagID%3Aplacement.TagID%7D%7D)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20TripleLift%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20TripleLift%20config%20object%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20sizes%20%20Array%20of%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%2F_setupTripleLift%3Afunction%20_setupTripleLift(config%2Csizes)%7Bvar%20_this9%3Dthis%3Bvar%20placements%3Dthis._getPlacementSizes(config.placements%2Csizes%2Cconfig.multisize)%3Bplacements.forEach(function(placement)%7B_this9.bids.push(%7Bbidder%3A'triplelift'%2Cparams%3A%7BinventoryCode%3Aplacement.id%7D%7D)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20up%20Yieldmo%20prebid%20adapter%20if%20enabled%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20config%20Yieldmo%20config%20object%0A%20%20%20%20%20%20%20%20%20*%2F_setupYieldmo%3Afunction%20_setupYieldmo(config)%7Bthis.bids.push(%7Bbidder%3A'yieldmo'%2Cparams%3A%7BplacementId%3Aconfig.placementId%7D%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20targeting%20for%20the%20ad%20slot%20then%20triggers%20a%20call%20to%20dfp%20to%20fetch%20and%20render%20a%20new%20ad.%0A%20%20%20%20%20%20%20%20%20*%2Frefresh%3Afunction%20refresh()%7Bvar%20superRefresh%3Dthis._getNested(window%2C'ga_data'%2C'behaviors'%2C'PartnerSlot'%2C'refresh')%3Bif((this.displayed%7C%7Cthis.video)%26%26!this._getNested(window%2C'ga_data'%2C'route'%2C'disableBidding'))%7Bthis._refreshBids(superRefresh)%3B%7Delse%20if(typeof%20superRefresh%3D%3D%3D'function')%7BsuperRefresh.call(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20bidding%20targeting%20on%20an%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BPromise%7D%20Promise%20to%20be%20resolved%20when%20bidding%20is%20complete%0A%20%20%20%20%20%20%20%20%20*%2F_refreshBids%3Afunction%20_refreshBids(superRefresh)%7Bvar%20_this10%3Dthis%3Bvar%20platform%3Dthis._inMobileEnvironment()%3F'mobile'%3A'desktop'%2CprebidSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'prebid'%2Cplatform)%7C%7C%7B%7D%2CapsSiteConfig%3Dthis._getNested(window%2C'ga_data'%2C'site'%2C'ads'%2C'aps')%7C%7C%7B%7D%2Cpromises%3D%5B%5D%3Bthis.bidSet%3Dfalse%3Bif(this.gptSlot)%7Bthis._unsetTargeting()%3B%7Dif((prebidSiteConfig.enabled%7C%7Cthis.pbDebug)%26%26this.prebid)%7Bpromises.push(this.pbSetup.promise)%3Bthis.pbSetup.promise.then(function()%7Breturn%20_this10._refreshPrebid()%3B%7D)%3B%7Dif((apsSiteConfig.enabled%7C%7Cthis.apsDebug)%26%26this.aps)%7Bpromises.push(this.apsSetup.promise)%3Bthis.apsSetup.promise.then(function()%7Breturn%20_this10._refreshAPS()%3B%7D)%3B%7Dif(typeof%20superRefresh%3D%3D%3D'function')%7Bif(promises.length)%7BPromise.all(promises).then(function()%7BsuperRefresh.call(_this10)%3B%7D)%3B%7Delse%7BsuperRefresh.call(this)%3B%7D%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Unset%203rd%20party%20targeting%0A%20%20%20%20%20%20%20%20%20*%2F_unsetTargeting%3Afunction%20_unsetTargeting()%7Bvar%20_this11%3Dthis%3Bthis._log('Clearing%203rd%20party%20targeting')%3B%5B'hb_ap'%2C'hb_bidder'%2C'hb_size'%2C'hb_source'%2C'hb_format'%2C'hb_ap_id'%2C'hb_adid'%2C'amznbid'%2C'amznp'%2C'amzniid'%2C'amznsz'%5D.forEach(function(key)%7B_this11.gptSlot.clearTargeting(key)%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Refreshes%20our%20APS%20bids%0A%20%20%20%20%20%20%20%20%20*%2F_refreshAPS%3Afunction%20_refreshAPS()%7Bvar%20_this12%3Dthis%3Bthis._log('Queuing%20APS')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.apsAdUnits%3Dwindow.ga_data.ads.apsAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.apsAdUnits.push(_this12)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.apsAdUnits.push(this)%3B%7D%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Makes%20request%20to%20prebid.js%20to%20refresh%20the%20bids%20for%20this%20ad%20slot%0A%20%20%20%20%20%20%20%20%20*%2F_refreshPrebid%3Afunction%20_refreshPrebid()%7Bvar%20_this13%3Dthis%3Bthis._log('Queuing%20Prebid')%3Bwindow.ga_data.ads%3Dwindow.ga_data.ads%7C%7C%7B%7D%3Bwindow.ga_data.ads.pbAdUnits%3Dwindow.ga_data.ads.pbAdUnits%7C%7C%5B%5D%3Bif(!this.isVideo%26%26this.defineDefer)%7Bthis.defineDefer.promise.then(function()%7Bwindow.ga_data.ads.pbAdUnits.push(_this13)%3B%7D)%3B%7Delse%7Bwindow.ga_data.ads.pbAdUnits.push(this)%3B%7D%7D%2CprebidBidsReturned%3Afunction%20prebidBidsReturned(allBids)%7Bvar%20slotBids%3D(allBids%5Bthis.slotId%5D%7C%7C%7Bbids%3A%5B%5D%7D).bids%3Bif(slotBids.length)%7Bvar%20winningBid%3Dthis._getWinningBid(slotBids)%3Bthis._setPrebidTargeting(winningBid)%3B%7D%7D%2CprebidTimeoutReturned%3Afunction%20prebidTimeoutReturned(winningBid)%7Bif(!(winningBid%26%26winningBid.adserverTargeting))%7Bif(typeof%20window.pbjs.getAdserverTargetingForAdUnitCode!%3D%3D'function')return%3Bvar%20bidTargeting%3Dwindow.pbjs.getAdserverTargetingForAdUnitCode(this.slotId)%3BwinningBid%3D%7BadserverTargeting%3AbidTargeting%2CbidderCode%3AbidTargeting.hb_bidder%7D%3B%7Dthis._setPrebidTargeting(winningBid)%3B%7D%2C_setPrebidTargeting%3Afunction%20_setPrebidTargeting(winningBid)%7Bvar%20_this14%3Dthis%3Bif(!winningBid%7C%7C!winningBid.bidderCode%7C%7C!winningBid.adserverTargeting%7C%7C!winningBid.adserverTargeting.hb_ap_id)%7Breturn%3B%7Dwindow.googletag.cmd.push(function()%7B_this14._setTargeting(_this14.gptSlot%2CwinningBid.adserverTargeting)%3B_this14._log('Prebid%20targeting%20set')%3B%7D)%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20an%20array%20of%20size%20arrays%20and%20returns%20the%20largest%20ad%20size%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20%20%20%20%20%20%20%20%20Array%20of%20ad%20size%20arrays%20to%20reduce%20to%20largest%20value.%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20acceptedSizes%20Array%20of%20biddable%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Largest%20size%20array.%20i.e.%20%5B300%2C600%5D%0A%20%20%20%20%20%20%20%20%20*%2F_getMaxSize%3Afunction%20_getMaxSize(sizes%2CacceptedSizes)%7Bvar%20result%3D%5B%5D%2ClargestSize%3D0%3Bsizes.forEach(function(size)%7Bvar%20total%3Dsize%5B0%5D*size%5B1%5D%3Bif(acceptedSizes%5Bsize%5B0%5D%2B'x'%2Bsize%5B1%5D%5D%26%26total%3ElargestSize)%7BlargestSize%3Dtotal%3Bresult%3Dsize%3B%7D%7D)%3Breturn%20result%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sorts%20an%20array%20of%20size%20arrays%20in%20order%20from%20largest%20to%20smallest%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20sizes%20Array%20of%20ad%20size%20arrays%20i.e.%20%5B%5B300%2C250%5D%2C%20%5B300%2C600%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20Sorted%20array%20of%20ad%20size%20arrays%0A%20%20%20%20%20%20%20%20%20*%2F_sortSizes%3Afunction%20_sortSizes(sizes)%7Bif(sizes.length%3D%3D%3D1)return%20sizes%3Bsizes.sort(function(a%2Cb)%7Breturn%20b%5B0%5D*b%5B1%5D-a%5B0%5D*a%5B1%5D%3B%7D)%3Breturn%20sizes%3B%7D%2C%2F**%0A%20%20%20%20%20%20%20%20%20*%20Takes%20a%20list%20of%20placements%20and%20finds%20the%20largest%20available%20placement%20based%0A%20%20%20%20%20%20%20%20%20*%20on%20the%20available%20sizes%20passed%20through.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BObject%7D%20%20placements%20Placement%20object%2C%20keyed%20by%20size%20string.%20i.e.%20%22300x250%22%20%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BArray%7D%20%20%20sizes%20%20%20%20%20%20Array%20of%20an%20array%20of%20size%20values.%20i.e.%20%5B%5B300%2C250%5D%5D%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%20%7BBoolean%7D%20multiSize%20%20Set%20true%20to%20return%20all%20matched%20sizes%2C%20otherwise%20largests%20gets%20returned%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20Returns%20array%20of%20matched%20placement%20objects%0A%20%20%20%20%20%20%20%20%20*%2F_getPlacementSizes%3Afunction%20_getPlacementSizes(placements%2Csizes%2CmultiSize)%7Bvar%20matches%3D%5B%5D%3Bif(!placements)return%20matches%3Bsizes%3Dthis._sortSizes(sizes)%3Bsizes.forEach(function(size)%7Bvar%20sizeStr%3Dsize%5B0%5D%2B'x'%2Bsize%5B1%5D%2Cplacement%3Dplacements%5BsizeStr%5D%3Bif(placement)%7Bmatches.push(placement)%3B%7D%7D)%3Breturn%20multiSize%3Fmatches%3Amatches.slice(0%2C1)%3B%7D%2C_getBrandSafety%3Afunction%20_getBrandSafety()%7Bif(!this.brandSafety)%7Bvar%20simpleTarget%3Dga_data.route.simpleTarget%7C%7C%5B%5D%3Bvar%20simpleExclusion%3Dga_data.route.simpleExclusion%7C%7C%5B%5D%3Bthis.brandSafety%3DsimpleTarget.concat(simpleExclusion)%3Bif(!this.brandSafety.length)%7Bthis.brandSafety.push('')%3B%7D%7Dreturn%20this.brandSafety%3B%7D%7D%3Bwindow.ga_data%3Dwindow.ga_data%7C%7C%7B%7D%3Bwindow.ga_data.behaviors%3Dwindow.ga_data.behaviors%7C%7C%7B%7D%3B%2F**%0A%20%20%20%20%20*%20Partner%20Bid%20behavior.%0A%20%20%20%20%20*%0A%20%20%20%20%20*%20%40polymerBehavior%0A%20%20%20%20%20*%2Fwindow.ga_data.behaviors.PartnerBid%3DPartnerBid%3B%0A%2F%2F%23%20sourceMappingURL%3D..%2F..%2Fmaps%2Fgallium%2Fbehaviors%2Fpartner-bid.html_script_0.js.map%0A%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fcpt-static.gannettdigital.com%2Funiversal-web-client%2Fmaster%2Flatest%2Fgallium%2Fbehaviors%2Fpartner-bid.html.js%0A",
            "totalBytes": 28154,
            "wastedBytes": 20742,
            "wastedPercent": 73.67336790509341,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "source": "…",
                  "sourceBytes": 21762,
                  "sourceWastedBytes": 20742
                }
              ]
            }
          }
        ],
        "overallSavingsMs": 600,
        "overallSavingsBytes": 133312,
        "sortedBy": [
          "wastedBytes"
        ],
        "debugData": {
          "type": "debugdata",
          "metricSavings": {
            "FCP": 0,
            "LCP": 600
          }
        }
      },
      "guidanceLevel": 1
    },
    "doctype": {
      "id": "doctype",
      "title": "Page has the HTML doctype",
      "description": "Specifying a doctype prevents the browser from switching to quirks-mode. [Learn more about the doctype declaration](https://developer.chrome.com/docs/lighthouse/best-practices/doctype/).",
      "score": 1,
      "scoreDisplayMode": "binary"
    },
    "charset": {
      "id": "charset",
      "title": "Properly defines charset",
      "description": "A character encoding declaration is required. It can be done with a `<meta>` tag in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. [Learn more about declaring the character encoding](https://developer.chrome.com/docs/lighthouse/best-practices/charset/).",
      "score": 1,
      "scoreDisplayMode": "binary"
    },
    "geolocation-on-start": {
      "id": "geolocation-on-start",
      "title": "Avoids requesting the geolocation permission on page load",
      "description": "Users are mistrustful of or confused by sites that request their location without context. Consider tying the request to a user action instead. [Learn more about the geolocation permission](https://developer.chrome.com/docs/lighthouse/best-practices/geolocation-on-start/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "source",
            "valueType": "source-location",
            "label": "Source"
          }
        ],
        "items": []
      }
    },
    "inspector-issues": {
      "id": "inspector-issues",
      "title": "No issues in the `Issues` panel in Chrome Devtools",
      "description": "Issues logged to the `Issues` panel in Chrome Devtools indicate unresolved problems. They can come from network request failures, insufficient security controls, and other browser concerns. Open up the Issues panel in Chrome DevTools for more details on each issue.",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "issueType",
            "valueType": "text",
            "subItemsHeading": {
              "key": "url",
              "valueType": "url"
            },
            "label": "Issue type"
          }
        ],
        "items": []
      }
    },
    "js-libraries": {
      "id": "js-libraries",
      "title": "Detected JavaScript libraries",
      "description": "All front-end JavaScript libraries detected on the page. [Learn more about this JavaScript library detection diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/js-libraries/).",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "name",
            "valueType": "text",
            "label": "Name"
          },
          {
            "key": "version",
            "valueType": "text",
            "label": "Version"
          }
        ],
        "items": [
          {
            "name": "Polymer",
            "version": "2.7.0",
            "npm": "@polymer/polymer"
          },
          {
            "name": "LitElement",
            "version": "2.5.1",
            "npm": "lit-element"
          },
          {
            "name": "lit-html",
            "version": "1.4.1",
            "npm": "lit-element"
          }
        ],
        "debugData": {
          "type": "debugdata",
          "stacks": [
            {
              "id": "polymer",
              "version": "2.7.0"
            },
            {
              "id": "litelement",
              "version": "2.5.1"
            },
            {
              "id": "lit-html",
              "version": "1.4.1"
            }
          ]
        }
      }
    },
    "notification-on-start": {
      "id": "notification-on-start",
      "title": "Avoids requesting the notification permission on page load",
      "description": "Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the request to user gestures instead. [Learn more about responsibly getting permission for notifications](https://developer.chrome.com/docs/lighthouse/best-practices/notification-on-start/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "source",
            "valueType": "source-location",
            "label": "Source"
          }
        ],
        "items": []
      }
    },
    "paste-preventing-inputs": {
      "id": "paste-preventing-inputs",
      "title": "Allows users to paste into input fields",
      "description": "Preventing input pasting is a bad practice for the UX, and weakens security by blocking password managers.[Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": "Failing Elements"
          }
        ],
        "items": []
      }
    },
    "meta-description": {
      "id": "meta-description",
      "title": "Document has a meta description",
      "description": "Meta descriptions may be included in search results to concisely summarize page content. [Learn more about the meta description](https://developer.chrome.com/docs/lighthouse/seo/meta-description/).",
      "score": 1,
      "scoreDisplayMode": "binary"
    },
    "http-status-code": {
      "id": "http-status-code",
      "title": "Page has successful HTTP status code",
      "description": "Pages with unsuccessful HTTP status codes may not be indexed properly. [Learn more about HTTP status codes](https://developer.chrome.com/docs/lighthouse/seo/http-status-code/).",
      "score": 1,
      "scoreDisplayMode": "binary"
    },
    "link-text": {
      "id": "link-text",
      "title": "Links have descriptive text",
      "description": "Descriptive link text helps search engines understand your content. [Learn how to make links more accessible](https://developer.chrome.com/docs/lighthouse/seo/link-text/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "href",
            "valueType": "url",
            "label": "Link destination"
          },
          {
            "key": "text",
            "valueType": "text",
            "label": "Link Text"
          }
        ],
        "items": []
      }
    },
    "crawlable-anchors": {
      "id": "crawlable-anchors",
      "title": "Links are not crawlable",
      "description": "Search engines may use `href` attributes on links to crawl websites. Ensure that the `href` attribute of anchor elements links to an appropriate destination, so more pages of the site can be discovered. [Learn how to make links crawlable](https://support.google.com/webmasters/answer/9112205)",
      "score": 0,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": "Uncrawlable Link"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "1-68-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 2006,
                "bottom": 2034,
                "left": 72,
                "right": 340,
                "width": 267,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Most Recent Videos"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-80-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 2658,
                "bottom": 2686,
                "left": 65,
                "right": 347,
                "width": 281,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Most Recent Galleries"
            }
          }
        ]
      }
    },
    "is-crawlable": {
      "id": "is-crawlable",
      "title": "Page is blocked from indexing",
      "description": "Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more about crawler directives](https://developer.chrome.com/docs/lighthouse/seo/is-crawlable/).",
      "score": 0,
      "scoreDisplayMode": "binary",
      "warnings": [],
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "source",
            "valueType": "code",
            "label": "Blocking Directive Source"
          }
        ],
        "items": [
          {
            "source": "x-robots-tag: noindex, nofollow,noarchive,nocache"
          }
        ]
      }
    },
    "robots-txt": {
      "id": "robots-txt",
      "title": "robots.txt is valid",
      "description": "If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. [Learn more about robots.txt](https://developer.chrome.com/docs/lighthouse/seo/invalid-robots-txt/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "index",
            "valueType": "text",
            "label": "Line #"
          },
          {
            "key": "line",
            "valueType": "code",
            "label": "Content"
          },
          {
            "key": "message",
            "valueType": "code",
            "label": "Error"
          }
        ],
        "items": []
      }
    },
    "hreflang": {
      "id": "hreflang",
      "title": "Document has a valid `hreflang`",
      "description": "hreflang links tell search engines what version of a page they should list in search results for a given language or region. [Learn more about `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/).",
      "score": 1,
      "scoreDisplayMode": "binary",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "source",
            "valueType": "code",
            "subItemsHeading": {
              "key": "reason",
              "valueType": "text"
            },
            "label": ""
          }
        ],
        "items": []
      }
    },
    "canonical": {
      "id": "canonical",
      "title": "Document has a valid `rel=canonical`",
      "description": "Canonical links suggest which URL to show in search results. [Learn more about canonical links](https://developer.chrome.com/docs/lighthouse/seo/canonical/).",
      "score": 1,
      "scoreDisplayMode": "binary"
    },
    "structured-data": {
      "id": "structured-data",
      "title": "Structured data is valid",
      "description": "Run the [Structured Data Testing Tool](https://developers.google.com/search/docs/appearance/structured-data/) to validate structured data. [Learn more about Structured Data](https://developer.chrome.com/docs/lighthouse/seo/structured-data/).",
      "score": null,
      "scoreDisplayMode": "manual"
    },
    "bf-cache": {
      "id": "bf-cache",
      "title": "Page didn't prevent back/forward cache restoration",
      "description": "Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache (bfcache) can speed up these return navigations. [Learn more about the bfcache](https://developer.chrome.com/docs/lighthouse/performance/bf-cache/)",
      "score": 1,
      "scoreDisplayMode": "binary",
      "guidanceLevel": 4
    },
    "cache-insight": {
      "id": "cache-insight",
      "title": "Use efficient cache lifetimes",
      "description": "A long cache lifetime can speed up repeat visits to your page. [Learn more about caching](https://developer.chrome.com/docs/performance/insights/cache).",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "Est savings of 412 KiB",
      "metricSavings": {
        "FCP": 150,
        "LCP": 2100
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "Request"
          },
          {
            "key": "cacheLifetimeMs",
            "valueType": "ms",
            "label": "Cache TTL",
            "displayUnit": "duration"
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "label": "Transfer Size",
            "displayUnit": "kb",
            "granularity": 1
          }
        ],
        "items": [
          {
            "url": "https://eu.palmbeachpost.com/?width=420&quality=50",
            "cacheLifetimeMs": 0,
            "totalBytes": 165839,
            "wastedBytes": 165839
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 83901,
            "wastedBytes": 67120.8
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "cacheLifetimeMs": 86400000,
            "totalBytes": 131454,
            "wastedBytes": 52581.600000000006
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 20884,
            "wastedBytes": 16707.2
          },
          {
            "url": "https://atoms.palmbeachpost.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "cacheLifetimeMs": 900000,
            "totalBytes": 16464,
            "wastedBytes": 14714.7
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 18264,
            "wastedBytes": 14611.2
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 18151,
            "wastedBytes": 14520.800000000001
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 18096,
            "wastedBytes": 14476.800000000001
          },
          {
            "url": "https://eu.palmbeachpost.com/gcdn/dcjs/prod/main.js",
            "cacheLifetimeMs": 3800000,
            "totalBytes": 18101,
            "wastedBytes": 14430.519444444446
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 16823,
            "wastedBytes": 13458.400000000001
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "cacheLifetimeMs": 86400000,
            "totalBytes": 18164,
            "wastedBytes": 7265.6
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 5511,
            "wastedBytes": 4408.8
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/intl-messageformat/dist/intl-messageformat.min.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 5183,
            "wastedBytes": 4146.400000000001
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/apply-shim.min.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 4820,
            "wastedBytes": 3856
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/otSDKStub.js",
            "cacheLifetimeMs": 86400000,
            "totalBytes": 9317,
            "wastedBytes": 3726.8
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 4255,
            "wastedBytes": 3404
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 3819,
            "wastedBytes": 3055.2000000000003
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-loader.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 1690,
            "wastedBytes": 1352
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 1558,
            "wastedBytes": 1246.4
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 1108,
            "wastedBytes": 886.4000000000001
          },
          {
            "url": "https://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
            "cacheLifetimeMs": 604800000,
            "totalBytes": 354,
            "wastedBytes": 35.39999999999999
          }
        ],
        "sortedBy": [
          "wastedBytes"
        ],
        "skipSumming": [
          "cacheLifetimeMs"
        ],
        "debugData": {
          "type": "debugdata",
          "wastedBytes": 421844.01944444457
        }
      },
      "guidanceLevel": 3
    },
    "cls-culprits-insight": {
      "id": "cls-culprits-insight",
      "title": "Layout shift culprits",
      "description": "Layout shifts occur when elements move absent any user interaction. [Investigate the causes of layout shifts](https://developer.chrome.com/docs/performance/insights/cls-culprit), such as elements being added, removed, or their fonts changing as the page loads.",
      "score": 0,
      "scoreDisplayMode": "numeric",
      "metricSavings": {
        "CLS": 0
      },
      "details": {
        "type": "list",
        "items": [
          {
            "type": "table",
            "headings": [
              {
                "key": "node",
                "valueType": "node",
                "subItemsHeading": {
                  "key": "extra"
                },
                "label": "Element"
              },
              {
                "key": "score",
                "valueType": "numeric",
                "subItemsHeading": {
                  "key": "cause",
                  "valueType": "text"
                },
                "granularity": 0.001,
                "label": "Layout shift score"
              }
            ],
            "items": [
              {
                "node": {
                  "type": "text",
                  "value": "Total"
                },
                "score": 0.645698
              },
              {
                "node": {
                  "type": "node",
                  "lhId": "page-6-A",
                  "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A",
                  "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
                  "boundingRect": {
                    "top": 305,
                    "bottom": 409,
                    "left": 34,
                    "right": 378,
                    "width": 343,
                    "height": 104
                  },
                  "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/powerball-numbers-wednesday-april-winner-florida/89…\" data-module-name=\"promo-story-thumb-small\" data-index=\"3\" onclick=\"firePromoAnalytics(event)\">",
                  "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets\nNews "
                },
                "score": 0.484941,
                "subItems": {
                  "type": "subitems",
                  "items": [
                    {
                      "extra": {
                        "type": "node",
                        "lhId": "page-12-IMG",
                        "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                        "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                        "boundingRect": {
                          "top": 1449,
                          "bottom": 1680,
                          "left": 0,
                          "right": 412,
                          "width": 412,
                          "height": 232
                        },
                        "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                        "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                      },
                      "cause": "Unsized image element"
                    },
                    {
                      "extra": {
                        "type": "url",
                        "value": "https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2"
                      },
                      "cause": "Web font"
                    }
                  ]
                }
              },
              {
                "node": {
                  "type": "node",
                  "lhId": "page-6-A",
                  "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A",
                  "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
                  "boundingRect": {
                    "top": 305,
                    "bottom": 409,
                    "left": 34,
                    "right": 378,
                    "width": 343,
                    "height": 104
                  },
                  "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/powerball-numbers-wednesday-april-winner-florida/89…\" data-module-name=\"promo-story-thumb-small\" data-index=\"3\" onclick=\"firePromoAnalytics(event)\">",
                  "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets\nNews "
                },
                "score": 0.093424,
                "subItems": {
                  "type": "subitems",
                  "items": [
                    {
                      "extra": {
                        "type": "node",
                        "lhId": "page-10-IMG",
                        "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                        "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                        "boundingRect": {
                          "top": 305,
                          "bottom": 409,
                          "left": 273,
                          "right": 378,
                          "width": 104,
                          "height": 104
                        },
                        "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/896…\" class=\"p1-image\" alt=\"Powerball hits triple digits, $100 million. Check April 22 tickets\">",
                        "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets"
                      },
                      "cause": "Unsized image element"
                    }
                  ]
                }
              },
              {
                "node": {
                  "type": "node",
                  "lhId": "page-2-A",
                  "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,5,A",
                  "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
                  "boundingRect": {
                    "top": 425,
                    "bottom": 530,
                    "left": 34,
                    "right": 378,
                    "width": 343,
                    "height": 104
                  },
                  "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/florida-lotto-numbers-wednesday-april-winner-florid…\" data-module-name=\"promo-story-thumb-small\" data-index=\"4\" onclick=\"firePromoAnalytics(event)\">",
                  "nodeLabel": "Florida Lotto numbers for Wednesday, April 22, a $17 million prize\nNews "
                },
                "score": 0.033837,
                "subItems": {
                  "type": "subitems",
                  "items": [
                    {
                      "extra": {
                        "type": "node",
                        "lhId": "page-10-IMG",
                        "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                        "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                        "boundingRect": {
                          "top": 305,
                          "bottom": 409,
                          "left": 273,
                          "right": 378,
                          "width": 104,
                          "height": 104
                        },
                        "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/17/USAT/896…\" class=\"p1-image\" alt=\"Powerball hits triple digits, $100 million. Check April 22 tickets\">",
                        "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets"
                      },
                      "cause": "Unsized image element"
                    }
                  ]
                }
              },
              {
                "node": {
                  "type": "node",
                  "lhId": "page-6-A",
                  "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,4,A",
                  "selector": "div.content-well > div#content > div#section-stories > a.section-helper-flex",
                  "boundingRect": {
                    "top": 305,
                    "bottom": 409,
                    "left": 34,
                    "right": 378,
                    "width": 343,
                    "height": 104
                  },
                  "snippet": "<a class=\"section-helper-flex section-helper-row ten-column spacer-small p1-container\" href=\"/story/news/2026/04/22/powerball-numbers-wednesday-april-winner-florida/89…\" data-module-name=\"promo-story-thumb-small\" data-index=\"3\" onclick=\"firePromoAnalytics(event)\">",
                  "nodeLabel": "Powerball hits triple digits, $100 million. Check April 22 tickets\nNews "
                },
                "score": 0.025254,
                "subItems": {
                  "type": "subitems",
                  "items": [
                    {
                      "extra": {
                        "type": "node",
                        "lhId": "page-11-IMG",
                        "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,1,A,1,DIV,0,DIV,0,PICTURE,3,IMG",
                        "selector": "div.section-helper-flex > div.nonflexDiv > picture.p1-image > img.p1-image",
                        "boundingRect": {
                          "top": 64,
                          "bottom": 168,
                          "left": 273,
                          "right": 378,
                          "width": 104,
                          "height": 104
                        },
                        "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/NPPP/894…\" class=\"p1-image\" alt=\"5 best things to do in Palm Beach County this weekend (April 24-26)\">",
                        "nodeLabel": "5 best things to do in Palm Beach County this weekend (April 24-26)"
                      },
                      "cause": "Unsized image element"
                    }
                  ]
                }
              },
              {
                "node": {
                  "type": "node",
                  "lhId": "page-8-DIV",
                  "path": "1,HTML,1,BODY,12,DIV,1,DIV,0,DIV,0,DIV,1,DIV",
                  "selector": "div#onetrust-banner-sdk > div.ot-sdk-container > div.ot-sdk-row > div#onetrust-button-group-parent",
                  "boundingRect": {
                    "top": 566,
                    "bottom": 752,
                    "left": 10,
                    "right": 402,
                    "width": 391,
                    "height": 186
                  },
                  "snippet": "<div id=\"onetrust-button-group-parent\" class=\"ot-sdk-twelve ot-sdk-columns has-reject-all-button\">",
                  "nodeLabel": "Manage Cookies\nReject All Accept All"
                },
                "score": 0.004138,
                "subItems": {
                  "type": "subitems",
                  "items": [
                    {
                      "extra": {
                        "type": "node",
                        "lhId": "page-12-IMG",
                        "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,0,DIV,0,LIT-STORY-THUMB-LARGE,a,#document-fragment,1,A,0,DIV,0,PICTURE,3,IMG",
                        "selector": "a.section-helper-flex > div.section-helper-column > picture.p2-photo > img.p2-photo",
                        "boundingRect": {
                          "top": 1449,
                          "bottom": 1680,
                          "left": 0,
                          "right": 412,
                          "width": 412,
                          "height": 232
                        },
                        "snippet": "<img class=\"p2-photo\" src=\"https://www.gannett-cdn.com/presto/2020/10/28/NPPP/100bfbae-5d06-4d53-94ff…\" alt=\"Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County\">",
                        "nodeLabel": "Green Cay Wetlands Preserve, an Earth Day oasis in Palm Beach County"
                      },
                      "cause": "Unsized image element"
                    }
                  ]
                }
              }
            ]
          }
        ]
      },
      "guidanceLevel": 3
    },
    "document-latency-insight": {
      "id": "document-latency-insight",
      "title": "Document request latency",
      "description": "Your first network request is the most important. [Reduce its latency](https://developer.chrome.com/docs/performance/insights/document-latency) by avoiding redirects, ensuring a fast server response, and enabling text compression.",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "Est savings of 110 ms",
      "metricSavings": {
        "FCP": 100,
        "LCP": 100
      },
      "details": {
        "type": "checklist",
        "items": {
          "noRedirects": {
            "label": "Had redirects (2 redirects, +105 ms)",
            "value": false
          },
          "serverResponseIsFast": {
            "label": "Server responds quickly (observed 29 ms)",
            "value": true
          },
          "usesCompression": {
            "label": "Applies text compression",
            "value": true
          }
        },
        "debugData": {
          "type": "debugdata",
          "redirectDuration": 105,
          "serverResponseTime": 29,
          "uncompressedResponseBytes": 0,
          "wastedBytes": 0
        }
      },
      "guidanceLevel": 3
    },
    "dom-size-insight": {
      "id": "dom-size-insight",
      "title": "Optimize DOM size",
      "description": "A large DOM can increase the duration of style calculations and layout reflows, impacting page responsiveness. A large DOM will also increase memory usage. [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/performance/insights/dom-size).",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "numericValue": 991,
      "numericUnit": "element",
      "metricSavings": {
        "INP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "statistic",
            "valueType": "text",
            "label": "Statistic"
          },
          {
            "key": "node",
            "valueType": "node",
            "label": "Element"
          },
          {
            "key": "value",
            "valueType": "numeric",
            "label": "Value"
          }
        ],
        "items": [
          {
            "statistic": "Total elements",
            "value": {
              "type": "numeric",
              "granularity": 1,
              "value": 991
            }
          },
          {
            "statistic": "DOM depth",
            "node": {
              "type": "node",
              "lhId": "page-22-path",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,1,MEDIA-BADGE,a,#document-fragment,1,DIV,0,DIV,0,DIV,1,svg,1,g,0,path",
              "selector": "div.media-badge-icon > svg > g > path",
              "boundingRect": {
                "top": 2491,
                "bottom": 2507,
                "left": 20,
                "right": 42,
                "width": 21,
                "height": 16
              },
              "snippet": "<path d=\"M67.9,21.5h-13c0-4.1-3.2-8.2-7.1-8.2H31.4c-3.9,0-7.1,4-7.1,8.1l-13,0c-3.9,…\">",
              "nodeLabel": "div.media-badge-icon > svg > g > path"
            },
            "value": {
              "type": "numeric",
              "granularity": 1,
              "value": 19
            }
          },
          {
            "statistic": "Most children",
            "node": {
              "type": "node",
              "lhId": "page-21-defs",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV,15,A,0,DIV,1,DIV,0,DIV,1,SPAN,0,UI-ICON,a,#document-fragment,1,svg,0,defs",
              "selector": "svg#iconMap > defs",
              "boundingRect": {
                "top": 0,
                "bottom": 0,
                "left": 0,
                "right": 0,
                "width": 0,
                "height": 0
              },
              "snippet": "<defs>",
              "nodeLabel": "svg#iconMap > defs"
            },
            "value": {
              "type": "numeric",
              "granularity": 1,
              "value": 65
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "totalElements": 991,
          "maxChildren": 65,
          "maxDepth": 19
        }
      },
      "guidanceLevel": 3
    },
    "duplicated-javascript-insight": {
      "id": "duplicated-javascript-insight",
      "title": "Duplicated JavaScript",
      "description": "Remove large, [duplicate JavaScript modules](https://developer.chrome.com/docs/performance/insights/duplicated-javascript) from bundles to reduce unnecessary bytes consumed by network activity.",
      "score": null,
      "scoreDisplayMode": "error",
      "errorMessage": "duplication.values.flatMap is not a function or its return value is not iterable",
      "errorStack": "TypeError: duplication.values.flatMap is not a function or its return value is not iterable\n    at Module.generateInsight (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js:59:61)\n    at #computeInsightSet (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:369:33)\n    at #computeInsightsForNavigation (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:513:32)\n    at #computeInsights (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:445:47)\n    at TraceProcessor.parse (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:126:38)\n    at async TraceEngineResult.runTraceEngine (file:///usr/local/lib/node_modules/lighthouse/core/computed/trace-engine-result.js:43:5)\n    at async TraceEngineResult.compute_ (file:///usr/local/lib/node_modules/lighthouse/core/computed/trace-engine-result.js:256:7)",
      "guidanceLevel": 2
    },
    "font-display-insight": {
      "id": "font-display-insight",
      "title": "Font display",
      "description": "Consider setting [font-display](https://developer.chrome.com/docs/performance/insights/font-display) to swap or optional to ensure text is consistently visible. swap can be further optimized to mitigate layout shifts with [font metric overrides](https://developer.chrome.com/blog/font-fallbacks).",
      "score": 0,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "Est savings of 50 ms",
      "metricSavings": {
        "FCP": 50,
        "INP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "wastedMs",
            "valueType": "ms",
            "label": "Est Savings"
          }
        ],
        "items": [
          {
            "url": "https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2",
            "wastedMs": 45
          }
        ],
        "skipSumming": [
          "wastedMs"
        ]
      },
      "guidanceLevel": 3
    },
    "forced-reflow-insight": {
      "id": "forced-reflow-insight",
      "title": "Forced reflow",
      "description": "A forced reflow occurs when JavaScript queries geometric properties (such as offsetWidth) after styles have been invalidated by a change to the DOM state. This can result in poor performance. Learn more about [forced reflows](https://developer.chrome.com/docs/performance/insights/forced-reflow) and possible mitigations.",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "details": {
        "type": "list",
        "items": [
          {
            "type": "table",
            "headings": [
              {
                "key": "source",
                "valueType": "source-location",
                "label": "Source"
              },
              {
                "key": "reflowTime",
                "valueType": "ms",
                "granularity": 1,
                "label": "Total reflow time"
              }
            ],
            "items": []
          }
        ]
      },
      "guidanceLevel": 3
    },
    "image-delivery-insight": {
      "id": "image-delivery-insight",
      "title": "Improve image delivery",
      "description": "Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/performance/insights/image-delivery)",
      "score": 0.5,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "Est savings of 56 KiB",
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": ""
          },
          {
            "key": "url",
            "valueType": "url",
            "label": "URL",
            "subItemsHeading": {
              "key": "reason",
              "valueType": "text"
            }
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "label": "Resource Size"
          },
          {
            "key": "wastedBytes",
            "valueType": "bytes",
            "label": "Est Savings",
            "subItemsHeading": {
              "key": "wastedBytes",
              "valueType": "bytes"
            }
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "page-14-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1766,
                "bottom": 1836,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8973358900…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89733589007.jpg?width=384&quality=50&crop=16%3A9",
            "totalBytes": 18042,
            "wastedBytes": 13627,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
                  "wastedBytes": 4218
                },
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (217x122). Use responsive images to reduce the image download size.",
                  "wastedBytes": 12280
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-15-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2418,
                "bottom": 2488,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/21/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/21/NPPP/89719215007-green-cay-2.jpg?crop=3024,1700,x0,y1162&width=384&quality=50&crop=16%3A9",
            "totalBytes": 16617,
            "wastedBytes": 12202,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (217x122). Use responsive images to reduce the image download size.",
                  "wastedBytes": 11310
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-16-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2418,
                "bottom": 2488,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/NPPP/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/NPPP/89632792007-041426-data-center-01.JPG?crop=8063,4537,x0,y269&width=384&quality=50&crop=16%3A9",
            "totalBytes": 15946,
            "wastedBytes": 11531,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (217x122). Use responsive images to reduce the image download size.",
                  "wastedBytes": 10854
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-17-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1766,
                "bottom": 1836,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/89733599007-041426-data-center-103.jpg?crop=5957,3351,x0,y339&width=384&quality=50&crop=16%3A9",
            "totalBytes": 14806,
            "wastedBytes": 10391,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (217x122). Use responsive images to reduce the image download size.",
                  "wastedBytes": 10078
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-18-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,2,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 2418,
                "bottom": 2488,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/897…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/22/NPPP/89740057007-20260422-wpb-semmie-035.jpg?crop=2999,1687,x0,y156&width=384&quality=50&crop=16%3A9",
            "totalBytes": 7072,
            "wastedBytes": 4814,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (217x122). Use responsive images to reduce the image download size.",
                  "wastedBytes": 4814
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-19-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,1,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,2,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 1766,
                "bottom": 1836,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8973752100…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89737521007.jpg?width=384&quality=50&crop=16%3A9",
            "totalBytes": 6988,
            "wastedBytes": 4756,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (217x122). Use responsive images to reduce the image download size.",
                  "wastedBytes": 4756
                }
              ]
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "wastedBytes": 57321
        }
      },
      "guidanceLevel": 3
    },
    "inp-breakdown-insight": {
      "id": "inp-breakdown-insight",
      "title": "INP breakdown",
      "description": "Start investigating [how to improve INP](https://developer.chrome.com/docs/performance/insights/inp-breakdown) by looking at the longest subpart.",
      "score": null,
      "scoreDisplayMode": "notApplicable",
      "guidanceLevel": 3
    },
    "lcp-breakdown-insight": {
      "id": "lcp-breakdown-insight",
      "title": "LCP breakdown",
      "description": "Each [subpart has specific improvement strategies](https://developer.chrome.com/docs/performance/insights/lcp-breakdown). Ideally, most of the LCP time should be spent on loading the resources, not within delays.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "metricSavings": {
        "LCP": 0
      },
      "details": {
        "type": "list",
        "items": [
          {
            "type": "table",
            "headings": [
              {
                "key": "label",
                "valueType": "text",
                "label": "Subpart"
              },
              {
                "key": "duration",
                "valueType": "ms",
                "label": "Duration"
              }
            ],
            "items": [
              {
                "subpart": "timeToFirstByte",
                "label": "Time to first byte",
                "duration": 141.882
              },
              {
                "subpart": "elementRenderDelay",
                "label": "Element render delay",
                "duration": 811.83
              }
            ]
          },
          {
            "type": "node",
            "lhId": "page-0-DIV",
            "path": "1,HTML,1,BODY,12,DIV,1,DIV,0,DIV,0,DIV,0,DIV,0,DIV,3,DIV",
            "selector": "div.ot-sdk-row > div#onetrust-group-container > div#onetrust-policy > div#onetrust-policy-text",
            "boundingRect": {
              "top": 209,
              "bottom": 403,
              "left": 32,
              "right": 380,
              "width": 347,
              "height": 194
            },
            "snippet": "<div id=\"onetrust-policy-text\">",
            "nodeLabel": "We and our 140 partners store and access personal data, like browsing data or u…"
          }
        ]
      },
      "guidanceLevel": 3
    },
    "lcp-discovery-insight": {
      "id": "lcp-discovery-insight",
      "title": "LCP request discovery",
      "description": "[Optimize LCP](https://developer.chrome.com/docs/performance/insights/lcp-discovery) by making the LCP image discoverable from the HTML immediately, and avoiding lazy-loading",
      "score": null,
      "scoreDisplayMode": "notApplicable",
      "guidanceLevel": 3
    },
    "legacy-javascript-insight": {
      "id": "legacy-javascript-insight",
      "title": "Legacy JavaScript",
      "description": "Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support older browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://developer.chrome.com/docs/performance/insights/legacy-javascript)",
      "score": null,
      "scoreDisplayMode": "error",
      "errorMessage": "wastedBytesByRequestId.values(...).reduce is not a function",
      "errorStack": "TypeError: wastedBytesByRequestId.values(...).reduce is not a function\n    at Module.generateInsight (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js:79:54)\n    at #computeInsightSet (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:369:33)\n    at #computeInsightsForNavigation (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:513:32)\n    at #computeInsights (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:445:47)\n    at TraceProcessor.parse (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:126:38)\n    at async TraceEngineResult.runTraceEngine (file:///usr/local/lib/node_modules/lighthouse/core/computed/trace-engine-result.js:43:5)\n    at async TraceEngineResult.compute_ (file:///usr/local/lib/node_modules/lighthouse/core/computed/trace-engine-result.js:256:7)",
      "guidanceLevel": 2
    },
    "modern-http-insight": {
      "id": "modern-http-insight",
      "title": "Modern HTTP",
      "description": "HTTP/2 and HTTP/3 offer many benefits over HTTP/1.1, such as multiplexing. [Learn more about using modern HTTP](https://developer.chrome.com/docs/performance/insights/modern-http).",
      "score": 1,
      "scoreDisplayMode": "metricSavings",
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "protocol",
            "valueType": "text",
            "label": "Protocol"
          }
        ],
        "items": []
      },
      "guidanceLevel": 3
    },
    "network-dependency-tree-insight": {
      "id": "network-dependency-tree-insight",
      "title": "Network dependency tree",
      "description": "[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.",
      "score": 0,
      "scoreDisplayMode": "numeric",
      "metricSavings": {
        "LCP": 0
      },
      "details": {
        "type": "list",
        "items": [
          {
            "type": "list-section",
            "value": {
              "type": "network-tree",
              "chains": {
                "A0F87F04D6E954B094763E3A05F3FC31": {
                  "url": "https://eu.palmbeachpost.com/",
                  "navStartToEndTime": 161,
                  "transferSize": 33242,
                  "isLongest": true,
                  "children": {
                    "A0F87F04D6E954B094763E3A05F3FC31": {
                      "url": "https://eu.palmbeachpost.com/",
                      "navStartToEndTime": 161,
                      "transferSize": 33242,
                      "isLongest": true,
                      "children": {
                        "A0F87F04D6E954B094763E3A05F3FC31": {
                          "url": "https://eu.palmbeachpost.com/",
                          "navStartToEndTime": 161,
                          "transferSize": 33242,
                          "isLongest": true,
                          "children": {
                            "1441992.3": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
                              "navStartToEndTime": 240,
                              "transferSize": 4255,
                              "isLongest": true,
                              "children": {
                                "1441992.50": {
                                  "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
                                  "navStartToEndTime": 270,
                                  "transferSize": 5511,
                                  "isLongest": true,
                                  "children": {
                                    "1441992.120": {
                                      "url": "https://api.gannett-cdn.com/thorium/popular/NPPP/10?assettype=video&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 572,
                                      "transferSize": 2791,
                                      "isLongest": true,
                                      "children": {}
                                    },
                                    "1441992.121": {
                                      "url": "https://api.gannett-cdn.com/thorium/popular/NPPP/10?assettype=gallery&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 572,
                                      "transferSize": 3276,
                                      "children": {}
                                    },
                                    "1441992.123": {
                                      "url": "https://api.gannett-cdn.com/thorium/breaking-news/?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&site-code=NPPP",
                                      "navStartToEndTime": 566,
                                      "transferSize": 441,
                                      "children": {}
                                    },
                                    "1441992.119": {
                                      "url": "https://api.gannett-cdn.com/argon/navreimagined/nppp/top_nav_primary/?apiKey=f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh",
                                      "navStartToEndTime": 540,
                                      "transferSize": 1548,
                                      "children": {}
                                    },
                                    "1441992.118": {
                                      "url": "https://api.gannett-cdn.com/thorium/popular/NPPP/10?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&searchtype=socialReferrals",
                                      "navStartToEndTime": 539,
                                      "transferSize": 1807,
                                      "children": {}
                                    },
                                    "1441992.122": {
                                      "url": "https://user.palmbeachpost.com/NPPP-GUP/user/",
                                      "navStartToEndTime": 514,
                                      "transferSize": 0,
                                      "children": {}
                                    }
                                  }
                                },
                                "1441992.49": {
                                  "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
                                  "navStartToEndTime": 270,
                                  "transferSize": 18264,
                                  "children": {}
                                }
                              }
                            },
                            "1441992.5": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
                              "navStartToEndTime": 370,
                              "transferSize": 83901,
                              "children": {}
                            },
                            "1441992.37": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
                              "navStartToEndTime": 256,
                              "transferSize": 16823,
                              "children": {}
                            },
                            "1441992.41": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
                              "navStartToEndTime": 254,
                              "transferSize": 18151,
                              "children": {}
                            },
                            "1441992.39": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
                              "navStartToEndTime": 247,
                              "transferSize": 18096,
                              "children": {}
                            },
                            "1441992.4": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
                              "navStartToEndTime": 195,
                              "transferSize": 1108,
                              "children": {}
                            },
                            "1441992.2": {
                              "url": "https://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
                              "navStartToEndTime": 180,
                              "transferSize": 354,
                              "children": {}
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "longestChain": {
                "duration": 572
              }
            }
          },
          {
            "type": "list-section",
            "title": "Preconnected origins",
            "description": "[preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints help the browser establish a connection earlier in the page load, saving time when the first request for that origin is made. The following are the origins that the page preconnected to.",
            "value": {
              "type": "table",
              "headings": [
                {
                  "key": "origin",
                  "valueType": "text",
                  "subItemsHeading": {
                    "key": "warning"
                  },
                  "label": "Origin"
                },
                {
                  "key": "source",
                  "valueType": "node",
                  "label": "Source"
                }
              ],
              "items": [
                {
                  "origin": "https://cdn.cookielaw.org/",
                  "source": {
                    "type": "node",
                    "lhId": "page-13-LINK",
                    "path": "1,HTML,0,HEAD,13,LINK",
                    "selector": "head > link",
                    "boundingRect": {
                      "top": 0,
                      "bottom": 0,
                      "left": 0,
                      "right": 0,
                      "width": 0,
                      "height": 0
                    },
                    "snippet": "<link rel=\"preconnect\" href=\"https://cdn.cookielaw.org\">",
                    "nodeLabel": "head > link"
                  },
                  "subItems": {
                    "type": "subitems",
                    "items": [
                      {
                        "warning": "Unused preconnect. Check that the crossorigin attribute is used properly."
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "list-section",
            "title": "Preconnect candidates",
            "description": "Add [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints to your most important origins, but try to use no more than 4.",
            "value": {
              "type": "table",
              "headings": [
                {
                  "key": "origin",
                  "valueType": "text",
                  "label": "Origin"
                },
                {
                  "key": "wastedMs",
                  "valueType": "ms",
                  "label": "Est LCP savings"
                }
              ],
              "items": [
                {
                  "origin": "https://fonts.googleapis.com",
                  "wastedMs": 351.35200000000003
                },
                {
                  "origin": "https://fonts.gstatic.com",
                  "wastedMs": 321.774
                },
                {
                  "origin": "https://cdn.cookielaw.org",
                  "wastedMs": 225.037
                }
              ]
            }
          }
        ]
      },
      "guidanceLevel": 1
    },
    "render-blocking-insight": {
      "id": "render-blocking-insight",
      "title": "Render blocking requests",
      "description": "Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://developer.chrome.com/docs/performance/insights/render-blocking) can move these network requests out of the critical path.",
      "score": 0.5,
      "scoreDisplayMode": "metricSavings",
      "metricSavings": {
        "FCP": 0,
        "LCP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "label": "Transfer Size"
          },
          {
            "key": "wastedMs",
            "valueType": "timespanMs",
            "label": "Duration"
          }
        ],
        "items": [
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
            "totalBytes": 1108
          },
          {
            "url": "https://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
            "totalBytes": 354,
            "wastedMs": 752
          }
        ]
      },
      "guidanceLevel": 3
    },
    "third-parties-insight": {
      "id": "third-parties-insight",
      "title": "3rd parties",
      "description": "3rd party code can significantly impact load performance. [Reduce and defer loading of 3rd party code](https://developer.chrome.com/docs/performance/insights/third-parties) to prioritize your page's content.",
      "score": null,
      "scoreDisplayMode": "error",
      "errorMessage": "data.Renderer.processes.values(...).find is not a function",
      "errorStack": "TypeError: data.Renderer.processes.values(...).find is not a function\n    at collectMainThreadActivity (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/extras/ThirdParties.js:17:10)\n    at Module.summarizeByThirdParty (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/extras/ThirdParties.js:30:30)\n    at Module.generateInsight (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js:58:49)\n    at #computeInsightSet (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:369:33)\n    at #computeInsightsForNavigation (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:513:32)\n    at #computeInsights (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:445:47)\n    at TraceProcessor.parse (file:///usr/local/lib/node_modules/lighthouse/node_modules/@paulirish/trace_engine/models/trace/Processor.js:126:38)\n    at async TraceEngineResult.runTraceEngine (file:///usr/local/lib/node_modules/lighthouse/core/computed/trace-engine-result.js:43:5)\n    at async TraceEngineResult.compute_ (file:///usr/local/lib/node_modules/lighthouse/core/computed/trace-engine-result.js:256:7)",
      "guidanceLevel": 3
    },
    "viewport-insight": {
      "id": "viewport-insight",
      "title": "Optimize viewport for mobile",
      "description": "Tap interactions may be [delayed by up to 300 ms](https://developer.chrome.com/docs/performance/insights/viewport) if the viewport is not optimized for mobile.",
      "score": 1,
      "scoreDisplayMode": "numeric",
      "metricSavings": {
        "INP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "label": ""
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "page-20-META",
              "path": "1,HTML,0,HEAD,4,META",
              "selector": "head > meta",
              "boundingRect": {
                "top": 0,
                "bottom": 0,
                "left": 0,
                "right": 0,
                "width": 0,
                "height": 0
              },
              "snippet": "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">",
              "nodeLabel": "head > meta"
            }
          }
        ]
      },
      "guidanceLevel": 3
    }
  },
  "configSettings": {
    "output": [
      "json"
    ],
    "maxWaitForFcp": 30000,
    "maxWaitForLoad": 45000,
    "pauseAfterFcpMs": 1000,
    "pauseAfterLoadMs": 1000,
    "networkQuietThresholdMs": 1000,
    "cpuQuietThresholdMs": 1000,
    "formFactor": "mobile",
    "throttling": {
      "rttMs": 150,
      "throughputKbps": 1638.4,
      "requestLatencyMs": 562.5,
      "downloadThroughputKbps": 1474.5600000000002,
      "uploadThroughputKbps": 675,
      "cpuSlowdownMultiplier": 4
    },
    "throttlingMethod": "simulate",
    "screenEmulation": {
      "mobile": true,
      "width": 412,
      "height": 823,
      "deviceScaleFactor": 1.75,
      "disabled": false
    },
    "emulatedUserAgent": "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36",
    "auditMode": false,
    "gatherMode": false,
    "clearStorageTypes": [
      "file_systems",
      "shader_cache",
      "service_workers",
      "cache_storage"
    ],
    "disableStorageReset": false,
    "debugNavigation": false,
    "channel": "cli",
    "usePassiveGathering": false,
    "disableFullPageScreenshot": false,
    "skipAboutBlank": false,
    "blankPage": "about:blank",
    "ignoreStatusCode": false,
    "locale": "en-US",
    "blockedUrlPatterns": null,
    "additionalTraceCategories": null,
    "extraHeaders": null,
    "precomputedLanternData": null,
    "onlyAudits": null,
    "onlyCategories": null,
    "skipAudits": null
  },
  "categories": {
    "performance": {
      "title": "Performance",
      "supportedModes": [
        "navigation",
        "timespan",
        "snapshot"
      ],
      "auditRefs": [
        {
          "id": "first-contentful-paint",
          "weight": 10,
          "group": "metrics",
          "acronym": "FCP"
        },
        {
          "id": "largest-contentful-paint",
          "weight": 25,
          "group": "metrics",
          "acronym": "LCP"
        },
        {
          "id": "total-blocking-time",
          "weight": 30,
          "group": "metrics",
          "acronym": "TBT"
        },
        {
          "id": "cumulative-layout-shift",
          "weight": 25,
          "group": "metrics",
          "acronym": "CLS"
        },
        {
          "id": "speed-index",
          "weight": 10,
          "group": "metrics",
          "acronym": "SI"
        },
        {
          "id": "cache-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "cls-culprits-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "document-latency-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "dom-size-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "duplicated-javascript-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "font-display-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "forced-reflow-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "image-delivery-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "inp-breakdown-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "lcp-breakdown-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "lcp-discovery-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "legacy-javascript-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "modern-http-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "network-dependency-tree-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "render-blocking-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "third-parties-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "viewport-insight",
          "weight": 0,
          "group": "insights"
        },
        {
          "id": "interactive",
          "weight": 0,
          "group": "hidden",
          "acronym": "TTI"
        },
        {
          "id": "max-potential-fid",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "unminified-css",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "unminified-javascript",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "unused-css-rules",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "unused-javascript",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "total-byte-weight",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "user-timings",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "bootup-time",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "mainthread-work-breakdown",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "long-tasks",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "non-composited-animations",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "unsized-images",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "bf-cache",
          "weight": 0,
          "group": "diagnostics"
        },
        {
          "id": "network-requests",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "network-rtt",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "network-server-latency",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "main-thread-tasks",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "diagnostics",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "metrics",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "screenshot-thumbnails",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "final-screenshot",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "script-treemap-data",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "resource-summary",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "redirects",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "server-response-time",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "layout-shifts",
          "weight": 0,
          "group": "hidden"
        }
      ],
      "id": "performance",
      "score": 0.38
    },
    "accessibility": {
      "title": "Accessibility",
      "description": "These checks highlight opportunities to [improve the accessibility of your web app](https://developer.chrome.com/docs/lighthouse/accessibility/). Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so [manual testing](https://web.dev/articles/how-to-review) is also encouraged.",
      "manualDescription": "These items address areas which an automated testing tool cannot cover. Learn more in our guide on [conducting an accessibility review](https://web.dev/articles/how-to-review).",
      "supportedModes": [
        "navigation",
        "snapshot"
      ],
      "auditRefs": [
        {
          "id": "accesskeys",
          "weight": 0,
          "group": "a11y-navigation"
        },
        {
          "id": "aria-allowed-attr",
          "weight": 10,
          "group": "a11y-aria"
        },
        {
          "id": "aria-command-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-conditional-attr",
          "weight": 7,
          "group": "a11y-aria"
        },
        {
          "id": "aria-deprecated-role",
          "weight": 1,
          "group": "a11y-aria"
        },
        {
          "id": "aria-dialog-name",
          "weight": 7,
          "group": "a11y-aria"
        },
        {
          "id": "aria-hidden-body",
          "weight": 10,
          "group": "a11y-aria"
        },
        {
          "id": "aria-hidden-focus",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-input-field-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-meter-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-progressbar-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-prohibited-attr",
          "weight": 7,
          "group": "a11y-aria"
        },
        {
          "id": "aria-required-attr",
          "weight": 10,
          "group": "a11y-aria"
        },
        {
          "id": "aria-required-children",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-required-parent",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-roles",
          "weight": 10,
          "group": "a11y-aria"
        },
        {
          "id": "aria-text",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-toggle-field-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-tooltip-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-treeitem-name",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "aria-valid-attr-value",
          "weight": 10,
          "group": "a11y-aria"
        },
        {
          "id": "aria-valid-attr",
          "weight": 10,
          "group": "a11y-aria"
        },
        {
          "id": "button-name",
          "weight": 10,
          "group": "a11y-names-labels"
        },
        {
          "id": "bypass",
          "weight": 0,
          "group": "a11y-navigation"
        },
        {
          "id": "color-contrast",
          "weight": 7,
          "group": "a11y-color-contrast"
        },
        {
          "id": "definition-list",
          "weight": 0,
          "group": "a11y-tables-lists"
        },
        {
          "id": "dlitem",
          "weight": 0,
          "group": "a11y-tables-lists"
        },
        {
          "id": "document-title",
          "weight": 7,
          "group": "a11y-names-labels"
        },
        {
          "id": "duplicate-id-aria",
          "weight": 0,
          "group": "a11y-aria"
        },
        {
          "id": "form-field-multiple-labels",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "frame-title",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "heading-order",
          "weight": 3,
          "group": "a11y-navigation"
        },
        {
          "id": "html-has-lang",
          "weight": 7,
          "group": "a11y-language"
        },
        {
          "id": "html-lang-valid",
          "weight": 7,
          "group": "a11y-language"
        },
        {
          "id": "html-xml-lang-mismatch",
          "weight": 0,
          "group": "a11y-language"
        },
        {
          "id": "image-alt",
          "weight": 10,
          "group": "a11y-names-labels"
        },
        {
          "id": "input-button-name",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "input-image-alt",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "label",
          "weight": 10,
          "group": "a11y-names-labels"
        },
        {
          "id": "link-in-text-block",
          "weight": 7,
          "group": "a11y-color-contrast"
        },
        {
          "id": "link-name",
          "weight": 7,
          "group": "a11y-names-labels"
        },
        {
          "id": "list",
          "weight": 7,
          "group": "a11y-tables-lists"
        },
        {
          "id": "listitem",
          "weight": 7,
          "group": "a11y-tables-lists"
        },
        {
          "id": "meta-refresh",
          "weight": 0,
          "group": "a11y-best-practices"
        },
        {
          "id": "meta-viewport",
          "weight": 10,
          "group": "a11y-best-practices"
        },
        {
          "id": "object-alt",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "select-name",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "skip-link",
          "weight": 3,
          "group": "a11y-names-labels"
        },
        {
          "id": "tabindex",
          "weight": 7,
          "group": "a11y-navigation"
        },
        {
          "id": "target-size",
          "weight": 7,
          "group": "a11y-best-practices"
        },
        {
          "id": "td-headers-attr",
          "weight": 0,
          "group": "a11y-tables-lists"
        },
        {
          "id": "th-has-data-cells",
          "weight": 0,
          "group": "a11y-tables-lists"
        },
        {
          "id": "valid-lang",
          "weight": 0,
          "group": "a11y-language"
        },
        {
          "id": "video-caption",
          "weight": 0,
          "group": "a11y-audio-video"
        },
        {
          "id": "landmark-one-main",
          "weight": 3,
          "group": "a11y-best-practices"
        },
        {
          "id": "focusable-controls",
          "weight": 0
        },
        {
          "id": "interactive-element-affordance",
          "weight": 0
        },
        {
          "id": "logical-tab-order",
          "weight": 0
        },
        {
          "id": "visual-order-follows-dom",
          "weight": 0
        },
        {
          "id": "focus-traps",
          "weight": 0
        },
        {
          "id": "managed-focus",
          "weight": 0
        },
        {
          "id": "use-landmarks",
          "weight": 0
        },
        {
          "id": "offscreen-content-hidden",
          "weight": 0
        },
        {
          "id": "custom-controls-labels",
          "weight": 0
        },
        {
          "id": "custom-controls-roles",
          "weight": 0
        },
        {
          "id": "table-duplicate-name",
          "weight": 0,
          "group": "a11y-best-practices"
        },
        {
          "id": "empty-heading",
          "weight": 0,
          "group": "a11y-best-practices"
        },
        {
          "id": "aria-allowed-role",
          "weight": 0,
          "group": "a11y-best-practices"
        },
        {
          "id": "image-redundant-alt",
          "weight": 0,
          "group": "a11y-names-labels"
        },
        {
          "id": "identical-links-same-purpose",
          "weight": 0,
          "group": "a11y-best-practices"
        },
        {
          "id": "label-content-name-mismatch",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "table-fake-caption",
          "weight": 0,
          "group": "hidden"
        },
        {
          "id": "td-has-header",
          "weight": 0,
          "group": "hidden"
        }
      ],
      "id": "accessibility",
      "score": 0.92
    },
    "best-practices": {
      "title": "Best Practices",
      "supportedModes": [
        "navigation",
        "timespan",
        "snapshot"
      ],
      "auditRefs": [
        {
          "id": "is-on-https",
          "weight": 5,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "redirects-http",
          "weight": 0,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "geolocation-on-start",
          "weight": 1,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "notification-on-start",
          "weight": 1,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "csp-xss",
          "weight": 0,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "has-hsts",
          "weight": 0,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "origin-isolation",
          "weight": 0,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "clickjacking-mitigation",
          "weight": 0,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "trusted-types-xss",
          "weight": 0,
          "group": "best-practices-trust-safety"
        },
        {
          "id": "paste-preventing-inputs",
          "weight": 3,
          "group": "best-practices-ux"
        },
        {
          "id": "image-aspect-ratio",
          "weight": 1,
          "group": "best-practices-ux"
        },
        {
          "id": "image-size-responsive",
          "weight": 1,
          "group": "best-practices-ux"
        },
        {
          "id": "doctype",
          "weight": 1,
          "group": "best-practices-browser-compat"
        },
        {
          "id": "charset",
          "weight": 1,
          "group": "best-practices-browser-compat"
        },
        {
          "id": "js-libraries",
          "weight": 0,
          "group": "best-practices-general"
        },
        {
          "id": "deprecations",
          "weight": 5,
          "group": "best-practices-general"
        },
        {
          "id": "third-party-cookies",
          "weight": 5,
          "group": "best-practices-general"
        },
        {
          "id": "errors-in-console",
          "weight": 1,
          "group": "best-practices-general"
        },
        {
          "id": "valid-source-maps",
          "weight": 0,
          "group": "best-practices-general"
        },
        {
          "id": "inspector-issues",
          "weight": 1,
          "group": "best-practices-general"
        }
      ],
      "id": "best-practices",
      "score": 0.96
    },
    "seo": {
      "title": "SEO",
      "description": "These checks ensure that your page is following basic search engine optimization advice. There are many additional factors Lighthouse does not score here that may affect your search ranking, including performance on [Core Web Vitals](https://web.dev/explore/vitals). [Learn more about Google Search Essentials](https://support.google.com/webmasters/answer/35769).",
      "manualDescription": "Run these additional validators on your site to check additional SEO best practices.",
      "supportedModes": [
        "navigation",
        "snapshot"
      ],
      "auditRefs": [
        {
          "id": "is-crawlable",
          "weight": 4.043478260869565,
          "group": "seo-crawl"
        },
        {
          "id": "document-title",
          "weight": 1,
          "group": "seo-content"
        },
        {
          "id": "meta-description",
          "weight": 1,
          "group": "seo-content"
        },
        {
          "id": "http-status-code",
          "weight": 1,
          "group": "seo-crawl"
        },
        {
          "id": "link-text",
          "weight": 1,
          "group": "seo-content"
        },
        {
          "id": "crawlable-anchors",
          "weight": 1,
          "group": "seo-crawl"
        },
        {
          "id": "robots-txt",
          "weight": 1,
          "group": "seo-crawl"
        },
        {
          "id": "image-alt",
          "weight": 1,
          "group": "seo-content"
        },
        {
          "id": "hreflang",
          "weight": 1,
          "group": "seo-content"
        },
        {
          "id": "canonical",
          "weight": 1,
          "group": "seo-content"
        },
        {
          "id": "structured-data",
          "weight": 0
        }
      ],
      "id": "seo",
      "score": 0.54
    }
  },
  "categoryGroups": {
    "metrics": {
      "title": "Metrics"
    },
    "insights": {
      "title": "Insights",
      "description": "These insights are also available in the Chrome DevTools Performance Panel - [record a trace](https://developer.chrome.com/docs/devtools/performance/reference) to view more detailed information."
    },
    "diagnostics": {
      "title": "Diagnostics",
      "description": "More information about the performance of your application. These numbers don't [directly affect](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) the Performance score."
    },
    "a11y-best-practices": {
      "title": "Best practices",
      "description": "These items highlight common accessibility best practices."
    },
    "a11y-color-contrast": {
      "title": "Contrast",
      "description": "These are opportunities to improve the legibility of your content."
    },
    "a11y-names-labels": {
      "title": "Names and labels",
      "description": "These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader."
    },
    "a11y-navigation": {
      "title": "Navigation",
      "description": "These are opportunities to improve keyboard navigation in your application."
    },
    "a11y-aria": {
      "title": "ARIA",
      "description": "These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader."
    },
    "a11y-language": {
      "title": "Internationalization and localization",
      "description": "These are opportunities to improve the interpretation of your content by users in different locales."
    },
    "a11y-audio-video": {
      "title": "Audio and video",
      "description": "These are opportunities to provide alternative content for audio and video. This may improve the experience for users with hearing or vision impairments."
    },
    "a11y-tables-lists": {
      "title": "Tables and lists",
      "description": "These are opportunities to improve the experience of reading tabular or list data using assistive technology, like a screen reader."
    },
    "seo-mobile": {
      "title": "Mobile Friendly",
      "description": "Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn how to make pages mobile-friendly](https://developers.google.com/search/mobile-sites/)."
    },
    "seo-content": {
      "title": "Content Best Practices",
      "description": "Format your HTML in a way that enables crawlers to better understand your app’s content."
    },
    "seo-crawl": {
      "title": "Crawling and Indexing",
      "description": "To appear in search results, crawlers need access to your app."
    },
    "best-practices-trust-safety": {
      "title": "Trust and Safety"
    },
    "best-practices-ux": {
      "title": "User Experience"
    },
    "best-practices-browser-compat": {
      "title": "Browser Compatibility"
    },
    "best-practices-general": {
      "title": "General"
    },
    "hidden": {
      "title": ""
    }
  },
  "stackPacks": [],
  "entities": [
    {
      "name": "palmbeachpost.com",
      "origins": [
        "https://palmbeachpost.com",
        "https://www.palmbeachpost.com",
        "https://eu.palmbeachpost.com",
        "https://user.palmbeachpost.com",
        "https://atoms.palmbeachpost.com"
      ],
      "isFirstParty": true,
      "isUnrecognized": true
    },
    {
      "name": "polyfill-fastly.io",
      "origins": [
        "https://polyfill-fastly.io"
      ],
      "isUnrecognized": true
    },
    {
      "name": "gannettdigital.com",
      "origins": [
        "https://cpt-static.gannettdigital.com"
      ],
      "isUnrecognized": true
    },
    {
      "name": "gannett-cdn.com",
      "origins": [
        "https://www.gannett-cdn.com",
        "https://api.gannett-cdn.com"
      ],
      "isUnrecognized": true
    },
    {
      "name": "Optanon",
      "homepage": "https://www.cookielaw.org/",
      "origins": [
        "https://cdn.cookielaw.org"
      ],
      "category": "consent-provider"
    },
    {
      "name": "Google Fonts",
      "homepage": "https://fonts.google.com/",
      "origins": [
        "https://fonts.googleapis.com",
        "https://fonts.gstatic.com"
      ],
      "category": "cdn"
    }
  ],
  "fullPageScreenshot": {
    "screenshot": {
      "data": "data:image/webp;base64,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",
      "width": 412,
      "height": 2936
    },
    "nodes": {
      "page-0-DIV": {
        "id": "onetrust-policy-text",
        "top": 1265,
        "bottom": 1459,
        "left": 32,
        "right": 380,
        "width": 347,
        "height": 194
      },
      "page-1-A": {
        "id": "",
        "top": 546,
        "bottom": 650,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "page-2-A": {
        "id": "",
        "top": 425,
        "bottom": 530,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "page-3-A": {
        "id": "",
        "top": 666,
        "bottom": 771,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "page-4-DIV": {
        "id": "itemWrapper",
        "top": 0,
        "bottom": 55,
        "left": 215,
        "right": 412,
        "width": 197,
        "height": 55
      },
      "page-5-A": {
        "id": "",
        "top": 184,
        "bottom": 289,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "page-6-A": {
        "id": "",
        "top": 305,
        "bottom": 409,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "page-7-A": {
        "id": "",
        "top": 787,
        "bottom": 891,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "page-8-DIV": {
        "id": "onetrust-button-group-parent",
        "top": 1623,
        "bottom": 1809,
        "left": 10,
        "right": 402,
        "width": 391,
        "height": 186
      },
      "page-9-DIV": {
        "id": "",
        "top": 1469,
        "bottom": 1613,
        "left": 32,
        "right": 380,
        "width": 347,
        "height": 144
      },
      "page-10-IMG": {
        "id": "",
        "top": 305,
        "bottom": 409,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "page-11-IMG": {
        "id": "",
        "top": 64,
        "bottom": 168,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "page-12-IMG": {
        "id": "",
        "top": 1449,
        "bottom": 1680,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "page-13-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "page-14-IMG": {
        "id": "",
        "top": 1766,
        "bottom": 1836,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-15-IMG": {
        "id": "",
        "top": 2418,
        "bottom": 2488,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-16-IMG": {
        "id": "",
        "top": 2418,
        "bottom": 2488,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-17-IMG": {
        "id": "",
        "top": 1766,
        "bottom": 1836,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-18-IMG": {
        "id": "",
        "top": 2418,
        "bottom": 2488,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-19-IMG": {
        "id": "",
        "top": 1766,
        "bottom": 1836,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-20-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "page-21-defs": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "page-22-path": {
        "id": "",
        "top": 2491,
        "bottom": 2507,
        "left": 20,
        "right": 42,
        "width": 21,
        "height": 16
      },
      "1-0-H5": {
        "id": "",
        "top": 1416,
        "bottom": 1436,
        "left": 0,
        "right": 193,
        "width": 193,
        "height": 20
      },
      "1-1-IMG": {
        "id": "",
        "top": 1766,
        "bottom": 1836,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-2-IMG": {
        "id": "",
        "top": 1766,
        "bottom": 1836,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-3-IMG": {
        "id": "",
        "top": 1766,
        "bottom": 1836,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-4-IMG": {
        "id": "",
        "top": 1995,
        "bottom": 2065,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-5-IMG": {
        "id": "",
        "top": 1995,
        "bottom": 2065,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-6-IMG": {
        "id": "",
        "top": 1995,
        "bottom": 2065,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-7-IMG": {
        "id": "",
        "top": 1999,
        "bottom": 2069,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-8-IMG": {
        "id": "",
        "top": 1999,
        "bottom": 2069,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-9-IMG": {
        "id": "",
        "top": 1999,
        "bottom": 2069,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-10-IMG": {
        "id": "",
        "top": 2418,
        "bottom": 2488,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-11-IMG": {
        "id": "",
        "top": 2418,
        "bottom": 2488,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-12-IMG": {
        "id": "",
        "top": 2418,
        "bottom": 2488,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-13-IMG": {
        "id": "",
        "top": 2647,
        "bottom": 2717,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-14-IMG": {
        "id": "",
        "top": 2647,
        "bottom": 2717,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-15-IMG": {
        "id": "",
        "top": 2647,
        "bottom": 2717,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-16-IMG": {
        "id": "",
        "top": 2651,
        "bottom": 2721,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-17-IMG": {
        "id": "",
        "top": 2651,
        "bottom": 2721,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-18-IMG": {
        "id": "",
        "top": 2651,
        "bottom": 2721,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-19-A": {
        "id": "",
        "top": 1403,
        "bottom": 1456,
        "left": 32,
        "right": 351,
        "width": 318,
        "height": 53
      },
      "1-20-A": {
        "id": "skipToMain",
        "top": 10,
        "bottom": 30,
        "left": -999,
        "right": -843,
        "width": 156,
        "height": 20
      },
      "1-21-INPUT": {
        "id": "",
        "top": 109,
        "bottom": 165,
        "left": -362,
        "right": -74,
        "width": 287,
        "height": 56
      },
      "1-22-DIV": {
        "id": "",
        "top": 1621,
        "bottom": 1658,
        "left": 72,
        "right": 162,
        "width": 90,
        "height": 37
      },
      "1-23-A": {
        "id": "logoContainer",
        "top": 12,
        "bottom": 44,
        "left": 60,
        "right": 200,
        "width": 140,
        "height": 32
      },
      "1-24-A": {
        "id": "homeLink",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-25-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-26-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-27-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-28-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-29-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-30-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-31-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-32-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-33-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-34-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-35-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-36-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-37-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-38-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-39-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-40-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-41-A": {
        "id": "hubLogo",
        "top": 32,
        "bottom": 77,
        "left": -378,
        "right": -181,
        "width": 197,
        "height": 45
      },
      "1-42-A": {
        "id": "",
        "top": 236,
        "bottom": 314,
        "left": -378,
        "right": -34,
        "width": 343,
        "height": 78
      },
      "1-43-A": {
        "id": "",
        "top": 330,
        "bottom": 389,
        "left": -378,
        "right": -34,
        "width": 343,
        "height": 59
      },
      "1-44-A": {
        "id": "",
        "top": 405,
        "bottom": 446,
        "left": -378,
        "right": -34,
        "width": 343,
        "height": 41
      },
      "1-45-A": {
        "id": "",
        "top": 462,
        "bottom": 521,
        "left": -378,
        "right": -34,
        "width": 343,
        "height": 59
      },
      "1-46-A": {
        "id": "",
        "top": 64,
        "bottom": 168,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-47-A": {
        "id": "",
        "top": 184,
        "bottom": 289,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-48-A": {
        "id": "",
        "top": 305,
        "bottom": 409,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-49-A": {
        "id": "",
        "top": 425,
        "bottom": 530,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-50-A": {
        "id": "",
        "top": 546,
        "bottom": 650,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-51-A": {
        "id": "",
        "top": 666,
        "bottom": 771,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-52-A": {
        "id": "",
        "top": 787,
        "bottom": 891,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-53-A": {
        "id": "",
        "top": 907,
        "bottom": 1012,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-54-A": {
        "id": "",
        "top": 1028,
        "bottom": 1132,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-55-A": {
        "id": "",
        "top": 1148,
        "bottom": 1252,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-56-A": {
        "id": "",
        "top": 1268,
        "bottom": 1373,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-57-A": {
        "id": "",
        "top": 1397,
        "bottom": 1449,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-58-A": {
        "id": "",
        "top": 1449,
        "bottom": 1765,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 316
      },
      "1-59-A": {
        "id": "",
        "top": 1766,
        "bottom": 1991,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-60-A": {
        "id": "",
        "top": 1766,
        "bottom": 1991,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-61-A": {
        "id": "",
        "top": 1766,
        "bottom": 1991,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-62-A": {
        "id": "",
        "top": 1995,
        "bottom": 2215,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-63-A": {
        "id": "",
        "top": 1995,
        "bottom": 2215,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-64-A": {
        "id": "",
        "top": 1995,
        "bottom": 2215,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-65-A": {
        "id": "",
        "top": 1999,
        "bottom": 2219,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-66-A": {
        "id": "",
        "top": 1999,
        "bottom": 2219,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-67-A": {
        "id": "",
        "top": 1999,
        "bottom": 2219,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-68-A": {
        "id": "",
        "top": 2006,
        "bottom": 2034,
        "left": 72,
        "right": 340,
        "width": 267,
        "height": 28
      },
      "1-69-A": {
        "id": "",
        "top": 2050,
        "bottom": 2102,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-70-A": {
        "id": "",
        "top": 2102,
        "bottom": 2417,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 315
      },
      "1-71-A": {
        "id": "",
        "top": 2418,
        "bottom": 2643,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-72-A": {
        "id": "",
        "top": 2418,
        "bottom": 2643,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-73-A": {
        "id": "",
        "top": 2418,
        "bottom": 2643,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-74-A": {
        "id": "",
        "top": 2647,
        "bottom": 2867,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-75-A": {
        "id": "",
        "top": 2647,
        "bottom": 2867,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-76-A": {
        "id": "",
        "top": 2647,
        "bottom": 2867,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-77-A": {
        "id": "",
        "top": 2651,
        "bottom": 2871,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-78-A": {
        "id": "",
        "top": 2651,
        "bottom": 2871,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-79-A": {
        "id": "",
        "top": 2651,
        "bottom": 2871,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-80-A": {
        "id": "",
        "top": 2658,
        "bottom": 2686,
        "left": 65,
        "right": 347,
        "width": 281,
        "height": 28
      },
      "1-81-A": {
        "id": "",
        "top": 2742,
        "bottom": 2760,
        "left": 26,
        "right": 69,
        "width": 43,
        "height": 18
      },
      "1-82-A": {
        "id": "",
        "top": 2742,
        "bottom": 2760,
        "left": 76,
        "right": 198,
        "width": 123,
        "height": 18
      },
      "1-83-A": {
        "id": "",
        "top": 2770,
        "bottom": 2788,
        "left": 26,
        "right": 256,
        "width": 230,
        "height": 18
      },
      "1-84-A": {
        "id": "",
        "top": 2770,
        "bottom": 2788,
        "left": 263,
        "right": 366,
        "width": 102,
        "height": 18
      },
      "1-85-A": {
        "id": "",
        "top": 2798,
        "bottom": 2816,
        "left": 26,
        "right": 96,
        "width": 70,
        "height": 18
      },
      "1-86-A": {
        "id": "",
        "top": 2798,
        "bottom": 2816,
        "left": 103,
        "right": 198,
        "width": 95,
        "height": 18
      },
      "1-87-A": {
        "id": "",
        "top": 2798,
        "bottom": 2816,
        "left": 205,
        "right": 358,
        "width": 153,
        "height": 18
      },
      "1-88-A": {
        "id": "",
        "top": 2826,
        "bottom": 2844,
        "left": 26,
        "right": 192,
        "width": 166,
        "height": 18
      },
      "1-89-A": {
        "id": "",
        "top": 2826,
        "bottom": 2844,
        "left": 199,
        "right": 375,
        "width": 177,
        "height": 18
      },
      "1-90-LABEL": {
        "id": "",
        "top": 109,
        "bottom": 165,
        "left": -378,
        "right": -58,
        "width": 319,
        "height": 56
      },
      "1-91-IMG": {
        "id": "logo",
        "top": 12,
        "bottom": 44,
        "left": 60,
        "right": 200,
        "width": 140,
        "height": 32
      },
      "1-92-IMG": {
        "id": "sidebarLogo",
        "top": 32,
        "bottom": 77,
        "left": -378,
        "right": -181,
        "width": 197,
        "height": 45
      },
      "1-93-IMG": {
        "id": "",
        "top": 64,
        "bottom": 168,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-94-IMG": {
        "id": "",
        "top": 184,
        "bottom": 289,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-95-IMG": {
        "id": "",
        "top": 305,
        "bottom": 409,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-96-IMG": {
        "id": "",
        "top": 425,
        "bottom": 530,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-97-IMG": {
        "id": "",
        "top": 546,
        "bottom": 650,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-98-IMG": {
        "id": "",
        "top": 666,
        "bottom": 771,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-99-IMG": {
        "id": "",
        "top": 787,
        "bottom": 891,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-100-IMG": {
        "id": "",
        "top": 907,
        "bottom": 1012,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-101-IMG": {
        "id": "",
        "top": 1028,
        "bottom": 1132,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-102-IMG": {
        "id": "externalImage",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-103-IMG": {
        "id": "",
        "top": 1148,
        "bottom": 1252,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-104-IMG": {
        "id": "",
        "top": 1268,
        "bottom": 1373,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-105-IMG": {
        "id": "",
        "top": 1449,
        "bottom": 1680,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-106-IMG": {
        "id": "",
        "top": 2102,
        "bottom": 2142,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 40
      },
      "1-107-DIV": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-108-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-109-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-110-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-111-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-112-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-113-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-114-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-115-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-116-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-117-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-118-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-119-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-120-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-121-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-122-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-123-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-124-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-125-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-126-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-127-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-128-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-129-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-130-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-131-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-132-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-133-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-134-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-135-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-136-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-137-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-138-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-139-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-140-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-141-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-142-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-143-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-144-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-145-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-146-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-147-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-148-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-149-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-150-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-151-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-152-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-153-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-154-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-155-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-156-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-157-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-158-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-159-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-160-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-161-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-162-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-163-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-164-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-165-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-166-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-167-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-168-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-169-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-170-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-171-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-172-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-173-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-174-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-175-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-176-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-177-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-178-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-179-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-180-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-181-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-182-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-183-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-184-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-185-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-186-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-187-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-188-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-189-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-190-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-191-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-192-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-193-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-194-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-195-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-196-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-197-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-198-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-199-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-200-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-201-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-202-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-203-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-204-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-205-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-206-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-207-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-208-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-209-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-210-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-211-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-212-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-213-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-214-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-215-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-216-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-217-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-218-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-219-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-220-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-221-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-222-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-223-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-224-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-225-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-226-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-227-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-228-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-229-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-230-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-231-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-232-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-233-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-234-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-235-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-236-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-237-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-238-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-239-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-240-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-241-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-242-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-243-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-244-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-245-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-246-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-247-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-248-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-249-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-250-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-251-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-252-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-253-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-254-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-255-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-256-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-257-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-258-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-259-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-260-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-261-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-262-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-263-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-264-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-265-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-266-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-267-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-268-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-269-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-270-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-271-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-272-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-273-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-274-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-275-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-276-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-277-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-278-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-279-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-280-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-281-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-282-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-283-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-284-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-285-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-286-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-287-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-288-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-289-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-290-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-291-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-292-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-293-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-294-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-295-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-296-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-297-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-298-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-299-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-300-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-301-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-302-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-303-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-304-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-305-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-306-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-307-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-308-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-309-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-310-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-311-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-312-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-313-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-314-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-315-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-316-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-317-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-318-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-319-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-320-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-321-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-322-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-323-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-324-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-325-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-326-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-327-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-328-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-329-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-330-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-331-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-332-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-333-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-334-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-335-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-336-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-337-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-338-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-339-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-340-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-341-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-342-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-343-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-344-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-345-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-346-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-347-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-348-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-349-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-350-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-351-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-352-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-353-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-354-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-355-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-356-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-357-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-358-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-359-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-360-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-361-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-362-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-363-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-364-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-365-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-366-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-367-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-368-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-369-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-370-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-371-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-372-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-373-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-374-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-375-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-376-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-377-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-378-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-379-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-380-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-381-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-382-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-383-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      }
    }
  },
  "timing": {
    "entries": [
      {
        "startTime": 1556.9,
        "name": "lh:config",
        "duration": 437.61,
        "entryType": "measure"
      },
      {
        "startTime": 1559.23,
        "name": "lh:config:resolveArtifactsToDefns",
        "duration": 38.6,
        "entryType": "measure"
      },
      {
        "startTime": 1994.72,
        "name": "lh:runner:gather",
        "duration": 9060.04,
        "entryType": "measure"
      },
      {
        "startTime": 2114.8,
        "name": "lh:driver:connect",
        "duration": 10.99,
        "entryType": "measure"
      },
      {
        "startTime": 2126.05,
        "name": "lh:driver:navigate",
        "duration": 8.89,
        "entryType": "measure"
      },
      {
        "startTime": 2135.7,
        "name": "lh:gather:getBenchmarkIndex",
        "duration": 1009.05,
        "entryType": "measure"
      },
      {
        "startTime": 3145.35,
        "name": "lh:gather:getVersion",
        "duration": 1.36,
        "entryType": "measure"
      },
      {
        "startTime": 3146.87,
        "name": "lh:gather:getDevicePixelRatio",
        "duration": 2.06,
        "entryType": "measure"
      },
      {
        "startTime": 3149.4,
        "name": "lh:prepare:navigationMode",
        "duration": 32.2,
        "entryType": "measure"
      },
      {
        "startTime": 3150.68,
        "name": "lh:gather:getVersion",
        "duration": 0.62,
        "entryType": "measure"
      },
      {
        "startTime": 3171.03,
        "name": "lh:storage:clearDataForOrigin",
        "duration": 3.95,
        "entryType": "measure"
      },
      {
        "startTime": 3175.12,
        "name": "lh:storage:clearBrowserCaches",
        "duration": 4.13,
        "entryType": "measure"
      },
      {
        "startTime": 3180.24,
        "name": "lh:gather:prepareThrottlingAndNetwork",
        "duration": 1.26,
        "entryType": "measure"
      },
      {
        "startTime": 3212.5,
        "name": "lh:driver:navigate",
        "duration": 3607.68,
        "entryType": "measure"
      },
      {
        "startTime": 7589.04,
        "name": "lh:computed:NetworkRecords",
        "duration": 9.33,
        "entryType": "measure"
      },
      {
        "startTime": 7598.92,
        "name": "lh:gather:getArtifact:DevtoolsLog",
        "duration": 0.05,
        "entryType": "measure"
      },
      {
        "startTime": 7598.99,
        "name": "lh:gather:getArtifact:Trace",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 7599.01,
        "name": "lh:gather:getArtifact:Accessibility",
        "duration": 442.94,
        "entryType": "measure"
      },
      {
        "startTime": 8042.02,
        "name": "lh:gather:getArtifact:AnchorElements",
        "duration": 96.12,
        "entryType": "measure"
      },
      {
        "startTime": 8138.18,
        "name": "lh:gather:getArtifact:ConsoleMessages",
        "duration": 0.07,
        "entryType": "measure"
      },
      {
        "startTime": 8138.26,
        "name": "lh:gather:getArtifact:CSSUsage",
        "duration": 140.39,
        "entryType": "measure"
      },
      {
        "startTime": 8278.7,
        "name": "lh:gather:getArtifact:Doctype",
        "duration": 1.5,
        "entryType": "measure"
      },
      {
        "startTime": 8280.23,
        "name": "lh:gather:getArtifact:Inputs",
        "duration": 7.26,
        "entryType": "measure"
      },
      {
        "startTime": 8287.52,
        "name": "lh:gather:getArtifact:ImageElements",
        "duration": 265.47,
        "entryType": "measure"
      },
      {
        "startTime": 8553.26,
        "name": "lh:gather:getArtifact:InspectorIssues",
        "duration": 0.29,
        "entryType": "measure"
      },
      {
        "startTime": 8553.58,
        "name": "lh:gather:getArtifact:JsUsage",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 8553.88,
        "name": "lh:gather:getArtifact:LinkElements",
        "duration": 29.27,
        "entryType": "measure"
      },
      {
        "startTime": 8582.73,
        "name": "lh:computed:MainResource",
        "duration": 0.3,
        "entryType": "measure"
      },
      {
        "startTime": 8583.18,
        "name": "lh:gather:getArtifact:MainDocumentContent",
        "duration": 4.55,
        "entryType": "measure"
      },
      {
        "startTime": 8587.77,
        "name": "lh:gather:getArtifact:MetaElements",
        "duration": 4.39,
        "entryType": "measure"
      },
      {
        "startTime": 8592.21,
        "name": "lh:gather:getArtifact:NetworkUserAgent",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 8592.5,
        "name": "lh:gather:getArtifact:RobotsTxt",
        "duration": 7.44,
        "entryType": "measure"
      },
      {
        "startTime": 8599.98,
        "name": "lh:gather:getArtifact:Scripts",
        "duration": 0.37,
        "entryType": "measure"
      },
      {
        "startTime": 8600.39,
        "name": "lh:gather:getArtifact:SourceMaps",
        "duration": 224.68,
        "entryType": "measure"
      },
      {
        "startTime": 8825.14,
        "name": "lh:gather:getArtifact:Stacks",
        "duration": 16.63,
        "entryType": "measure"
      },
      {
        "startTime": 8825.47,
        "name": "lh:gather:collectStacks",
        "duration": 16.26,
        "entryType": "measure"
      },
      {
        "startTime": 8841.79,
        "name": "lh:gather:getArtifact:Stylesheets",
        "duration": 37.39,
        "entryType": "measure"
      },
      {
        "startTime": 8879.28,
        "name": "lh:gather:getArtifact:TraceElements",
        "duration": 734.65,
        "entryType": "measure"
      },
      {
        "startTime": 8879.71,
        "name": "lh:computed:TraceEngineResult",
        "duration": 682.01,
        "entryType": "measure"
      },
      {
        "startTime": 8879.85,
        "name": "lh:computed:ProcessedTrace",
        "duration": 56.86,
        "entryType": "measure"
      },
      {
        "startTime": 8939.78,
        "name": "lh:computed:TraceEngineResult:total",
        "duration": 614.01,
        "entryType": "measure"
      },
      {
        "startTime": 8939.81,
        "name": "lh:computed:TraceEngineResult:parse",
        "duration": 289.59,
        "entryType": "measure"
      },
      {
        "startTime": 8940.6,
        "name": "lh:computed:TraceEngineResult:parse:handleEvent",
        "duration": 175.07,
        "entryType": "measure"
      },
      {
        "startTime": 9115.74,
        "name": "lh:computed:TraceEngineResult:parse:Meta:finalize",
        "duration": 1.66,
        "entryType": "measure"
      },
      {
        "startTime": 9117.81,
        "name": "lh:computed:TraceEngineResult:parse:AnimationFrames:finalize",
        "duration": 1.32,
        "entryType": "measure"
      },
      {
        "startTime": 9119.17,
        "name": "lh:computed:TraceEngineResult:parse:Animations:finalize",
        "duration": 1.55,
        "entryType": "measure"
      },
      {
        "startTime": 9120.76,
        "name": "lh:computed:TraceEngineResult:parse:Samples:finalize",
        "duration": 1.32,
        "entryType": "measure"
      },
      {
        "startTime": 9122.1,
        "name": "lh:computed:TraceEngineResult:parse:AuctionWorklets:finalize",
        "duration": 1.27,
        "entryType": "measure"
      },
      {
        "startTime": 9123.41,
        "name": "lh:computed:TraceEngineResult:parse:NetworkRequests:finalize",
        "duration": 9.5,
        "entryType": "measure"
      },
      {
        "startTime": 9133,
        "name": "lh:computed:TraceEngineResult:parse:Renderer:finalize",
        "duration": 35.11,
        "entryType": "measure"
      },
      {
        "startTime": 9168.17,
        "name": "lh:computed:TraceEngineResult:parse:Flows:finalize",
        "duration": 9.65,
        "entryType": "measure"
      },
      {
        "startTime": 9177.9,
        "name": "lh:computed:TraceEngineResult:parse:AsyncJSCalls:finalize",
        "duration": 1.9,
        "entryType": "measure"
      },
      {
        "startTime": 9179.84,
        "name": "lh:computed:TraceEngineResult:parse:DOMStats:finalize",
        "duration": 1.31,
        "entryType": "measure"
      },
      {
        "startTime": 9181.19,
        "name": "lh:computed:TraceEngineResult:parse:UserTimings:finalize",
        "duration": 1.21,
        "entryType": "measure"
      },
      {
        "startTime": 9182.44,
        "name": "lh:computed:TraceEngineResult:parse:ExtensionTraceData:finalize",
        "duration": 1.75,
        "entryType": "measure"
      },
      {
        "startTime": 9184.23,
        "name": "lh:computed:TraceEngineResult:parse:LayerTree:finalize",
        "duration": 3.79,
        "entryType": "measure"
      },
      {
        "startTime": 9188.06,
        "name": "lh:computed:TraceEngineResult:parse:Frames:finalize",
        "duration": 10.91,
        "entryType": "measure"
      },
      {
        "startTime": 9199.01,
        "name": "lh:computed:TraceEngineResult:parse:GPU:finalize",
        "duration": 1.31,
        "entryType": "measure"
      },
      {
        "startTime": 9200.36,
        "name": "lh:computed:TraceEngineResult:parse:ImagePainting:finalize",
        "duration": 1.67,
        "entryType": "measure"
      },
      {
        "startTime": 9202.11,
        "name": "lh:computed:TraceEngineResult:parse:Initiators:finalize",
        "duration": 1.96,
        "entryType": "measure"
      },
      {
        "startTime": 9204.1,
        "name": "lh:computed:TraceEngineResult:parse:Invalidations:finalize",
        "duration": 1.15,
        "entryType": "measure"
      },
      {
        "startTime": 9205.27,
        "name": "lh:computed:TraceEngineResult:parse:PageLoadMetrics:finalize",
        "duration": 2.08,
        "entryType": "measure"
      },
      {
        "startTime": 9207.38,
        "name": "lh:computed:TraceEngineResult:parse:LargestImagePaint:finalize",
        "duration": 1.33,
        "entryType": "measure"
      },
      {
        "startTime": 9208.73,
        "name": "lh:computed:TraceEngineResult:parse:LargestTextPaint:finalize",
        "duration": 1.16,
        "entryType": "measure"
      },
      {
        "startTime": 9209.91,
        "name": "lh:computed:TraceEngineResult:parse:Screenshots:finalize",
        "duration": 4.07,
        "entryType": "measure"
      },
      {
        "startTime": 9214,
        "name": "lh:computed:TraceEngineResult:parse:LayoutShifts:finalize",
        "duration": 2.96,
        "entryType": "measure"
      },
      {
        "startTime": 9217,
        "name": "lh:computed:TraceEngineResult:parse:Memory:finalize",
        "duration": 1.17,
        "entryType": "measure"
      },
      {
        "startTime": 9218.19,
        "name": "lh:computed:TraceEngineResult:parse:PageFrames:finalize",
        "duration": 1.16,
        "entryType": "measure"
      },
      {
        "startTime": 9219.37,
        "name": "lh:computed:TraceEngineResult:parse:Scripts:finalize",
        "duration": 3.94,
        "entryType": "measure"
      },
      {
        "startTime": 9223.39,
        "name": "lh:computed:TraceEngineResult:parse:SelectorStats:finalize",
        "duration": 1.19,
        "entryType": "measure"
      },
      {
        "startTime": 9224.61,
        "name": "lh:computed:TraceEngineResult:parse:UserInteractions:finalize",
        "duration": 1.59,
        "entryType": "measure"
      },
      {
        "startTime": 9226.22,
        "name": "lh:computed:TraceEngineResult:parse:Workers:finalize",
        "duration": 1.21,
        "entryType": "measure"
      },
      {
        "startTime": 9227.46,
        "name": "lh:computed:TraceEngineResult:parse:Warnings:finalize",
        "duration": 1.33,
        "entryType": "measure"
      },
      {
        "startTime": 9228.81,
        "name": "lh:computed:TraceEngineResult:parse:handler.data()",
        "duration": 0.55,
        "entryType": "measure"
      },
      {
        "startTime": 9229.41,
        "name": "lh:computed:TraceEngineResult:insights",
        "duration": 324.36,
        "entryType": "measure"
      },
      {
        "startTime": 9229.78,
        "name": "lh:computed:TraceEngineResult:insights:CLSCulprits",
        "duration": 0.57,
        "entryType": "measure"
      },
      {
        "startTime": 9230.36,
        "name": "lh:computed:TraceEngineResult:insights:Cache",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 9230.61,
        "name": "lh:computed:TraceEngineResult:insights:DOMSize",
        "duration": 0.43,
        "entryType": "measure"
      },
      {
        "startTime": 9231.06,
        "name": "lh:computed:TraceEngineResult:insights:DocumentLatency",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 9231.24,
        "name": "lh:computed:TraceEngineResult:insights:DuplicatedJavaScript",
        "duration": 0.63,
        "entryType": "measure"
      },
      {
        "startTime": 9231.89,
        "name": "lh:computed:TraceEngineResult:insights:FontDisplay",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 9232.15,
        "name": "lh:computed:TraceEngineResult:insights:ForcedReflow",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 9232.41,
        "name": "lh:computed:TraceEngineResult:insights:INPBreakdown",
        "duration": 0.12,
        "entryType": "measure"
      },
      {
        "startTime": 9232.54,
        "name": "lh:computed:TraceEngineResult:insights:ImageDelivery",
        "duration": 0.34,
        "entryType": "measure"
      },
      {
        "startTime": 9232.9,
        "name": "lh:computed:TraceEngineResult:insights:LCPBreakdown",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 9233.12,
        "name": "lh:computed:TraceEngineResult:insights:LCPDiscovery",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 9233.28,
        "name": "lh:computed:TraceEngineResult:insights:LegacyJavaScript",
        "duration": 0.32,
        "entryType": "measure"
      },
      {
        "startTime": 9233.62,
        "name": "lh:computed:TraceEngineResult:insights:ModernHTTP",
        "duration": 0.5,
        "entryType": "measure"
      },
      {
        "startTime": 9234.14,
        "name": "lh:computed:TraceEngineResult:insights:NetworkDependencyTree",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 9234.26,
        "name": "lh:computed:TraceEngineResult:insights:RenderBlocking",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 9234.42,
        "name": "lh:computed:TraceEngineResult:insights:SlowCSSSelector",
        "duration": 0.31,
        "entryType": "measure"
      },
      {
        "startTime": 9234.75,
        "name": "lh:computed:TraceEngineResult:insights:ThirdParties",
        "duration": 0.12,
        "entryType": "measure"
      },
      {
        "startTime": 9234.89,
        "name": "lh:computed:TraceEngineResult:insights:Viewport",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 9235.28,
        "name": "lh:computed:TraceEngineResult:insights:createLanternContext",
        "duration": 87.34,
        "entryType": "measure"
      },
      {
        "startTime": 9322.7,
        "name": "lh:computed:TraceEngineResult:insights:CLSCulprits",
        "duration": 0.8,
        "entryType": "measure"
      },
      {
        "startTime": 9323.52,
        "name": "lh:computed:TraceEngineResult:insights:Cache",
        "duration": 13.97,
        "entryType": "measure"
      },
      {
        "startTime": 9337.53,
        "name": "lh:computed:TraceEngineResult:insights:DOMSize",
        "duration": 0.68,
        "entryType": "measure"
      },
      {
        "startTime": 9338.23,
        "name": "lh:computed:TraceEngineResult:insights:DocumentLatency",
        "duration": 0.58,
        "entryType": "measure"
      },
      {
        "startTime": 9338.84,
        "name": "lh:computed:TraceEngineResult:insights:DuplicatedJavaScript",
        "duration": 49.84,
        "entryType": "measure"
      },
      {
        "startTime": 9388.72,
        "name": "lh:computed:TraceEngineResult:insights:FontDisplay",
        "duration": 0.3,
        "entryType": "measure"
      },
      {
        "startTime": 9389.12,
        "name": "lh:computed:TraceEngineResult:insights:ForcedReflow",
        "duration": 0.03,
        "entryType": "measure"
      },
      {
        "startTime": 9389.16,
        "name": "lh:computed:TraceEngineResult:insights:INPBreakdown",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 9389.2,
        "name": "lh:computed:TraceEngineResult:insights:ImageDelivery",
        "duration": 7.8,
        "entryType": "measure"
      },
      {
        "startTime": 9397.02,
        "name": "lh:computed:TraceEngineResult:insights:LCPBreakdown",
        "duration": 0.26,
        "entryType": "measure"
      },
      {
        "startTime": 9397.29,
        "name": "lh:computed:TraceEngineResult:insights:LCPDiscovery",
        "duration": 0.03,
        "entryType": "measure"
      },
      {
        "startTime": 9397.33,
        "name": "lh:computed:TraceEngineResult:insights:LegacyJavaScript",
        "duration": 142.42,
        "entryType": "measure"
      },
      {
        "startTime": 9539.79,
        "name": "lh:computed:TraceEngineResult:insights:ModernHTTP",
        "duration": 7.52,
        "entryType": "measure"
      },
      {
        "startTime": 9547.36,
        "name": "lh:computed:TraceEngineResult:insights:NetworkDependencyTree",
        "duration": 3.93,
        "entryType": "measure"
      },
      {
        "startTime": 9551.32,
        "name": "lh:computed:TraceEngineResult:insights:RenderBlocking",
        "duration": 1.23,
        "entryType": "measure"
      },
      {
        "startTime": 9552.58,
        "name": "lh:computed:TraceEngineResult:insights:SlowCSSSelector",
        "duration": 0.03,
        "entryType": "measure"
      },
      {
        "startTime": 9552.65,
        "name": "lh:computed:TraceEngineResult:insights:ThirdParties",
        "duration": 0.08,
        "entryType": "measure"
      },
      {
        "startTime": 9552.74,
        "name": "lh:computed:TraceEngineResult:insights:Viewport",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 9566.2,
        "name": "lh:computed:CumulativeLayoutShift",
        "duration": 1.39,
        "entryType": "measure"
      },
      {
        "startTime": 9614,
        "name": "lh:gather:getArtifact:ViewportDimensions",
        "duration": 1.34,
        "entryType": "measure"
      },
      {
        "startTime": 9615.38,
        "name": "lh:gather:getArtifact:FullPageScreenshot",
        "duration": 1162.43,
        "entryType": "measure"
      },
      {
        "startTime": 10769.53,
        "name": "lh:gather:getVersion",
        "duration": 0.89,
        "entryType": "measure"
      },
      {
        "startTime": 10777.88,
        "name": "lh:gather:getArtifact:BFCacheFailures",
        "duration": 245.98,
        "entryType": "measure"
      },
      {
        "startTime": 11055.25,
        "name": "lh:runner:audit",
        "duration": 1208.56,
        "entryType": "measure"
      },
      {
        "startTime": 11055.41,
        "name": "lh:runner:auditing",
        "duration": 1207.76,
        "entryType": "measure"
      },
      {
        "startTime": 11056.42,
        "name": "lh:audit:is-on-https",
        "duration": 2.97,
        "entryType": "measure"
      },
      {
        "startTime": 11059.67,
        "name": "lh:audit:redirects-http",
        "duration": 0.78,
        "entryType": "measure"
      },
      {
        "startTime": 11060.75,
        "name": "lh:audit:first-contentful-paint",
        "duration": 30.08,
        "entryType": "measure"
      },
      {
        "startTime": 11061.26,
        "name": "lh:computed:FirstContentfulPaint",
        "duration": 27.06,
        "entryType": "measure"
      },
      {
        "startTime": 11061.44,
        "name": "lh:computed:ProcessedNavigation",
        "duration": 2.52,
        "entryType": "measure"
      },
      {
        "startTime": 11064.18,
        "name": "lh:computed:LanternFirstContentfulPaint",
        "duration": 24.11,
        "entryType": "measure"
      },
      {
        "startTime": 11064.47,
        "name": "lh:computed:PageDependencyGraph",
        "duration": 19.4,
        "entryType": "measure"
      },
      {
        "startTime": 11083.95,
        "name": "lh:computed:LoadSimulator",
        "duration": 1.4,
        "entryType": "measure"
      },
      {
        "startTime": 11084.09,
        "name": "lh:computed:NetworkAnalysis",
        "duration": 1.18,
        "entryType": "measure"
      },
      {
        "startTime": 11091.1,
        "name": "lh:audit:largest-contentful-paint",
        "duration": 17.05,
        "entryType": "measure"
      },
      {
        "startTime": 11091.5,
        "name": "lh:computed:LargestContentfulPaint",
        "duration": 15.79,
        "entryType": "measure"
      },
      {
        "startTime": 11091.59,
        "name": "lh:computed:LanternLargestContentfulPaint",
        "duration": 15.67,
        "entryType": "measure"
      },
      {
        "startTime": 11108.41,
        "name": "lh:audit:speed-index",
        "duration": 230.7,
        "entryType": "measure"
      },
      {
        "startTime": 11108.91,
        "name": "lh:computed:SpeedIndex",
        "duration": 229.4,
        "entryType": "measure"
      },
      {
        "startTime": 11109.01,
        "name": "lh:computed:LanternSpeedIndex",
        "duration": 229.27,
        "entryType": "measure"
      },
      {
        "startTime": 11109.05,
        "name": "lh:computed:Speedline",
        "duration": 217.11,
        "entryType": "measure"
      },
      {
        "startTime": 11339.16,
        "name": "lh:audit:screenshot-thumbnails",
        "duration": 0.46,
        "entryType": "measure"
      },
      {
        "startTime": 11339.65,
        "name": "lh:audit:final-screenshot",
        "duration": 2.74,
        "entryType": "measure"
      },
      {
        "startTime": 11339.82,
        "name": "lh:computed:Screenshots",
        "duration": 2.51,
        "entryType": "measure"
      },
      {
        "startTime": 11342.62,
        "name": "lh:audit:total-blocking-time",
        "duration": 24.3,
        "entryType": "measure"
      },
      {
        "startTime": 11343.1,
        "name": "lh:computed:TotalBlockingTime",
        "duration": 22.77,
        "entryType": "measure"
      },
      {
        "startTime": 11343.17,
        "name": "lh:computed:LanternTotalBlockingTime",
        "duration": 22.66,
        "entryType": "measure"
      },
      {
        "startTime": 11343.26,
        "name": "lh:computed:LanternInteractive",
        "duration": 10.28,
        "entryType": "measure"
      },
      {
        "startTime": 11367.24,
        "name": "lh:audit:max-potential-fid",
        "duration": 13.35,
        "entryType": "measure"
      },
      {
        "startTime": 11367.8,
        "name": "lh:computed:MaxPotentialFID",
        "duration": 9.7,
        "entryType": "measure"
      },
      {
        "startTime": 11367.91,
        "name": "lh:computed:LanternMaxPotentialFID",
        "duration": 9.56,
        "entryType": "measure"
      },
      {
        "startTime": 11380.96,
        "name": "lh:audit:cumulative-layout-shift",
        "duration": 0.96,
        "entryType": "measure"
      },
      {
        "startTime": 11382.2,
        "name": "lh:audit:errors-in-console",
        "duration": 31.66,
        "entryType": "measure"
      },
      {
        "startTime": 11382.55,
        "name": "lh:computed:JSBundles",
        "duration": 29.08,
        "entryType": "measure"
      },
      {
        "startTime": 11414.09,
        "name": "lh:audit:server-response-time",
        "duration": 1.29,
        "entryType": "measure"
      },
      {
        "startTime": 11414.39,
        "name": "lh:computed:NavigationInsights",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11415.53,
        "name": "lh:audit:interactive",
        "duration": 1.05,
        "entryType": "measure"
      },
      {
        "startTime": 11415.95,
        "name": "lh:computed:Interactive",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 11416.9,
        "name": "lh:audit:user-timings",
        "duration": 3.46,
        "entryType": "measure"
      },
      {
        "startTime": 11417.22,
        "name": "lh:computed:UserTimings",
        "duration": 2.7,
        "entryType": "measure"
      },
      {
        "startTime": 11420.49,
        "name": "lh:audit:redirects",
        "duration": 9.08,
        "entryType": "measure"
      },
      {
        "startTime": 11429.86,
        "name": "lh:audit:image-aspect-ratio",
        "duration": 1.64,
        "entryType": "measure"
      },
      {
        "startTime": 11431.69,
        "name": "lh:audit:image-size-responsive",
        "duration": 2.17,
        "entryType": "measure"
      },
      {
        "startTime": 11432.01,
        "name": "lh:computed:ImageRecords",
        "duration": 0.72,
        "entryType": "measure"
      },
      {
        "startTime": 11434.04,
        "name": "lh:audit:deprecations",
        "duration": 0.72,
        "entryType": "measure"
      },
      {
        "startTime": 11434.92,
        "name": "lh:audit:third-party-cookies",
        "duration": 1.06,
        "entryType": "measure"
      },
      {
        "startTime": 11436.39,
        "name": "lh:audit:mainthread-work-breakdown",
        "duration": 50.82,
        "entryType": "measure"
      },
      {
        "startTime": 11436.89,
        "name": "lh:computed:MainThreadTasks",
        "duration": 38.2,
        "entryType": "measure"
      },
      {
        "startTime": 11487.55,
        "name": "lh:audit:bootup-time",
        "duration": 45.05,
        "entryType": "measure"
      },
      {
        "startTime": 11494.39,
        "name": "lh:computed:TBTImpactTasks",
        "duration": 31.46,
        "entryType": "measure"
      },
      {
        "startTime": 11532.7,
        "name": "lh:audit:diagnostics",
        "duration": 1.67,
        "entryType": "measure"
      },
      {
        "startTime": 11534.41,
        "name": "lh:audit:network-requests",
        "duration": 75.46,
        "entryType": "measure"
      },
      {
        "startTime": 11534.73,
        "name": "lh:computed:EntityClassification",
        "duration": 13.28,
        "entryType": "measure"
      },
      {
        "startTime": 11610.19,
        "name": "lh:audit:network-rtt",
        "duration": 1.19,
        "entryType": "measure"
      },
      {
        "startTime": 11611.6,
        "name": "lh:audit:network-server-latency",
        "duration": 1.2,
        "entryType": "measure"
      },
      {
        "startTime": 11612.83,
        "name": "lh:audit:main-thread-tasks",
        "duration": 0.69,
        "entryType": "measure"
      },
      {
        "startTime": 11613.55,
        "name": "lh:audit:metrics",
        "duration": 5.76,
        "entryType": "measure"
      },
      {
        "startTime": 11613.77,
        "name": "lh:computed:TimingSummary",
        "duration": 5.35,
        "entryType": "measure"
      },
      {
        "startTime": 11614.42,
        "name": "lh:computed:FirstContentfulPaintAllFrames",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11614.64,
        "name": "lh:computed:LargestContentfulPaintAllFrames",
        "duration": 0.12,
        "entryType": "measure"
      },
      {
        "startTime": 11614.86,
        "name": "lh:computed:LCPBreakdown",
        "duration": 3.57,
        "entryType": "measure"
      },
      {
        "startTime": 11615.05,
        "name": "lh:computed:TimeToFirstByte",
        "duration": 0.34,
        "entryType": "measure"
      },
      {
        "startTime": 11615.41,
        "name": "lh:computed:LCPImageRecord",
        "duration": 2.98,
        "entryType": "measure"
      },
      {
        "startTime": 11619.34,
        "name": "lh:audit:resource-summary",
        "duration": 1.61,
        "entryType": "measure"
      },
      {
        "startTime": 11619.52,
        "name": "lh:computed:ResourceSummary",
        "duration": 0.81,
        "entryType": "measure"
      },
      {
        "startTime": 11621.2,
        "name": "lh:audit:layout-shifts",
        "duration": 3.07,
        "entryType": "measure"
      },
      {
        "startTime": 11624.61,
        "name": "lh:audit:long-tasks",
        "duration": 11.36,
        "entryType": "measure"
      },
      {
        "startTime": 11636.23,
        "name": "lh:audit:non-composited-animations",
        "duration": 1.06,
        "entryType": "measure"
      },
      {
        "startTime": 11637.63,
        "name": "lh:audit:unsized-images",
        "duration": 1.26,
        "entryType": "measure"
      },
      {
        "startTime": 11639.18,
        "name": "lh:audit:valid-source-maps",
        "duration": 4.25,
        "entryType": "measure"
      },
      {
        "startTime": 11643.63,
        "name": "lh:audit:csp-xss",
        "duration": 2.56,
        "entryType": "measure"
      },
      {
        "startTime": 11646.35,
        "name": "lh:audit:has-hsts",
        "duration": 1.22,
        "entryType": "measure"
      },
      {
        "startTime": 11647.82,
        "name": "lh:audit:origin-isolation",
        "duration": 0.97,
        "entryType": "measure"
      },
      {
        "startTime": 11648.94,
        "name": "lh:audit:clickjacking-mitigation",
        "duration": 0.77,
        "entryType": "measure"
      },
      {
        "startTime": 11649.85,
        "name": "lh:audit:trusted-types-xss",
        "duration": 0.73,
        "entryType": "measure"
      },
      {
        "startTime": 11650.6,
        "name": "lh:audit:script-treemap-data",
        "duration": 77.52,
        "entryType": "measure"
      },
      {
        "startTime": 11650.94,
        "name": "lh:computed:ModuleDuplication",
        "duration": 0.88,
        "entryType": "measure"
      },
      {
        "startTime": 11651.92,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.63,
        "entryType": "measure"
      },
      {
        "startTime": 11652.67,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.08,
        "entryType": "measure"
      },
      {
        "startTime": 11652.78,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.08,
        "entryType": "measure"
      },
      {
        "startTime": 11652.89,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 11653.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 11653.16,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.33,
        "entryType": "measure"
      },
      {
        "startTime": 11653.53,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.04,
        "entryType": "measure"
      },
      {
        "startTime": 11653.61,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.09,
        "entryType": "measure"
      },
      {
        "startTime": 11653.75,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.64,
        "entryType": "measure"
      },
      {
        "startTime": 11654.44,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.32,
        "entryType": "measure"
      },
      {
        "startTime": 11654.82,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 2.47,
        "entryType": "measure"
      },
      {
        "startTime": 11657.42,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.57,
        "entryType": "measure"
      },
      {
        "startTime": 11658.07,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11658.27,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.31,
        "entryType": "measure"
      },
      {
        "startTime": 11658.63,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 18.26,
        "entryType": "measure"
      },
      {
        "startTime": 11678.24,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 4.43,
        "entryType": "measure"
      },
      {
        "startTime": 11683.15,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 2.73,
        "entryType": "measure"
      },
      {
        "startTime": 11686.08,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.19,
        "entryType": "measure"
      },
      {
        "startTime": 11686.38,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.09,
        "entryType": "measure"
      },
      {
        "startTime": 11686.58,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11686.84,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11687.14,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 11687.49,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 11687.76,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11688.03,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.12,
        "entryType": "measure"
      },
      {
        "startTime": 11688.25,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.12,
        "entryType": "measure"
      },
      {
        "startTime": 11688.51,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11688.84,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11689.12,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11689.38,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11689.72,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.25,
        "entryType": "measure"
      },
      {
        "startTime": 11690.12,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11690.51,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11690.9,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.4,
        "entryType": "measure"
      },
      {
        "startTime": 11691.45,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.63,
        "entryType": "measure"
      },
      {
        "startTime": 11692.27,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 11692.67,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 11693.05,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.31,
        "entryType": "measure"
      },
      {
        "startTime": 11693.49,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 11694.01,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.34,
        "entryType": "measure"
      },
      {
        "startTime": 11694.5,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11694.8,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11695.19,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11695.45,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11695.73,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11696.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 11696.41,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.18,
        "entryType": "measure"
      },
      {
        "startTime": 11696.8,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11697.1,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.19,
        "entryType": "measure"
      },
      {
        "startTime": 11697.44,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.33,
        "entryType": "measure"
      },
      {
        "startTime": 11697.98,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.26,
        "entryType": "measure"
      },
      {
        "startTime": 11698.42,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 11698.71,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.18,
        "entryType": "measure"
      },
      {
        "startTime": 11699.06,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11699.55,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 11699.86,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 11700.19,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 11700.53,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 11700.84,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11701.22,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11701.66,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 11702.31,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.18,
        "entryType": "measure"
      },
      {
        "startTime": 11702.65,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 11702.89,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.36,
        "entryType": "measure"
      },
      {
        "startTime": 11703.51,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 11703.88,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 11704.19,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.59,
        "entryType": "measure"
      },
      {
        "startTime": 11704.92,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.63,
        "entryType": "measure"
      },
      {
        "startTime": 11705.72,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.53,
        "entryType": "measure"
      },
      {
        "startTime": 11706.45,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 11706.75,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.3,
        "entryType": "measure"
      },
      {
        "startTime": 11707.16,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 11707.44,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 11707.79,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 11707.99,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.19,
        "entryType": "measure"
      },
      {
        "startTime": 11708.3,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 11708.54,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 11708.81,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 11709.07,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 11709.28,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 11709.62,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 11709.82,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 11710.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11710.31,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 11710.53,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11710.76,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 11711.07,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 11711.29,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11711.55,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.3,
        "entryType": "measure"
      },
      {
        "startTime": 11711.99,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.33,
        "entryType": "measure"
      },
      {
        "startTime": 11712.44,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 11712.77,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11713.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11713.26,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 11713.59,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 11713.91,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.47,
        "entryType": "measure"
      },
      {
        "startTime": 11714.57,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 1.63,
        "entryType": "measure"
      },
      {
        "startTime": 11716.37,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 1.51,
        "entryType": "measure"
      },
      {
        "startTime": 11718.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 11718.38,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 11718.85,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 11719.29,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.25,
        "entryType": "measure"
      },
      {
        "startTime": 11719.68,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 1.68,
        "entryType": "measure"
      },
      {
        "startTime": 11721.56,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11721.95,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.26,
        "entryType": "measure"
      },
      {
        "startTime": 11722.42,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 11722.7,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.19,
        "entryType": "measure"
      },
      {
        "startTime": 11723.12,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 11723.39,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.18,
        "entryType": "measure"
      },
      {
        "startTime": 11723.75,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.36,
        "entryType": "measure"
      },
      {
        "startTime": 11724.31,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 11724.72,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 11725.07,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 11725.33,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.25,
        "entryType": "measure"
      },
      {
        "startTime": 11725.79,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.31,
        "entryType": "measure"
      },
      {
        "startTime": 11726.34,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.45,
        "entryType": "measure"
      },
      {
        "startTime": 11727.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11727.5,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.43,
        "entryType": "measure"
      },
      {
        "startTime": 11728.44,
        "name": "lh:audit:accesskeys",
        "duration": 1.27,
        "entryType": "measure"
      },
      {
        "startTime": 11730.01,
        "name": "lh:audit:aria-allowed-attr",
        "duration": 3.41,
        "entryType": "measure"
      },
      {
        "startTime": 11733.71,
        "name": "lh:audit:aria-allowed-role",
        "duration": 2.64,
        "entryType": "measure"
      },
      {
        "startTime": 11736.61,
        "name": "lh:audit:aria-command-name",
        "duration": 0.6,
        "entryType": "measure"
      },
      {
        "startTime": 11737.37,
        "name": "lh:audit:aria-conditional-attr",
        "duration": 2.19,
        "entryType": "measure"
      },
      {
        "startTime": 11739.88,
        "name": "lh:audit:aria-deprecated-role",
        "duration": 3.1,
        "entryType": "measure"
      },
      {
        "startTime": 11743.3,
        "name": "lh:audit:aria-dialog-name",
        "duration": 2.56,
        "entryType": "measure"
      },
      {
        "startTime": 11746.04,
        "name": "lh:audit:aria-hidden-body",
        "duration": 2.33,
        "entryType": "measure"
      },
      {
        "startTime": 11748.64,
        "name": "lh:audit:aria-hidden-focus",
        "duration": 0.61,
        "entryType": "measure"
      },
      {
        "startTime": 11749.42,
        "name": "lh:audit:aria-input-field-name",
        "duration": 0.63,
        "entryType": "measure"
      },
      {
        "startTime": 11750.26,
        "name": "lh:audit:aria-meter-name",
        "duration": 0.7,
        "entryType": "measure"
      },
      {
        "startTime": 11751.12,
        "name": "lh:audit:aria-progressbar-name",
        "duration": 0.71,
        "entryType": "measure"
      },
      {
        "startTime": 11751.99,
        "name": "lh:audit:aria-prohibited-attr",
        "duration": 8.94,
        "entryType": "measure"
      },
      {
        "startTime": 11761.21,
        "name": "lh:audit:aria-required-attr",
        "duration": 2.62,
        "entryType": "measure"
      },
      {
        "startTime": 11764.01,
        "name": "lh:audit:aria-required-children",
        "duration": 0.75,
        "entryType": "measure"
      },
      {
        "startTime": 11764.95,
        "name": "lh:audit:aria-required-parent",
        "duration": 0.94,
        "entryType": "measure"
      },
      {
        "startTime": 11766.05,
        "name": "lh:audit:aria-roles",
        "duration": 2.19,
        "entryType": "measure"
      },
      {
        "startTime": 11768.44,
        "name": "lh:audit:aria-text",
        "duration": 0.8,
        "entryType": "measure"
      },
      {
        "startTime": 11769.39,
        "name": "lh:audit:aria-toggle-field-name",
        "duration": 0.92,
        "entryType": "measure"
      },
      {
        "startTime": 11770.58,
        "name": "lh:audit:aria-tooltip-name",
        "duration": 1.29,
        "entryType": "measure"
      },
      {
        "startTime": 11772.03,
        "name": "lh:audit:aria-treeitem-name",
        "duration": 1,
        "entryType": "measure"
      },
      {
        "startTime": 11773.17,
        "name": "lh:audit:aria-valid-attr-value",
        "duration": 2,
        "entryType": "measure"
      },
      {
        "startTime": 11775.33,
        "name": "lh:audit:aria-valid-attr",
        "duration": 9.28,
        "entryType": "measure"
      },
      {
        "startTime": 11784.87,
        "name": "lh:audit:button-name",
        "duration": 2.62,
        "entryType": "measure"
      },
      {
        "startTime": 11787.67,
        "name": "lh:audit:bypass",
        "duration": 1.83,
        "entryType": "measure"
      },
      {
        "startTime": 11789.69,
        "name": "lh:audit:color-contrast",
        "duration": 1.97,
        "entryType": "measure"
      },
      {
        "startTime": 11791.85,
        "name": "lh:audit:definition-list",
        "duration": 1.42,
        "entryType": "measure"
      },
      {
        "startTime": 11793.51,
        "name": "lh:audit:dlitem",
        "duration": 1.48,
        "entryType": "measure"
      },
      {
        "startTime": 11795.22,
        "name": "lh:audit:document-title",
        "duration": 2.21,
        "entryType": "measure"
      },
      {
        "startTime": 11797.59,
        "name": "lh:audit:duplicate-id-aria",
        "duration": 0.93,
        "entryType": "measure"
      },
      {
        "startTime": 11798.66,
        "name": "lh:audit:empty-heading",
        "duration": 2.06,
        "entryType": "measure"
      },
      {
        "startTime": 11800.88,
        "name": "lh:audit:form-field-multiple-labels",
        "duration": 1.96,
        "entryType": "measure"
      },
      {
        "startTime": 11803.02,
        "name": "lh:audit:frame-title",
        "duration": 1.18,
        "entryType": "measure"
      },
      {
        "startTime": 11804.37,
        "name": "lh:audit:heading-order",
        "duration": 9.16,
        "entryType": "measure"
      },
      {
        "startTime": 11813.84,
        "name": "lh:audit:html-has-lang",
        "duration": 3.36,
        "entryType": "measure"
      },
      {
        "startTime": 11817.46,
        "name": "lh:audit:html-lang-valid",
        "duration": 1.97,
        "entryType": "measure"
      },
      {
        "startTime": 11819.59,
        "name": "lh:audit:html-xml-lang-mismatch",
        "duration": 1.2,
        "entryType": "measure"
      },
      {
        "startTime": 11820.96,
        "name": "lh:audit:identical-links-same-purpose",
        "duration": 2.09,
        "entryType": "measure"
      },
      {
        "startTime": 11823.21,
        "name": "lh:audit:image-alt",
        "duration": 2.13,
        "entryType": "measure"
      },
      {
        "startTime": 11825.58,
        "name": "lh:audit:image-redundant-alt",
        "duration": 2.2,
        "entryType": "measure"
      },
      {
        "startTime": 11827.99,
        "name": "lh:audit:input-button-name",
        "duration": 1.23,
        "entryType": "measure"
      },
      {
        "startTime": 11829.46,
        "name": "lh:audit:input-image-alt",
        "duration": 9.89,
        "entryType": "measure"
      },
      {
        "startTime": 11839.64,
        "name": "lh:audit:label-content-name-mismatch",
        "duration": 2.91,
        "entryType": "measure"
      },
      {
        "startTime": 11842.81,
        "name": "lh:audit:label",
        "duration": 2.76,
        "entryType": "measure"
      },
      {
        "startTime": 11845.79,
        "name": "lh:audit:landmark-one-main",
        "duration": 1.86,
        "entryType": "measure"
      },
      {
        "startTime": 11847.83,
        "name": "lh:audit:link-name",
        "duration": 4.31,
        "entryType": "measure"
      },
      {
        "startTime": 11852.6,
        "name": "lh:audit:link-in-text-block",
        "duration": 4.46,
        "entryType": "measure"
      },
      {
        "startTime": 11857.49,
        "name": "lh:audit:list",
        "duration": 5.68,
        "entryType": "measure"
      },
      {
        "startTime": 11863.5,
        "name": "lh:audit:listitem",
        "duration": 5.23,
        "entryType": "measure"
      },
      {
        "startTime": 11869.13,
        "name": "lh:audit:meta-refresh",
        "duration": 4.04,
        "entryType": "measure"
      },
      {
        "startTime": 11873.65,
        "name": "lh:audit:meta-viewport",
        "duration": 14.35,
        "entryType": "measure"
      },
      {
        "startTime": 11888.42,
        "name": "lh:audit:object-alt",
        "duration": 3.46,
        "entryType": "measure"
      },
      {
        "startTime": 11892.46,
        "name": "lh:audit:select-name",
        "duration": 3.14,
        "entryType": "measure"
      },
      {
        "startTime": 11895.91,
        "name": "lh:audit:skip-link",
        "duration": 4.28,
        "entryType": "measure"
      },
      {
        "startTime": 11900.71,
        "name": "lh:audit:tabindex",
        "duration": 4.99,
        "entryType": "measure"
      },
      {
        "startTime": 11906.17,
        "name": "lh:audit:table-duplicate-name",
        "duration": 3.29,
        "entryType": "measure"
      },
      {
        "startTime": 11909.95,
        "name": "lh:audit:table-fake-caption",
        "duration": 3.92,
        "entryType": "measure"
      },
      {
        "startTime": 11914.19,
        "name": "lh:audit:target-size",
        "duration": 14.29,
        "entryType": "measure"
      },
      {
        "startTime": 11928.83,
        "name": "lh:audit:td-has-header",
        "duration": 2.35,
        "entryType": "measure"
      },
      {
        "startTime": 11931.48,
        "name": "lh:audit:td-headers-attr",
        "duration": 2.53,
        "entryType": "measure"
      },
      {
        "startTime": 11934.28,
        "name": "lh:audit:th-has-data-cells",
        "duration": 2.51,
        "entryType": "measure"
      },
      {
        "startTime": 11937.03,
        "name": "lh:audit:valid-lang",
        "duration": 3.09,
        "entryType": "measure"
      },
      {
        "startTime": 11940.5,
        "name": "lh:audit:video-caption",
        "duration": 2.47,
        "entryType": "measure"
      },
      {
        "startTime": 11943.03,
        "name": "lh:audit:custom-controls-labels",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 11943.29,
        "name": "lh:audit:custom-controls-roles",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 11943.32,
        "name": "lh:audit:focus-traps",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 11943.35,
        "name": "lh:audit:focusable-controls",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 11943.37,
        "name": "lh:audit:interactive-element-affordance",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 11943.39,
        "name": "lh:audit:logical-tab-order",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 11943.41,
        "name": "lh:audit:managed-focus",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 11943.43,
        "name": "lh:audit:offscreen-content-hidden",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 11943.45,
        "name": "lh:audit:use-landmarks",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 11943.48,
        "name": "lh:audit:visual-order-follows-dom",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 11943.76,
        "name": "lh:audit:total-byte-weight",
        "duration": 2.77,
        "entryType": "measure"
      },
      {
        "startTime": 11946.74,
        "name": "lh:audit:unminified-css",
        "duration": 84.13,
        "entryType": "measure"
      },
      {
        "startTime": 12031.13,
        "name": "lh:audit:unminified-javascript",
        "duration": 110.52,
        "entryType": "measure"
      },
      {
        "startTime": 12141.93,
        "name": "lh:audit:unused-css-rules",
        "duration": 53.57,
        "entryType": "measure"
      },
      {
        "startTime": 12142.4,
        "name": "lh:computed:UnusedCSS",
        "duration": 45.21,
        "entryType": "measure"
      },
      {
        "startTime": 12195.66,
        "name": "lh:audit:unused-javascript",
        "duration": 23.42,
        "entryType": "measure"
      },
      {
        "startTime": 12219.37,
        "name": "lh:audit:doctype",
        "duration": 1.06,
        "entryType": "measure"
      },
      {
        "startTime": 12220.82,
        "name": "lh:audit:charset",
        "duration": 1.19,
        "entryType": "measure"
      },
      {
        "startTime": 12222.23,
        "name": "lh:audit:geolocation-on-start",
        "duration": 0.75,
        "entryType": "measure"
      },
      {
        "startTime": 12223.14,
        "name": "lh:audit:inspector-issues",
        "duration": 0.86,
        "entryType": "measure"
      },
      {
        "startTime": 12224.19,
        "name": "lh:audit:js-libraries",
        "duration": 0.99,
        "entryType": "measure"
      },
      {
        "startTime": 12225.44,
        "name": "lh:audit:notification-on-start",
        "duration": 0.75,
        "entryType": "measure"
      },
      {
        "startTime": 12226.38,
        "name": "lh:audit:paste-preventing-inputs",
        "duration": 0.98,
        "entryType": "measure"
      },
      {
        "startTime": 12227.62,
        "name": "lh:audit:meta-description",
        "duration": 0.88,
        "entryType": "measure"
      },
      {
        "startTime": 12228.82,
        "name": "lh:audit:http-status-code",
        "duration": 0.8,
        "entryType": "measure"
      },
      {
        "startTime": 12229.86,
        "name": "lh:audit:link-text",
        "duration": 1.48,
        "entryType": "measure"
      },
      {
        "startTime": 12231.59,
        "name": "lh:audit:crawlable-anchors",
        "duration": 1.71,
        "entryType": "measure"
      },
      {
        "startTime": 12233.56,
        "name": "lh:audit:is-crawlable",
        "duration": 6.87,
        "entryType": "measure"
      },
      {
        "startTime": 12240.61,
        "name": "lh:audit:robots-txt",
        "duration": 1.19,
        "entryType": "measure"
      },
      {
        "startTime": 12241.98,
        "name": "lh:audit:hreflang",
        "duration": 0.96,
        "entryType": "measure"
      },
      {
        "startTime": 12243.12,
        "name": "lh:audit:canonical",
        "duration": 0.94,
        "entryType": "measure"
      },
      {
        "startTime": 12244.2,
        "name": "lh:audit:structured-data",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 12244.68,
        "name": "lh:audit:bf-cache",
        "duration": 0.68,
        "entryType": "measure"
      },
      {
        "startTime": 12245.5,
        "name": "lh:audit:cache-insight",
        "duration": 1.49,
        "entryType": "measure"
      },
      {
        "startTime": 12247.15,
        "name": "lh:audit:cls-culprits-insight",
        "duration": 1.4,
        "entryType": "measure"
      },
      {
        "startTime": 12248.77,
        "name": "lh:audit:document-latency-insight",
        "duration": 0.82,
        "entryType": "measure"
      },
      {
        "startTime": 12249.75,
        "name": "lh:audit:dom-size-insight",
        "duration": 0.78,
        "entryType": "measure"
      },
      {
        "startTime": 12250.69,
        "name": "lh:audit:duplicated-javascript-insight",
        "duration": 0.62,
        "entryType": "measure"
      },
      {
        "startTime": 12251.46,
        "name": "lh:audit:font-display-insight",
        "duration": 0.96,
        "entryType": "measure"
      },
      {
        "startTime": 12252.57,
        "name": "lh:audit:forced-reflow-insight",
        "duration": 0.66,
        "entryType": "measure"
      },
      {
        "startTime": 12253.38,
        "name": "lh:audit:image-delivery-insight",
        "duration": 1.42,
        "entryType": "measure"
      },
      {
        "startTime": 12255.03,
        "name": "lh:audit:inp-breakdown-insight",
        "duration": 0.59,
        "entryType": "measure"
      },
      {
        "startTime": 12255.77,
        "name": "lh:audit:lcp-breakdown-insight",
        "duration": 0.76,
        "entryType": "measure"
      },
      {
        "startTime": 12256.78,
        "name": "lh:audit:lcp-discovery-insight",
        "duration": 0.52,
        "entryType": "measure"
      },
      {
        "startTime": 12257.47,
        "name": "lh:audit:legacy-javascript-insight",
        "duration": 0.77,
        "entryType": "measure"
      },
      {
        "startTime": 12258.39,
        "name": "lh:audit:modern-http-insight",
        "duration": 0.62,
        "entryType": "measure"
      },
      {
        "startTime": 12259.16,
        "name": "lh:audit:network-dependency-tree-insight",
        "duration": 1.38,
        "entryType": "measure"
      },
      {
        "startTime": 12260.73,
        "name": "lh:audit:render-blocking-insight",
        "duration": 0.69,
        "entryType": "measure"
      },
      {
        "startTime": 12261.62,
        "name": "lh:audit:third-parties-insight",
        "duration": 0.69,
        "entryType": "measure"
      },
      {
        "startTime": 12262.54,
        "name": "lh:audit:viewport-insight",
        "duration": 0.61,
        "entryType": "measure"
      },
      {
        "startTime": 12263.18,
        "name": "lh:runner:generate",
        "duration": 0.62,
        "entryType": "measure"
      }
    ],
    "total": 10268.6
  },
  "i18n": {
    "rendererFormattedStrings": {
      "calculatorLink": "See calculator.",
      "collapseView": "Collapse view",
      "crcInitialNavigation": "Initial Navigation",
      "crcLongestDurationLabel": "Maximum critical path latency:",
      "dropdownCopyJSON": "Copy JSON",
      "dropdownDarkTheme": "Toggle Dark Theme",
      "dropdownPrintExpanded": "Print Expanded",
      "dropdownPrintSummary": "Print Summary",
      "dropdownSaveGist": "Save as Gist",
      "dropdownSaveHTML": "Save as HTML",
      "dropdownSaveJSON": "Save as JSON",
      "dropdownViewUnthrottledTrace": "View Unthrottled Trace",
      "dropdownViewer": "Open in Viewer",
      "errorLabel": "Error!",
      "errorMissingAuditInfo": "Report error: no audit information",
      "expandView": "Expand view",
      "firstPartyChipLabel": "1st party",
      "footerIssue": "File an issue",
      "hide": "Hide",
      "labDataTitle": "Lab Data",
      "lsPerformanceCategoryDescription": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary.",
      "manualAuditsGroupTitle": "Additional items to manually check",
      "notApplicableAuditsGroupTitle": "Not applicable",
      "openInANewTabTooltip": "Open in a new tab",
      "opportunityResourceColumnLabel": "Opportunity",
      "opportunitySavingsColumnLabel": "Estimated Savings",
      "passedAuditsGroupTitle": "Passed audits",
      "runtimeAnalysisWindow": "Initial page load",
      "runtimeAnalysisWindowSnapshot": "Point-in-time snapshot",
      "runtimeAnalysisWindowTimespan": "User interactions timespan",
      "runtimeCustom": "Custom throttling",
      "runtimeDesktopEmulation": "Emulated Desktop",
      "runtimeMobileEmulation": "Emulated Moto G Power",
      "runtimeNoEmulation": "No emulation",
      "runtimeSettingsAxeVersion": "Axe version",
      "runtimeSettingsBenchmark": "Unthrottled CPU/Memory Power",
      "runtimeSettingsCPUThrottling": "CPU throttling",
      "runtimeSettingsDevice": "Device",
      "runtimeSettingsNetworkThrottling": "Network throttling",
      "runtimeSettingsScreenEmulation": "Screen emulation",
      "runtimeSettingsUANetwork": "User agent (network)",
      "runtimeSingleLoad": "Single page session",
      "runtimeSingleLoadTooltip": "This data is taken from a single page session, as opposed to field data summarizing many sessions.",
      "runtimeSlow4g": "Slow 4G throttling",
      "runtimeUnknown": "Unknown",
      "show": "Show",
      "showRelevantAudits": "Show audits relevant to:",
      "snippetCollapseButtonLabel": "Collapse snippet",
      "snippetExpandButtonLabel": "Expand snippet",
      "thirdPartyResourcesLabel": "Show 3rd-party resources",
      "throttlingProvided": "Provided by environment",
      "toplevelWarningsMessage": "There were issues affecting this run of Lighthouse:",
      "unattributable": "Unattributable",
      "unscoredLabel": "Unscored",
      "unscoredTitle": "This audit does not contribute to the overall category score.",
      "varianceDisclaimer": "Values are estimated and may vary. The [performance score is calculated](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) directly from these metrics.",
      "viewTraceLabel": "View Trace",
      "viewTreemapLabel": "View Treemap",
      "warningAuditsGroupTitle": "Passed audits but with warnings",
      "warningHeader": "Warnings: "
    },
    "icuMessagePaths": {
      "core/gather/driver/navigation.js | warningRedirected": [
        {
          "values": {
            "requested": "https://palmbeachpost.com/",
            "final": "https://eu.palmbeachpost.com/"
          },
          "path": "runWarnings[0]"
        }
      ],
      "core/audits/is-on-https.js | title": [
        "audits[is-on-https].title"
      ],
      "core/audits/is-on-https.js | description": [
        "audits[is-on-https].description"
      ],
      "core/audits/is-on-https.js | columnInsecureURL": [
        "audits[is-on-https].details.headings[0].label"
      ],
      "core/audits/is-on-https.js | columnResolution": [
        "audits[is-on-https].details.headings[1].label"
      ],
      "core/audits/redirects-http.js | title": [
        "audits[redirects-http].title"
      ],
      "core/audits/redirects-http.js | description": [
        "audits[redirects-http].description"
      ],
      "core/lib/i18n/i18n.js | firstContentfulPaintMetric": [
        "audits[first-contentful-paint].title"
      ],
      "core/audits/metrics/first-contentful-paint.js | description": [
        "audits[first-contentful-paint].description"
      ],
      "core/lib/i18n/i18n.js | seconds": [
        {
          "values": {
            "timeInMs": 3694.1915899999995
          },
          "path": "audits[first-contentful-paint].displayValue"
        },
        {
          "values": {
            "timeInMs": 10531.071851750492
          },
          "path": "audits[largest-contentful-paint].displayValue"
        },
        {
          "values": {
            "timeInMs": 3823.3730129881133
          },
          "path": "audits[speed-index].displayValue"
        },
        {
          "values": {
            "timeInMs": 10918.134842713047
          },
          "path": "audits.interactive.displayValue"
        },
        {
          "values": {
            "timeInMs": 3819.7599999999597
          },
          "path": "audits[mainthread-work-breakdown].displayValue"
        },
        {
          "values": {
            "timeInMs": 1396.9760000000035
          },
          "path": "audits[bootup-time].displayValue"
        }
      ],
      "core/lib/i18n/i18n.js | largestContentfulPaintMetric": [
        "audits[largest-contentful-paint].title"
      ],
      "core/audits/metrics/largest-contentful-paint.js | description": [
        "audits[largest-contentful-paint].description"
      ],
      "core/lib/i18n/i18n.js | speedIndexMetric": [
        "audits[speed-index].title"
      ],
      "core/audits/metrics/speed-index.js | description": [
        "audits[speed-index].description"
      ],
      "core/lib/i18n/i18n.js | totalBlockingTimeMetric": [
        "audits[total-blocking-time].title"
      ],
      "core/audits/metrics/total-blocking-time.js | description": [
        "audits[total-blocking-time].description"
      ],
      "core/lib/i18n/i18n.js | ms": [
        {
          "values": {
            "timeInMs": 276.5
          },
          "path": "audits[total-blocking-time].displayValue"
        },
        {
          "values": {
            "timeInMs": 349
          },
          "path": "audits[max-potential-fid].displayValue"
        },
        {
          "values": {
            "timeInMs": 26.034000000000002
          },
          "path": "audits[network-rtt].displayValue"
        },
        {
          "values": {
            "timeInMs": 103.4325
          },
          "path": "audits[network-server-latency].displayValue"
        }
      ],
      "core/lib/i18n/i18n.js | maxPotentialFIDMetric": [
        "audits[max-potential-fid].title"
      ],
      "core/audits/metrics/max-potential-fid.js | description": [
        "audits[max-potential-fid].description"
      ],
      "core/lib/i18n/i18n.js | cumulativeLayoutShiftMetric": [
        "audits[cumulative-layout-shift].title"
      ],
      "core/audits/metrics/cumulative-layout-shift.js | description": [
        "audits[cumulative-layout-shift].description"
      ],
      "core/audits/errors-in-console.js | failureTitle": [
        "audits[errors-in-console].title"
      ],
      "core/audits/errors-in-console.js | description": [
        "audits[errors-in-console].description"
      ],
      "core/lib/i18n/i18n.js | columnSource": [
        "audits[errors-in-console].details.headings[0].label",
        "audits.deprecations.details.headings[1].label",
        "audits[geolocation-on-start].details.headings[0].label",
        "audits[notification-on-start].details.headings[0].label",
        "audits[forced-reflow-insight].details.items[0].headings[0].label"
      ],
      "core/lib/i18n/i18n.js | columnDescription": [
        "audits[errors-in-console].details.headings[1].label",
        "audits[csp-xss].details.headings[0].label",
        "audits[has-hsts].details.headings[0].label",
        "audits[origin-isolation].details.headings[0].label",
        "audits[clickjacking-mitigation].details.headings[0].label",
        "audits[trusted-types-xss].details.headings[0].label"
      ],
      "core/audits/server-response-time.js | title": [
        "audits[server-response-time].title"
      ],
      "core/audits/server-response-time.js | description": [
        "audits[server-response-time].description"
      ],
      "core/audits/server-response-time.js | displayValue": [
        {
          "values": {
            "timeInMs": 29
          },
          "path": "audits[server-response-time].displayValue"
        }
      ],
      "core/lib/i18n/i18n.js | columnURL": [
        "audits[server-response-time].details.headings[0].label",
        "audits.redirects.details.headings[0].label",
        "audits[image-aspect-ratio].details.headings[1].label",
        "audits[image-size-responsive].details.headings[1].label",
        "audits[third-party-cookies].details.headings[1].label",
        "audits[bootup-time].details.headings[0].label",
        "audits[network-rtt].details.headings[0].label",
        "audits[network-server-latency].details.headings[0].label",
        "audits[long-tasks].details.headings[0].label",
        "audits[unsized-images].details.headings[1].label",
        "audits[valid-source-maps].details.headings[0].label",
        "audits[total-byte-weight].details.headings[0].label",
        "audits[unminified-javascript].details.headings[0].label",
        "audits[unused-javascript].details.headings[0].label",
        "audits[font-display-insight].details.headings[0].label",
        "audits[image-delivery-insight].details.headings[1].label",
        "audits[modern-http-insight].details.headings[0].label",
        "audits[render-blocking-insight].details.headings[0].label"
      ],
      "core/lib/i18n/i18n.js | columnTimeSpent": [
        "audits[server-response-time].details.headings[1].label",
        "audits.redirects.details.headings[1].label",
        "audits[mainthread-work-breakdown].details.headings[1].label",
        "audits[network-rtt].details.headings[1].label",
        "audits[network-server-latency].details.headings[1].label"
      ],
      "core/lib/i18n/i18n.js | interactiveMetric": [
        "audits.interactive.title"
      ],
      "core/audits/metrics/interactive.js | description": [
        "audits.interactive.description"
      ],
      "core/audits/user-timings.js | title": [
        "audits[user-timings].title"
      ],
      "core/audits/user-timings.js | description": [
        "audits[user-timings].description"
      ],
      "core/lib/i18n/i18n.js | columnName": [
        "audits[user-timings].details.headings[0].label",
        "audits[third-party-cookies].details.headings[0].label",
        "audits[js-libraries].details.headings[0].label"
      ],
      "core/audits/user-timings.js | columnType": [
        "audits[user-timings].details.headings[1].label"
      ],
      "core/lib/i18n/i18n.js | columnStartTime": [
        "audits[user-timings].details.headings[2].label",
        "audits[long-tasks].details.headings[1].label"
      ],
      "core/lib/i18n/i18n.js | columnDuration": [
        "audits[user-timings].details.headings[3].label",
        "audits[long-tasks].details.headings[2].label",
        "audits[lcp-breakdown-insight].details.items[0].headings[1].label",
        "audits[render-blocking-insight].details.headings[2].label"
      ],
      "core/audits/redirects.js | title": [
        "audits.redirects.title"
      ],
      "core/audits/redirects.js | description": [
        "audits.redirects.description"
      ],
      "core/lib/i18n/i18n.js | displayValueMsSavings": [
        {
          "values": {
            "wastedMs": 3466.70742
          },
          "path": "audits.redirects.displayValue"
        },
        {
          "values": {
            "wastedMs": 105
          },
          "path": "audits[document-latency-insight].displayValue"
        },
        {
          "values": {
            "wastedMs": 45
          },
          "path": "audits[font-display-insight].displayValue"
        }
      ],
      "core/audits/image-aspect-ratio.js | title": [
        "audits[image-aspect-ratio].title"
      ],
      "core/audits/image-aspect-ratio.js | description": [
        "audits[image-aspect-ratio].description"
      ],
      "core/audits/image-aspect-ratio.js | columnDisplayed": [
        "audits[image-aspect-ratio].details.headings[2].label"
      ],
      "core/audits/image-aspect-ratio.js | columnActual": [
        "audits[image-aspect-ratio].details.headings[3].label"
      ],
      "core/audits/image-size-responsive.js | title": [
        "audits[image-size-responsive].title"
      ],
      "core/audits/image-size-responsive.js | description": [
        "audits[image-size-responsive].description"
      ],
      "core/audits/image-size-responsive.js | columnDisplayed": [
        "audits[image-size-responsive].details.headings[2].label"
      ],
      "core/audits/image-size-responsive.js | columnActual": [
        "audits[image-size-responsive].details.headings[3].label"
      ],
      "core/audits/image-size-responsive.js | columnExpected": [
        "audits[image-size-responsive].details.headings[4].label"
      ],
      "core/audits/deprecations.js | title": [
        "audits.deprecations.title"
      ],
      "core/audits/deprecations.js | description": [
        "audits.deprecations.description"
      ],
      "core/audits/deprecations.js | columnDeprecate": [
        "audits.deprecations.details.headings[0].label"
      ],
      "core/audits/third-party-cookies.js | title": [
        "audits[third-party-cookies].title"
      ],
      "core/audits/third-party-cookies.js | description": [
        "audits[third-party-cookies].description"
      ],
      "core/audits/mainthread-work-breakdown.js | failureTitle": [
        "audits[mainthread-work-breakdown].title"
      ],
      "core/audits/mainthread-work-breakdown.js | description": [
        "audits[mainthread-work-breakdown].description"
      ],
      "core/audits/mainthread-work-breakdown.js | columnCategory": [
        "audits[mainthread-work-breakdown].details.headings[0].label"
      ],
      "core/audits/bootup-time.js | failureTitle": [
        "audits[bootup-time].title"
      ],
      "core/audits/bootup-time.js | description": [
        "audits[bootup-time].description"
      ],
      "core/audits/bootup-time.js | columnTotal": [
        "audits[bootup-time].details.headings[1].label"
      ],
      "core/audits/bootup-time.js | columnScriptEval": [
        "audits[bootup-time].details.headings[2].label"
      ],
      "core/audits/bootup-time.js | columnScriptParse": [
        "audits[bootup-time].details.headings[3].label"
      ],
      "core/audits/network-rtt.js | title": [
        "audits[network-rtt].title"
      ],
      "core/audits/network-rtt.js | description": [
        "audits[network-rtt].description"
      ],
      "core/audits/network-server-latency.js | title": [
        "audits[network-server-latency].title"
      ],
      "core/audits/network-server-latency.js | description": [
        "audits[network-server-latency].description"
      ],
      "core/lib/i18n/i18n.js | columnResourceType": [
        "audits[resource-summary].details.headings[0].label"
      ],
      "core/lib/i18n/i18n.js | columnRequests": [
        "audits[resource-summary].details.headings[1].label"
      ],
      "core/lib/i18n/i18n.js | columnTransferSize": [
        "audits[resource-summary].details.headings[2].label",
        "audits[total-byte-weight].details.headings[1].label",
        "audits[unminified-javascript].details.headings[1].label",
        "audits[unused-javascript].details.headings[1].label",
        "audits[cache-insight].details.headings[2].label",
        "audits[render-blocking-insight].details.headings[1].label"
      ],
      "core/lib/i18n/i18n.js | total": [
        "audits[resource-summary].details.items[0].label",
        "audits[cls-culprits-insight].details.items[0].items[0].node.value"
      ],
      "core/lib/i18n/i18n.js | imageResourceType": [
        "audits[resource-summary].details.items[1].label"
      ],
      "core/lib/i18n/i18n.js | otherResourceType": [
        "audits[resource-summary].details.items[2].label"
      ],
      "core/lib/i18n/i18n.js | scriptResourceType": [
        "audits[resource-summary].details.items[3].label"
      ],
      "core/lib/i18n/i18n.js | fontResourceType": [
        "audits[resource-summary].details.items[4].label"
      ],
      "core/lib/i18n/i18n.js | documentResourceType": [
        "audits[resource-summary].details.items[5].label"
      ],
      "core/lib/i18n/i18n.js | stylesheetResourceType": [
        "audits[resource-summary].details.items[6].label"
      ],
      "core/lib/i18n/i18n.js | mediaResourceType": [
        "audits[resource-summary].details.items[7].label"
      ],
      "core/lib/i18n/i18n.js | thirdPartyResourceType": [
        "audits[resource-summary].details.items[8].label"
      ],
      "core/audits/layout-shifts.js | title": [
        "audits[layout-shifts].title"
      ],
      "core/audits/layout-shifts.js | description": [
        "audits[layout-shifts].description"
      ],
      "core/audits/layout-shifts.js | displayValueShiftsFound": [
        {
          "values": {
            "shiftCount": 9
          },
          "path": "audits[layout-shifts].displayValue"
        }
      ],
      "core/lib/i18n/i18n.js | columnElement": [
        "audits[layout-shifts].details.headings[0].label",
        "audits[non-composited-animations].details.headings[0].label",
        "audits[cls-culprits-insight].details.items[0].headings[0].label",
        "audits[dom-size-insight].details.headings[1].label"
      ],
      "core/audits/layout-shifts.js | columnScore": [
        "audits[layout-shifts].details.headings[1].label"
      ],
      "core/audits/layout-shifts.js | rootCauseUnsizedMedia": [
        "audits[layout-shifts].details.items[0].subItems.items[0].cause",
        "audits[layout-shifts].details.items[1].subItems.items[0].cause",
        "audits[layout-shifts].details.items[2].subItems.items[0].cause",
        "audits[layout-shifts].details.items[3].subItems.items[0].cause",
        "audits[layout-shifts].details.items[4].subItems.items[0].cause",
        "audits[layout-shifts].details.items[5].subItems.items[0].cause",
        "audits[layout-shifts].details.items[6].subItems.items[0].cause",
        "audits[layout-shifts].details.items[7].subItems.items[0].cause",
        "audits[layout-shifts].details.items[8].subItems.items[0].cause"
      ],
      "core/audits/layout-shifts.js | rootCauseFontChanges": [
        "audits[layout-shifts].details.items[0].subItems.items[1].cause"
      ],
      "core/audits/long-tasks.js | title": [
        "audits[long-tasks].title"
      ],
      "core/audits/long-tasks.js | description": [
        "audits[long-tasks].description"
      ],
      "core/audits/long-tasks.js | displayValue": [
        {
          "values": {
            "itemCount": 7
          },
          "path": "audits[long-tasks].displayValue"
        }
      ],
      "core/audits/non-composited-animations.js | title": [
        "audits[non-composited-animations].title"
      ],
      "core/audits/non-composited-animations.js | description": [
        "audits[non-composited-animations].description"
      ],
      "core/audits/unsized-images.js | failureTitle": [
        "audits[unsized-images].title"
      ],
      "core/audits/unsized-images.js | description": [
        "audits[unsized-images].description"
      ],
      "core/audits/valid-source-maps.js | title": [
        "audits[valid-source-maps].title"
      ],
      "core/audits/valid-source-maps.js | description": [
        "audits[valid-source-maps].description"
      ],
      "core/audits/valid-source-maps.js | columnMapURL": [
        "audits[valid-source-maps].details.headings[1].label"
      ],
      "core/audits/csp-xss.js | title": [
        "audits[csp-xss].title"
      ],
      "core/audits/csp-xss.js | description": [
        "audits[csp-xss].description"
      ],
      "core/audits/csp-xss.js | columnDirective": [
        "audits[csp-xss].details.headings[1].label"
      ],
      "core/audits/csp-xss.js | columnSeverity": [
        "audits[csp-xss].details.headings[2].label"
      ],
      "core/lib/csp-evaluator.js | missingScriptSrc": [
        "audits[csp-xss].details.items[0].description"
      ],
      "core/lib/i18n/i18n.js | itemSeverityHigh": [
        "audits[csp-xss].details.items[0].severity",
        "audits[csp-xss].details.items[1].severity",
        "audits[has-hsts].details.items[0].severity",
        "audits[origin-isolation].details.items[0].severity",
        "audits[clickjacking-mitigation].details.items[0].severity",
        "audits[trusted-types-xss].details.items[0].severity"
      ],
      "core/lib/csp-evaluator.js | missingObjectSrc": [
        "audits[csp-xss].details.items[1].description"
      ],
      "core/audits/has-hsts.js | title": [
        "audits[has-hsts].title"
      ],
      "core/audits/has-hsts.js | description": [
        "audits[has-hsts].description"
      ],
      "core/audits/has-hsts.js | columnDirective": [
        "audits[has-hsts].details.headings[1].label"
      ],
      "core/audits/has-hsts.js | columnSeverity": [
        "audits[has-hsts].details.headings[2].label"
      ],
      "core/audits/has-hsts.js | lowMaxAge": [
        "audits[has-hsts].details.items[0].description"
      ],
      "core/audits/has-hsts.js | noSubdomain": [
        "audits[has-hsts].details.items[1].description"
      ],
      "core/lib/i18n/i18n.js | itemSeverityMedium": [
        "audits[has-hsts].details.items[1].severity",
        "audits[has-hsts].details.items[2].severity"
      ],
      "core/audits/has-hsts.js | noPreload": [
        "audits[has-hsts].details.items[2].description"
      ],
      "core/audits/origin-isolation.js | title": [
        "audits[origin-isolation].title"
      ],
      "core/audits/origin-isolation.js | description": [
        "audits[origin-isolation].description"
      ],
      "core/audits/origin-isolation.js | columnDirective": [
        "audits[origin-isolation].details.headings[1].label"
      ],
      "core/audits/origin-isolation.js | columnSeverity": [
        "audits[origin-isolation].details.headings[2].label"
      ],
      "core/audits/origin-isolation.js | noCoop": [
        "audits[origin-isolation].details.items[0].description"
      ],
      "core/audits/clickjacking-mitigation.js | title": [
        "audits[clickjacking-mitigation].title"
      ],
      "core/audits/clickjacking-mitigation.js | description": [
        "audits[clickjacking-mitigation].description"
      ],
      "core/audits/clickjacking-mitigation.js | columnSeverity": [
        "audits[clickjacking-mitigation].details.headings[1].label"
      ],
      "core/audits/clickjacking-mitigation.js | noClickjackingMitigation": [
        "audits[clickjacking-mitigation].details.items[0].description"
      ],
      "core/audits/trusted-types-xss.js | title": [
        "audits[trusted-types-xss].title"
      ],
      "core/audits/trusted-types-xss.js | description": [
        "audits[trusted-types-xss].description"
      ],
      "core/audits/trusted-types-xss.js | columnSeverity": [
        "audits[trusted-types-xss].details.headings[1].label"
      ],
      "core/audits/trusted-types-xss.js | noTrustedTypesToMitigateXss": [
        "audits[trusted-types-xss].details.items[0].description"
      ],
      "core/audits/accessibility/accesskeys.js | title": [
        "audits.accesskeys.title"
      ],
      "core/audits/accessibility/accesskeys.js | description": [
        "audits.accesskeys.description"
      ],
      "core/audits/accessibility/aria-allowed-attr.js | title": [
        "audits[aria-allowed-attr].title"
      ],
      "core/audits/accessibility/aria-allowed-attr.js | description": [
        "audits[aria-allowed-attr].description"
      ],
      "core/lib/i18n/i18n.js | columnFailingElem": [
        "audits[aria-allowed-attr].details.headings[0].label",
        "audits[aria-conditional-attr].details.headings[0].label",
        "audits[aria-deprecated-role].details.headings[0].label",
        "audits[aria-dialog-name].details.headings[0].label",
        "audits[aria-hidden-body].details.headings[0].label",
        "audits[aria-prohibited-attr].details.headings[0].label",
        "audits[aria-required-attr].details.headings[0].label",
        "audits[aria-roles].details.headings[0].label",
        "audits[aria-valid-attr-value].details.headings[0].label",
        "audits[aria-valid-attr].details.headings[0].label",
        "audits[button-name].details.headings[0].label",
        "audits[color-contrast].details.headings[0].label",
        "audits[document-title].details.headings[0].label",
        "audits[heading-order].details.headings[0].label",
        "audits[html-has-lang].details.headings[0].label",
        "audits[html-lang-valid].details.headings[0].label",
        "audits[image-alt].details.headings[0].label",
        "audits[label-content-name-mismatch].details.headings[0].label",
        "audits.label.details.headings[0].label",
        "audits[landmark-one-main].details.headings[0].label",
        "audits[link-name].details.headings[0].label",
        "audits[link-in-text-block].details.headings[0].label",
        "audits.list.details.headings[0].label",
        "audits.listitem.details.headings[0].label",
        "audits[meta-viewport].details.headings[0].label",
        "audits[skip-link].details.headings[0].label",
        "audits.tabindex.details.headings[0].label",
        "audits[target-size].details.headings[0].label",
        "audits[paste-preventing-inputs].details.headings[0].label"
      ],
      "core/audits/accessibility/aria-allowed-role.js | title": [
        "audits[aria-allowed-role].title"
      ],
      "core/audits/accessibility/aria-allowed-role.js | description": [
        "audits[aria-allowed-role].description"
      ],
      "core/audits/accessibility/aria-command-name.js | title": [
        "audits[aria-command-name].title"
      ],
      "core/audits/accessibility/aria-command-name.js | description": [
        "audits[aria-command-name].description"
      ],
      "core/audits/accessibility/aria-conditional-attr.js | title": [
        "audits[aria-conditional-attr].title"
      ],
      "core/audits/accessibility/aria-conditional-attr.js | description": [
        "audits[aria-conditional-attr].description"
      ],
      "core/audits/accessibility/aria-deprecated-role.js | title": [
        "audits[aria-deprecated-role].title"
      ],
      "core/audits/accessibility/aria-deprecated-role.js | description": [
        "audits[aria-deprecated-role].description"
      ],
      "core/audits/accessibility/aria-dialog-name.js | title": [
        "audits[aria-dialog-name].title"
      ],
      "core/audits/accessibility/aria-dialog-name.js | description": [
        "audits[aria-dialog-name].description"
      ],
      "core/audits/accessibility/aria-hidden-body.js | title": [
        "audits[aria-hidden-body].title"
      ],
      "core/audits/accessibility/aria-hidden-body.js | description": [
        "audits[aria-hidden-body].description"
      ],
      "core/audits/accessibility/aria-hidden-focus.js | title": [
        "audits[aria-hidden-focus].title"
      ],
      "core/audits/accessibility/aria-hidden-focus.js | description": [
        "audits[aria-hidden-focus].description"
      ],
      "core/audits/accessibility/aria-input-field-name.js | title": [
        "audits[aria-input-field-name].title"
      ],
      "core/audits/accessibility/aria-input-field-name.js | description": [
        "audits[aria-input-field-name].description"
      ],
      "core/audits/accessibility/aria-meter-name.js | title": [
        "audits[aria-meter-name].title"
      ],
      "core/audits/accessibility/aria-meter-name.js | description": [
        "audits[aria-meter-name].description"
      ],
      "core/audits/accessibility/aria-progressbar-name.js | title": [
        "audits[aria-progressbar-name].title"
      ],
      "core/audits/accessibility/aria-progressbar-name.js | description": [
        "audits[aria-progressbar-name].description"
      ],
      "core/audits/accessibility/aria-prohibited-attr.js | title": [
        "audits[aria-prohibited-attr].title"
      ],
      "core/audits/accessibility/aria-prohibited-attr.js | description": [
        "audits[aria-prohibited-attr].description"
      ],
      "core/audits/accessibility/aria-required-attr.js | title": [
        "audits[aria-required-attr].title"
      ],
      "core/audits/accessibility/aria-required-attr.js | description": [
        "audits[aria-required-attr].description"
      ],
      "core/audits/accessibility/aria-required-children.js | title": [
        "audits[aria-required-children].title"
      ],
      "core/audits/accessibility/aria-required-children.js | description": [
        "audits[aria-required-children].description"
      ],
      "core/audits/accessibility/aria-required-parent.js | title": [
        "audits[aria-required-parent].title"
      ],
      "core/audits/accessibility/aria-required-parent.js | description": [
        "audits[aria-required-parent].description"
      ],
      "core/audits/accessibility/aria-roles.js | title": [
        "audits[aria-roles].title"
      ],
      "core/audits/accessibility/aria-roles.js | description": [
        "audits[aria-roles].description"
      ],
      "core/audits/accessibility/aria-text.js | title": [
        "audits[aria-text].title"
      ],
      "core/audits/accessibility/aria-text.js | description": [
        "audits[aria-text].description"
      ],
      "core/audits/accessibility/aria-toggle-field-name.js | title": [
        "audits[aria-toggle-field-name].title"
      ],
      "core/audits/accessibility/aria-toggle-field-name.js | description": [
        "audits[aria-toggle-field-name].description"
      ],
      "core/audits/accessibility/aria-tooltip-name.js | title": [
        "audits[aria-tooltip-name].title"
      ],
      "core/audits/accessibility/aria-tooltip-name.js | description": [
        "audits[aria-tooltip-name].description"
      ],
      "core/audits/accessibility/aria-treeitem-name.js | title": [
        "audits[aria-treeitem-name].title"
      ],
      "core/audits/accessibility/aria-treeitem-name.js | description": [
        "audits[aria-treeitem-name].description"
      ],
      "core/audits/accessibility/aria-valid-attr-value.js | title": [
        "audits[aria-valid-attr-value].title"
      ],
      "core/audits/accessibility/aria-valid-attr-value.js | description": [
        "audits[aria-valid-attr-value].description"
      ],
      "core/audits/accessibility/aria-valid-attr.js | title": [
        "audits[aria-valid-attr].title"
      ],
      "core/audits/accessibility/aria-valid-attr.js | description": [
        "audits[aria-valid-attr].description"
      ],
      "core/audits/accessibility/button-name.js | title": [
        "audits[button-name].title"
      ],
      "core/audits/accessibility/button-name.js | description": [
        "audits[button-name].description"
      ],
      "core/audits/accessibility/bypass.js | title": [
        "audits.bypass.title"
      ],
      "core/audits/accessibility/bypass.js | description": [
        "audits.bypass.description"
      ],
      "core/audits/accessibility/color-contrast.js | title": [
        "audits[color-contrast].title"
      ],
      "core/audits/accessibility/color-contrast.js | description": [
        "audits[color-contrast].description"
      ],
      "core/audits/accessibility/definition-list.js | title": [
        "audits[definition-list].title"
      ],
      "core/audits/accessibility/definition-list.js | description": [
        "audits[definition-list].description"
      ],
      "core/audits/accessibility/dlitem.js | title": [
        "audits.dlitem.title"
      ],
      "core/audits/accessibility/dlitem.js | description": [
        "audits.dlitem.description"
      ],
      "core/audits/accessibility/document-title.js | title": [
        "audits[document-title].title"
      ],
      "core/audits/accessibility/document-title.js | description": [
        "audits[document-title].description"
      ],
      "core/audits/accessibility/duplicate-id-aria.js | title": [
        "audits[duplicate-id-aria].title"
      ],
      "core/audits/accessibility/duplicate-id-aria.js | description": [
        "audits[duplicate-id-aria].description"
      ],
      "core/audits/accessibility/empty-heading.js | title": [
        "audits[empty-heading].title"
      ],
      "core/audits/accessibility/empty-heading.js | description": [
        "audits[empty-heading].description"
      ],
      "core/audits/accessibility/form-field-multiple-labels.js | title": [
        "audits[form-field-multiple-labels].title"
      ],
      "core/audits/accessibility/form-field-multiple-labels.js | description": [
        "audits[form-field-multiple-labels].description"
      ],
      "core/audits/accessibility/frame-title.js | title": [
        "audits[frame-title].title"
      ],
      "core/audits/accessibility/frame-title.js | description": [
        "audits[frame-title].description"
      ],
      "core/audits/accessibility/heading-order.js | failureTitle": [
        "audits[heading-order].title"
      ],
      "core/audits/accessibility/heading-order.js | description": [
        "audits[heading-order].description"
      ],
      "core/audits/accessibility/html-has-lang.js | title": [
        "audits[html-has-lang].title"
      ],
      "core/audits/accessibility/html-has-lang.js | description": [
        "audits[html-has-lang].description"
      ],
      "core/audits/accessibility/html-lang-valid.js | title": [
        "audits[html-lang-valid].title"
      ],
      "core/audits/accessibility/html-lang-valid.js | description": [
        "audits[html-lang-valid].description"
      ],
      "core/audits/accessibility/html-xml-lang-mismatch.js | title": [
        "audits[html-xml-lang-mismatch].title"
      ],
      "core/audits/accessibility/html-xml-lang-mismatch.js | description": [
        "audits[html-xml-lang-mismatch].description"
      ],
      "core/audits/accessibility/identical-links-same-purpose.js | title": [
        "audits[identical-links-same-purpose].title"
      ],
      "core/audits/accessibility/identical-links-same-purpose.js | description": [
        "audits[identical-links-same-purpose].description"
      ],
      "core/audits/accessibility/image-alt.js | failureTitle": [
        "audits[image-alt].title"
      ],
      "core/audits/accessibility/image-alt.js | description": [
        "audits[image-alt].description"
      ],
      "core/audits/accessibility/image-redundant-alt.js | title": [
        "audits[image-redundant-alt].title"
      ],
      "core/audits/accessibility/image-redundant-alt.js | description": [
        "audits[image-redundant-alt].description"
      ],
      "core/audits/accessibility/input-button-name.js | title": [
        "audits[input-button-name].title"
      ],
      "core/audits/accessibility/input-button-name.js | description": [
        "audits[input-button-name].description"
      ],
      "core/audits/accessibility/input-image-alt.js | title": [
        "audits[input-image-alt].title"
      ],
      "core/audits/accessibility/input-image-alt.js | description": [
        "audits[input-image-alt].description"
      ],
      "core/audits/accessibility/label-content-name-mismatch.js | failureTitle": [
        "audits[label-content-name-mismatch].title"
      ],
      "core/audits/accessibility/label-content-name-mismatch.js | description": [
        "audits[label-content-name-mismatch].description"
      ],
      "core/audits/accessibility/label.js | title": [
        "audits.label.title"
      ],
      "core/audits/accessibility/label.js | description": [
        "audits.label.description"
      ],
      "core/audits/accessibility/landmark-one-main.js | title": [
        "audits[landmark-one-main].title"
      ],
      "core/audits/accessibility/landmark-one-main.js | description": [
        "audits[landmark-one-main].description"
      ],
      "core/audits/accessibility/link-name.js | title": [
        "audits[link-name].title"
      ],
      "core/audits/accessibility/link-name.js | description": [
        "audits[link-name].description"
      ],
      "core/audits/accessibility/link-in-text-block.js | title": [
        "audits[link-in-text-block].title"
      ],
      "core/audits/accessibility/link-in-text-block.js | description": [
        "audits[link-in-text-block].description"
      ],
      "core/audits/accessibility/list.js | title": [
        "audits.list.title"
      ],
      "core/audits/accessibility/list.js | description": [
        "audits.list.description"
      ],
      "core/audits/accessibility/listitem.js | title": [
        "audits.listitem.title"
      ],
      "core/audits/accessibility/listitem.js | description": [
        "audits.listitem.description"
      ],
      "core/audits/accessibility/meta-refresh.js | title": [
        "audits[meta-refresh].title"
      ],
      "core/audits/accessibility/meta-refresh.js | description": [
        "audits[meta-refresh].description"
      ],
      "core/audits/accessibility/meta-viewport.js | title": [
        "audits[meta-viewport].title"
      ],
      "core/audits/accessibility/meta-viewport.js | description": [
        "audits[meta-viewport].description"
      ],
      "core/audits/accessibility/object-alt.js | title": [
        "audits[object-alt].title"
      ],
      "core/audits/accessibility/object-alt.js | description": [
        "audits[object-alt].description"
      ],
      "core/audits/accessibility/select-name.js | title": [
        "audits[select-name].title"
      ],
      "core/audits/accessibility/select-name.js | description": [
        "audits[select-name].description"
      ],
      "core/audits/accessibility/skip-link.js | failureTitle": [
        "audits[skip-link].title"
      ],
      "core/audits/accessibility/skip-link.js | description": [
        "audits[skip-link].description"
      ],
      "core/audits/accessibility/tabindex.js | title": [
        "audits.tabindex.title"
      ],
      "core/audits/accessibility/tabindex.js | description": [
        "audits.tabindex.description"
      ],
      "core/audits/accessibility/table-duplicate-name.js | title": [
        "audits[table-duplicate-name].title"
      ],
      "core/audits/accessibility/table-duplicate-name.js | description": [
        "audits[table-duplicate-name].description"
      ],
      "core/audits/accessibility/table-fake-caption.js | title": [
        "audits[table-fake-caption].title"
      ],
      "core/audits/accessibility/table-fake-caption.js | description": [
        "audits[table-fake-caption].description"
      ],
      "core/audits/accessibility/target-size.js | title": [
        "audits[target-size].title"
      ],
      "core/audits/accessibility/target-size.js | description": [
        "audits[target-size].description"
      ],
      "core/audits/accessibility/td-has-header.js | title": [
        "audits[td-has-header].title"
      ],
      "core/audits/accessibility/td-has-header.js | description": [
        "audits[td-has-header].description"
      ],
      "core/audits/accessibility/td-headers-attr.js | title": [
        "audits[td-headers-attr].title"
      ],
      "core/audits/accessibility/td-headers-attr.js | description": [
        "audits[td-headers-attr].description"
      ],
      "core/audits/accessibility/th-has-data-cells.js | title": [
        "audits[th-has-data-cells].title"
      ],
      "core/audits/accessibility/th-has-data-cells.js | description": [
        "audits[th-has-data-cells].description"
      ],
      "core/audits/accessibility/valid-lang.js | title": [
        "audits[valid-lang].title"
      ],
      "core/audits/accessibility/valid-lang.js | description": [
        "audits[valid-lang].description"
      ],
      "core/audits/accessibility/video-caption.js | title": [
        "audits[video-caption].title"
      ],
      "core/audits/accessibility/video-caption.js | description": [
        "audits[video-caption].description"
      ],
      "core/audits/byte-efficiency/total-byte-weight.js | title": [
        "audits[total-byte-weight].title"
      ],
      "core/audits/byte-efficiency/total-byte-weight.js | description": [
        "audits[total-byte-weight].description"
      ],
      "core/audits/byte-efficiency/total-byte-weight.js | displayValue": [
        {
          "values": {
            "totalBytes": 1468095
          },
          "path": "audits[total-byte-weight].displayValue"
        }
      ],
      "core/audits/byte-efficiency/unminified-css.js | title": [
        "audits[unminified-css].title"
      ],
      "core/audits/byte-efficiency/unminified-css.js | description": [
        "audits[unminified-css].description"
      ],
      "core/audits/byte-efficiency/unminified-javascript.js | title": [
        "audits[unminified-javascript].title"
      ],
      "core/audits/byte-efficiency/unminified-javascript.js | description": [
        "audits[unminified-javascript].description"
      ],
      "core/lib/i18n/i18n.js | displayValueByteSavings": [
        {
          "values": {
            "wastedBytes": 383196
          },
          "path": "audits[unminified-javascript].displayValue"
        },
        {
          "values": {
            "wastedBytes": 133312
          },
          "path": "audits[unused-javascript].displayValue"
        },
        {
          "values": {
            "wastedBytes": 421844.01944444457
          },
          "path": "audits[cache-insight].displayValue"
        },
        {
          "values": {
            "wastedBytes": 57321
          },
          "path": "audits[image-delivery-insight].displayValue"
        }
      ],
      "core/lib/i18n/i18n.js | columnWastedBytes": [
        "audits[unminified-javascript].details.headings[2].label",
        "audits[unused-javascript].details.headings[2].label",
        "audits[font-display-insight].details.headings[1].label",
        "audits[image-delivery-insight].details.headings[3].label"
      ],
      "core/audits/byte-efficiency/unused-css-rules.js | title": [
        "audits[unused-css-rules].title"
      ],
      "core/audits/byte-efficiency/unused-css-rules.js | description": [
        "audits[unused-css-rules].description"
      ],
      "core/audits/byte-efficiency/unused-javascript.js | title": [
        "audits[unused-javascript].title"
      ],
      "core/audits/byte-efficiency/unused-javascript.js | description": [
        "audits[unused-javascript].description"
      ],
      "core/audits/dobetterweb/doctype.js | title": [
        "audits.doctype.title"
      ],
      "core/audits/dobetterweb/doctype.js | description": [
        "audits.doctype.description"
      ],
      "core/audits/dobetterweb/charset.js | title": [
        "audits.charset.title"
      ],
      "core/audits/dobetterweb/charset.js | description": [
        "audits.charset.description"
      ],
      "core/audits/dobetterweb/geolocation-on-start.js | title": [
        "audits[geolocation-on-start].title"
      ],
      "core/audits/dobetterweb/geolocation-on-start.js | description": [
        "audits[geolocation-on-start].description"
      ],
      "core/audits/dobetterweb/inspector-issues.js | title": [
        "audits[inspector-issues].title"
      ],
      "core/audits/dobetterweb/inspector-issues.js | description": [
        "audits[inspector-issues].description"
      ],
      "core/audits/dobetterweb/inspector-issues.js | columnIssueType": [
        "audits[inspector-issues].details.headings[0].label"
      ],
      "core/audits/dobetterweb/js-libraries.js | title": [
        "audits[js-libraries].title"
      ],
      "core/audits/dobetterweb/js-libraries.js | description": [
        "audits[js-libraries].description"
      ],
      "core/audits/dobetterweb/js-libraries.js | columnVersion": [
        "audits[js-libraries].details.headings[1].label"
      ],
      "core/audits/dobetterweb/notification-on-start.js | title": [
        "audits[notification-on-start].title"
      ],
      "core/audits/dobetterweb/notification-on-start.js | description": [
        "audits[notification-on-start].description"
      ],
      "core/audits/dobetterweb/paste-preventing-inputs.js | title": [
        "audits[paste-preventing-inputs].title"
      ],
      "core/audits/dobetterweb/paste-preventing-inputs.js | description": [
        "audits[paste-preventing-inputs].description"
      ],
      "core/audits/seo/meta-description.js | title": [
        "audits[meta-description].title"
      ],
      "core/audits/seo/meta-description.js | description": [
        "audits[meta-description].description"
      ],
      "core/audits/seo/http-status-code.js | title": [
        "audits[http-status-code].title"
      ],
      "core/audits/seo/http-status-code.js | description": [
        "audits[http-status-code].description"
      ],
      "core/audits/seo/link-text.js | title": [
        "audits[link-text].title"
      ],
      "core/audits/seo/link-text.js | description": [
        "audits[link-text].description"
      ],
      "core/audits/seo/crawlable-anchors.js | failureTitle": [
        "audits[crawlable-anchors].title"
      ],
      "core/audits/seo/crawlable-anchors.js | description": [
        "audits[crawlable-anchors].description"
      ],
      "core/audits/seo/crawlable-anchors.js | columnFailingLink": [
        "audits[crawlable-anchors].details.headings[0].label"
      ],
      "core/audits/seo/is-crawlable.js | failureTitle": [
        "audits[is-crawlable].title"
      ],
      "core/audits/seo/is-crawlable.js | description": [
        "audits[is-crawlable].description"
      ],
      "core/audits/seo/robots-txt.js | title": [
        "audits[robots-txt].title"
      ],
      "core/audits/seo/robots-txt.js | description": [
        "audits[robots-txt].description"
      ],
      "core/audits/seo/hreflang.js | title": [
        "audits.hreflang.title"
      ],
      "core/audits/seo/hreflang.js | description": [
        "audits.hreflang.description"
      ],
      "core/audits/seo/canonical.js | title": [
        "audits.canonical.title"
      ],
      "core/audits/seo/canonical.js | description": [
        "audits.canonical.description"
      ],
      "core/audits/seo/manual/structured-data.js | title": [
        "audits[structured-data].title"
      ],
      "core/audits/seo/manual/structured-data.js | description": [
        "audits[structured-data].description"
      ],
      "core/audits/bf-cache.js | title": [
        "audits[bf-cache].title"
      ],
      "core/audits/bf-cache.js | description": [
        "audits[bf-cache].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | title": [
        "audits[cache-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | description": [
        "audits[cache-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | requestColumn": [
        "audits[cache-insight].details.headings[0].label"
      ],
      "core/lib/i18n/i18n.js | columnCacheTTL": [
        "audits[cache-insight].details.headings[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": [
        "audits[cls-culprits-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": [
        "audits[cls-culprits-insight].description"
      ],
      "core/audits/insights/cls-culprits-insight.js | columnScore": [
        "audits[cls-culprits-insight].details.items[0].headings[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImage": [
        "audits[cls-culprits-insight].details.items[0].items[1].subItems.items[0].cause",
        "audits[cls-culprits-insight].details.items[0].items[2].subItems.items[0].cause",
        "audits[cls-culprits-insight].details.items[0].items[3].subItems.items[0].cause",
        "audits[cls-culprits-insight].details.items[0].items[4].subItems.items[0].cause",
        "audits[cls-culprits-insight].details.items[0].items[5].subItems.items[0].cause"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | webFont": [
        "audits[cls-culprits-insight].details.items[0].items[1].subItems.items[1].cause"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": [
        "audits[document-latency-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": [
        "audits[document-latency-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": [
        {
          "values": {
            "PH1": 2,
            "PH2": "105 ms"
          },
          "path": "audits[document-latency-insight].details.items.noRedirects.label"
        }
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": [
        {
          "values": {
            "PH1": "29 ms"
          },
          "path": "audits[document-latency-insight].details.items.serverResponseIsFast.label"
        }
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": [
        "audits[document-latency-insight].details.items.usesCompression.label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": [
        "audits[dom-size-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": [
        "audits[dom-size-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | statistic": [
        "audits[dom-size-insight].details.headings[0].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | value": [
        "audits[dom-size-insight].details.headings[2].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | totalElements": [
        "audits[dom-size-insight].details.items[0].statistic"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | maxDOMDepth": [
        "audits[dom-size-insight].details.items[1].statistic"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | maxChildren": [
        "audits[dom-size-insight].details.items[2].statistic"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js | title": [
        "audits[duplicated-javascript-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js | description": [
        "audits[duplicated-javascript-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": [
        "audits[font-display-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": [
        "audits[font-display-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | title": [
        "audits[forced-reflow-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": [
        "audits[forced-reflow-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | totalReflowTime": [
        "audits[forced-reflow-insight].details.items[0].headings[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": [
        "audits[image-delivery-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": [
        "audits[image-delivery-insight].description"
      ],
      "core/lib/i18n/i18n.js | columnResourceSize": [
        "audits[image-delivery-insight].details.headings[2].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": [
        "audits[image-delivery-insight].details.items[0].subItems.items[0].reason"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": [
        {
          "values": {
            "PH1": "384x216",
            "PH2": "217x122"
          },
          "path": "audits[image-delivery-insight].details.items[0].subItems.items[1].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "217x122"
          },
          "path": "audits[image-delivery-insight].details.items[1].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "217x122"
          },
          "path": "audits[image-delivery-insight].details.items[2].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "217x122"
          },
          "path": "audits[image-delivery-insight].details.items[3].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "217x122"
          },
          "path": "audits[image-delivery-insight].details.items[4].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "217x122"
          },
          "path": "audits[image-delivery-insight].details.items[5].subItems.items[0].reason"
        }
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | title": [
        "audits[inp-breakdown-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | description": [
        "audits[inp-breakdown-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | title": [
        "audits[lcp-breakdown-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | description": [
        "audits[lcp-breakdown-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | subpart": [
        "audits[lcp-breakdown-insight].details.items[0].headings[0].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | timeToFirstByte": [
        "audits[lcp-breakdown-insight].details.items[0].items[0].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | elementRenderDelay": [
        "audits[lcp-breakdown-insight].details.items[0].items[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": [
        "audits[lcp-discovery-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": [
        "audits[lcp-discovery-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | title": [
        "audits[legacy-javascript-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | description": [
        "audits[legacy-javascript-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | title": [
        "audits[modern-http-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | description": [
        "audits[modern-http-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | protocol": [
        "audits[modern-http-insight].details.headings[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | title": [
        "audits[network-dependency-tree-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | description": [
        "audits[network-dependency-tree-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableTitle": [
        "audits[network-dependency-tree-insight].details.items[1].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableDescription": [
        "audits[network-dependency-tree-insight].details.items[1].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnOrigin": [
        "audits[network-dependency-tree-insight].details.items[1].value.headings[0].label",
        "audits[network-dependency-tree-insight].details.items[2].value.headings[0].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnSource": [
        "audits[network-dependency-tree-insight].details.items[1].value.headings[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | crossoriginWarning": [
        "audits[network-dependency-tree-insight].details.items[1].value.items[0].subItems.items[0].warning"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableTitle": [
        "audits[network-dependency-tree-insight].details.items[2].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableDescription": [
        "audits[network-dependency-tree-insight].details.items[2].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnWastedMs": [
        "audits[network-dependency-tree-insight].details.items[2].value.headings[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": [
        "audits[render-blocking-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": [
        "audits[render-blocking-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": [
        "audits[third-parties-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": [
        "audits[third-parties-insight].description"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": [
        "audits[viewport-insight].title"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": [
        "audits[viewport-insight].description"
      ],
      "core/config/default-config.js | performanceCategoryTitle": [
        "categories.performance.title"
      ],
      "core/config/default-config.js | a11yCategoryTitle": [
        "categories.accessibility.title"
      ],
      "core/config/default-config.js | a11yCategoryDescription": [
        "categories.accessibility.description"
      ],
      "core/config/default-config.js | a11yCategoryManualDescription": [
        "categories.accessibility.manualDescription"
      ],
      "core/config/default-config.js | bestPracticesCategoryTitle": [
        "categories[best-practices].title"
      ],
      "core/config/default-config.js | seoCategoryTitle": [
        "categories.seo.title"
      ],
      "core/config/default-config.js | seoCategoryDescription": [
        "categories.seo.description"
      ],
      "core/config/default-config.js | seoCategoryManualDescription": [
        "categories.seo.manualDescription"
      ],
      "core/config/default-config.js | metricGroupTitle": [
        "categoryGroups.metrics.title"
      ],
      "core/config/default-config.js | insightsGroupTitle": [
        "categoryGroups.insights.title"
      ],
      "core/config/default-config.js | insightsGroupDescription": [
        "categoryGroups.insights.description"
      ],
      "core/config/default-config.js | diagnosticsGroupTitle": [
        "categoryGroups.diagnostics.title"
      ],
      "core/config/default-config.js | diagnosticsGroupDescription": [
        "categoryGroups.diagnostics.description"
      ],
      "core/config/default-config.js | a11yBestPracticesGroupTitle": [
        "categoryGroups[a11y-best-practices].title"
      ],
      "core/config/default-config.js | a11yBestPracticesGroupDescription": [
        "categoryGroups[a11y-best-practices].description"
      ],
      "core/config/default-config.js | a11yColorContrastGroupTitle": [
        "categoryGroups[a11y-color-contrast].title"
      ],
      "core/config/default-config.js | a11yColorContrastGroupDescription": [
        "categoryGroups[a11y-color-contrast].description"
      ],
      "core/config/default-config.js | a11yNamesLabelsGroupTitle": [
        "categoryGroups[a11y-names-labels].title"
      ],
      "core/config/default-config.js | a11yNamesLabelsGroupDescription": [
        "categoryGroups[a11y-names-labels].description"
      ],
      "core/config/default-config.js | a11yNavigationGroupTitle": [
        "categoryGroups[a11y-navigation].title"
      ],
      "core/config/default-config.js | a11yNavigationGroupDescription": [
        "categoryGroups[a11y-navigation].description"
      ],
      "core/config/default-config.js | a11yAriaGroupTitle": [
        "categoryGroups[a11y-aria].title"
      ],
      "core/config/default-config.js | a11yAriaGroupDescription": [
        "categoryGroups[a11y-aria].description"
      ],
      "core/config/default-config.js | a11yLanguageGroupTitle": [
        "categoryGroups[a11y-language].title"
      ],
      "core/config/default-config.js | a11yLanguageGroupDescription": [
        "categoryGroups[a11y-language].description"
      ],
      "core/config/default-config.js | a11yAudioVideoGroupTitle": [
        "categoryGroups[a11y-audio-video].title"
      ],
      "core/config/default-config.js | a11yAudioVideoGroupDescription": [
        "categoryGroups[a11y-audio-video].description"
      ],
      "core/config/default-config.js | a11yTablesListsVideoGroupTitle": [
        "categoryGroups[a11y-tables-lists].title"
      ],
      "core/config/default-config.js | a11yTablesListsVideoGroupDescription": [
        "categoryGroups[a11y-tables-lists].description"
      ],
      "core/config/default-config.js | seoMobileGroupTitle": [
        "categoryGroups[seo-mobile].title"
      ],
      "core/config/default-config.js | seoMobileGroupDescription": [
        "categoryGroups[seo-mobile].description"
      ],
      "core/config/default-config.js | seoContentGroupTitle": [
        "categoryGroups[seo-content].title"
      ],
      "core/config/default-config.js | seoContentGroupDescription": [
        "categoryGroups[seo-content].description"
      ],
      "core/config/default-config.js | seoCrawlingGroupTitle": [
        "categoryGroups[seo-crawl].title"
      ],
      "core/config/default-config.js | seoCrawlingGroupDescription": [
        "categoryGroups[seo-crawl].description"
      ],
      "core/config/default-config.js | bestPracticesTrustSafetyGroupTitle": [
        "categoryGroups[best-practices-trust-safety].title"
      ],
      "core/config/default-config.js | bestPracticesUXGroupTitle": [
        "categoryGroups[best-practices-ux].title"
      ],
      "core/config/default-config.js | bestPracticesBrowserCompatGroupTitle": [
        "categoryGroups[best-practices-browser-compat].title"
      ],
      "core/config/default-config.js | bestPracticesGeneralGroupTitle": [
        "categoryGroups[best-practices-general].title"
      ]
    }
  }
}
