{
  "lighthouseVersion": "13.0.3",
  "requestedUrl": "https://usatoday.com/",
  "mainDocumentUrl": "https://eu.usatoday.com/",
  "finalDisplayedUrl": "https://eu.usatoday.com/",
  "finalUrl": "https://eu.usatoday.com/",
  "fetchTime": "2026-04-16T17:41:11.332Z",
  "gatherMode": "navigation",
  "runWarnings": [
    "The page may not be loading as expected because your test URL (https://usatoday.com/) was redirected to https://eu.usatoday.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": 1969.5,
    "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.14,
      "scoreDisplayMode": "numeric",
      "numericValue": 4603.057720000001,
      "numericUnit": "millisecond",
      "displayValue": "4.6 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": 10064.180451984252,
      "numericUnit": "millisecond",
      "displayValue": "10.1 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.45,
      "scoreDisplayMode": "numeric",
      "numericValue": 6052.143468764187,
      "numericUnit": "millisecond",
      "displayValue": "6.1 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": 5457952322281,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAfIA+gMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k="
          },
          {
            "timing": 750,
            "timestamp": 5457952697281,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAfIA+gMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k="
          },
          {
            "timing": 1125,
            "timestamp": 5457953072281,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAfIA+gMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k="
          },
          {
            "timing": 1500,
            "timestamp": 5457953447281,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAfIA+gMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k="
          },
          {
            "timing": 1875,
            "timestamp": 5457953822281,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAfIA+gMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k="
          },
          {
            "timing": 2250,
            "timestamp": 5457954197281,
            "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAfIA+gMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9k="
          },
          {
            "timing": 2625,
            "timestamp": 5457954572281,
            "data": "data:image/jpeg;base64,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"
          },
          {
            "timing": 3000,
            "timestamp": 5457954947281,
            "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": 2632,
        "timestamp": 5457954579407,
        "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.53,
      "scoreDisplayMode": "numeric",
      "numericValue": 551,
      "numericUnit": "millisecond",
      "displayValue": "550 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.15,
      "scoreDisplayMode": "numeric",
      "numericValue": 419,
      "numericUnit": "millisecond",
      "displayValue": "420 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": 1,
      "scoreDisplayMode": "numeric",
      "numericValue": 0,
      "numericUnit": "unitless",
      "displayValue": "0",
      "scoringOptions": {
        "p10": 0.1,
        "median": 0.25
      },
      "details": {
        "type": "debugdata",
        "items": [
          {
            "cumulativeLayoutShiftMainFrame": 0,
            "newEngineResult": {
              "cumulativeLayoutShift": 0,
              "cumulativeLayoutShiftMainFrame": 0
            },
            "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.usatoday.com/USAT-GUP/user/' from origin 'https://eu.usatoday.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.usatoday.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.usatoday.com/USAT-GUP/user/",
              "urlProvider": "network",
              "line": 0,
              "column": 0
            }
          }
        ]
      }
    },
    "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": 33,
      "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.usatoday.com/",
            "responseTime": 33
          }
        ],
        "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.25,
      "scoreDisplayMode": "numeric",
      "numericValue": 10161.709513984253,
      "numericUnit": "millisecond",
      "displayValue": "10.2 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": 1575.0320000000002,
      "numericUnit": "millisecond",
      "displayValue": "Est savings of 1,580 ms",
      "metricSavings": {
        "LCP": 1600,
        "FCP": 1600
      },
      "details": {
        "type": "opportunity",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "wastedMs",
            "valueType": "timespanMs",
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "url": "https://usatoday.com/",
            "wastedMs": 824.3420000000001
          },
          {
            "url": "https://www.usatoday.com/",
            "wastedMs": 750.69
          },
          {
            "url": "https://eu.usatoday.com/",
            "wastedMs": 0
          }
        ],
        "overallSavingsMs": 1575.0320000000002
      },
      "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 low 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": 0,
      "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": [
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89633597007-amanda-mc-cracken-1.JPG?crop=2048,1152,x0,y88&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-84-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,1,DIV,1,DIV,0,A,0,PICTURE,5,IMG",
              "selector": "div.hero-slot-three > a.section-helper-flex > picture.section-helper-column > img",
              "boundingRect": {
                "top": 641,
                "bottom": 834,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 193
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"She remained a virgin until 41. She says limerence is to blame.\">",
              "nodeLabel": "She remained a virgin until 41. She says limerence is to blame."
            },
            "displayedSize": "343 x 193",
            "actualSize": "270 x 152",
            "actualPixels": 41040,
            "expectedSize": "515 x 290",
            "expectedPixels": 149350
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89640976007-20190211-t-213034-z-278431926-rc-14751-d-8-d-60-rtrmadp-3-virginiapolitics.JPG?crop=4131,2324,x0,y193&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-83-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,1,DIV,0,DIV,0,A,0,PICTURE,5,IMG",
              "selector": "div.hero-slot-two > a.section-helper-flex > picture.section-helper-column > img",
              "boundingRect": {
                "top": 398,
                "bottom": 591,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 193
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\" alt=\"Former Virginia Lt. Gov. Justin Fairfax and wife found dead in home\">",
              "nodeLabel": "Former Virginia Lt. Gov. Justin Fairfax and wife found dead in home"
            },
            "displayedSize": "343 x 193",
            "actualSize": "270 x 152",
            "actualPixels": 41040,
            "expectedSize": "515 x 290",
            "expectedPixels": 149350
          }
        ]
      }
    },
    "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": 3667.055999999952,
      "numericUnit": "millisecond",
      "displayValue": "3.7 s",
      "metricSavings": {
        "TBT": 550
      },
      "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": 1722.5319999999697
          },
          {
            "group": "other",
            "groupLabel": "Other",
            "duration": 1156.8199999999817
          },
          {
            "group": "styleLayout",
            "groupLabel": "Style & Layout",
            "duration": 398.84799999999996
          },
          {
            "group": "scriptParseCompile",
            "groupLabel": "Script Parsing & Compilation",
            "duration": 215.4760000000001
          },
          {
            "group": "parseHTML",
            "groupLabel": "Parse HTML & CSS",
            "duration": 94.88800000000002
          },
          {
            "group": "garbageCollection",
            "groupLabel": "Garbage Collection",
            "duration": 46.43200000000002
          },
          {
            "group": "paintCompositeRender",
            "groupLabel": "Rendering",
            "duration": 32.05999999999998
          }
        ],
        "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": 1552.7959999999998,
      "numericUnit": "millisecond",
      "displayValue": "1.6 s",
      "metricSavings": {
        "TBT": 450
      },
      "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": "Unattributable",
            "total": 1322.18399999999,
            "scripting": 446.5559999999998,
            "scriptParseCompile": 0
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "total": 689.0720000000003,
            "scripting": 574.9720000000003,
            "scriptParseCompile": 1.684
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "total": 537.86,
            "scripting": 297.06399999999985,
            "scriptParseCompile": 1.072
          },
          {
            "url": "https://eu.usatoday.com/",
            "total": 418.67199999999997,
            "scripting": 87.77199999999998,
            "scriptParseCompile": 10.403999999999996
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "total": 199.04800000000003,
            "scripting": 94.16000000000003,
            "scriptParseCompile": 39.111999999999995
          }
        ],
        "summary": {
          "wastedMs": 1552.7959999999998
        },
        "sortedBy": [
          "total"
        ]
      },
      "guidanceLevel": 1
    },
    "diagnostics": {
      "id": "diagnostics",
      "title": "Diagnostics",
      "description": "Collection of useful page vitals.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "debugdata",
        "items": [
          {
            "numRequests": 233,
            "numScripts": 57,
            "numStylesheets": 0,
            "numFonts": 4,
            "numTasks": 2285,
            "numTasksOver10ms": 12,
            "numTasksOver25ms": 5,
            "numTasksOver50ms": 2,
            "numTasksOver100ms": 1,
            "numTasksOver500ms": 0,
            "rtt": 0.4510000000000005,
            "throughput": 29490617.270119693,
            "maxRtt": 24.632,
            "maxServerLatency": 32.544000000000004,
            "totalByteWeight": 2385473,
            "totalTaskTime": 916.7639999999961,
            "mainDocumentTransferSize": 40594
          }
        ]
      }
    },
    "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://usatoday.com/",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 0,
            "networkRequestTime": 1.0819997787475586,
            "networkEndTime": 86.4109992980957,
            "finished": true,
            "transferSize": 385,
            "resourceSize": 0,
            "statusCode": 301,
            "mimeType": "",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.com"
          },
          {
            "url": "https://www.usatoday.com/",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 86.4109992980957,
            "networkRequestTime": 87.03499984741211,
            "networkEndTime": 116.08599948883057,
            "finished": true,
            "transferSize": 671,
            "resourceSize": 0,
            "statusCode": 302,
            "mimeType": "",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.com"
          },
          {
            "url": "https://eu.usatoday.com/",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 116.08599948883057,
            "networkRequestTime": 116.58300018310547,
            "networkEndTime": 153.42099952697754,
            "finished": true,
            "transferSize": 40594,
            "resourceSize": 173896,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "Document",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.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": 166.2829990386963,
            "networkRequestTime": 167.5590000152588,
            "networkEndTime": 537.3920001983643,
            "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": 166.70100021362305,
            "networkRequestTime": 168.0999994277954,
            "networkEndTime": 203.14400005340576,
            "finished": true,
            "transferSize": 3755,
            "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": 166.84899997711182,
            "networkRequestTime": 168.57499980926514,
            "networkEndTime": 204.42500019073486,
            "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": 167.03999996185303,
            "networkRequestTime": 168.85099983215332,
            "networkEndTime": 208.49599933624268,
            "finished": true,
            "transferSize": 84378,
            "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/15/USAT/89625363007-image-20260415-t-114438434.jpg?crop=776,437,x0,y307",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.14400005340576,
            "networkRequestTime": 169.59899997711182,
            "networkEndTime": 206.49599933624268,
            "finished": true,
            "transferSize": 25071,
            "resourceSize": 24414,
            "statusCode": 200,
            "mimeType": "image/webp",
            "resourceType": "Image",
            "priority": "Medium",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89640976007-20190211-t-213034-z-278431926-rc-14751-d-8-d-60-rtrmadp-3-virginiapolitics.JPG?crop=4131,2324,x0,y193&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.23500061035156,
            "networkRequestTime": 170.06900024414062,
            "networkEndTime": 206.73999977111816,
            "finished": true,
            "transferSize": 6138,
            "resourceSize": 5858,
            "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/15/USAT/89633597007-amanda-mc-cracken-1.JPG?crop=2048,1152,x0,y88&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.29399967193604,
            "networkRequestTime": 208.2829999923706,
            "networkEndTime": 210.55299949645996,
            "finished": true,
            "transferSize": 5556,
            "resourceSize": 5325,
            "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/16/USAT/89639564007-pope-leo-latest-comments-trump-feud.JPG?crop=3673,3672,x1650,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.35299968719482,
            "networkRequestTime": 212.49300003051758,
            "networkEndTime": 217.60000038146973,
            "finished": true,
            "transferSize": 10336,
            "resourceSize": 10092,
            "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/16/USAT/89642693007-hspd.png?crop=489,490,x0,y7&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.42399978637695,
            "networkRequestTime": 213.1549997329712,
            "networkEndTime": 219.4409999847412,
            "finished": true,
            "transferSize": 124690,
            "resourceSize": 124051,
            "statusCode": 200,
            "mimeType": "image/png",
            "resourceType": "Image",
            "priority": "Medium",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/01/08/USAT/88081150007-20260106-t-175454-z-1475936040-rc-2-rviawdrlw-rtrmadp-3-usanewyorkmamdani.JPG?crop=3767,3767,x1236,y1&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.63399982452393,
            "networkRequestTime": 249.38899898529053,
            "networkEndTime": 252.6870002746582,
            "finished": true,
            "transferSize": 10163,
            "resourceSize": 10029,
            "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/24/USAT/89300647007-2209256635.jpg?crop=2356,2356,x704,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.7819995880127,
            "networkRequestTime": 254.80999946594238,
            "networkEndTime": 257.4130001068115,
            "finished": true,
            "transferSize": 7125,
            "resourceSize": 6901,
            "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/USAT/89623451007-rory-mcilroy-18.jpg?crop=1955,1951,x732,y4&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 167.98299980163574,
            "networkRequestTime": 258.48899936676025,
            "networkEndTime": 260.8680000305176,
            "finished": true,
            "transferSize": 11957,
            "resourceSize": 11729,
            "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/89640620007-2229139253.jpg?crop=3332,3332,x750,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 168.0310001373291,
            "networkRequestTime": 261.95499992370605,
            "networkEndTime": 264.2509994506836,
            "finished": true,
            "transferSize": 7812,
            "resourceSize": 7588,
            "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/89639342007-usatsi-28741028.jpg?crop=2000,1999,x750,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 168.08300018310547,
            "networkRequestTime": 265.1849994659424,
            "networkEndTime": 267.5580005645752,
            "finished": true,
            "transferSize": 10097,
            "resourceSize": 9521,
            "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/11/USAT/89569134007-2270257254.jpg?crop=5504,5503,x825,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 168.16399955749512,
            "networkRequestTime": 268.95399951934814,
            "networkEndTime": 272.01399993896484,
            "finished": true,
            "transferSize": 13095,
            "resourceSize": 12859,
            "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/USAT/89624787007-2267741973.jpg?crop=2801,2799,x699,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 168.66699981689453,
            "networkRequestTime": 273.39099979400635,
            "networkEndTime": 276.0389995574951,
            "finished": true,
            "transferSize": 15429,
            "resourceSize": 15205,
            "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/89640987007-2270998355.jpg?crop=3332,3332,x906,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 168.91699981689453,
            "networkRequestTime": 277.1499996185303,
            "networkEndTime": 279.8120002746582,
            "finished": true,
            "transferSize": 7979,
            "resourceSize": 7755,
            "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/89639409007-tesla-new-orleans-molotov-cocktail.jpeg?crop=800,799,x240,y0&quality=50&width=270",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 168.98699951171875,
            "networkRequestTime": 280.8139991760254,
            "networkEndTime": 283.39799976348877,
            "finished": true,
            "transferSize": 11952,
            "resourceSize": 11364,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/appservices/universal-web/universal/icons/icon-instagram_24.png",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 169.05200004577637,
            "networkRequestTime": 284.42899990081787,
            "networkEndTime": 286.8199996948242,
            "finished": true,
            "transferSize": 1737,
            "resourceSize": 1282,
            "statusCode": 200,
            "mimeType": "image/webp",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/otSDKStub.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 174.67899990081787,
            "networkRequestTime": 175.49399948120117,
            "networkEndTime": 246.16100025177002,
            "finished": true,
            "transferSize": 9293,
            "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": 178.61299991607666,
            "networkRequestTime": 287.74299907684326,
            "networkEndTime": 290.0409994125366,
            "finished": true,
            "transferSize": 1693,
            "resourceSize": 3664,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cdn.cookielaw.org/consent/5eaec3d6-175d-498f-a6a7-ec66eb9b9673/5eaec3d6-175d-498f-a6a7-ec66eb9b9673.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 253.33199977874756,
            "networkRequestTime": 253.9940004348755,
            "networkEndTime": 342.6500005722046,
            "finished": true,
            "transferSize": 2966,
            "resourceSize": 7949,
            "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": 292.17899990081787,
            "networkRequestTime": 292.8449993133545,
            "networkEndTime": 295.1059989929199,
            "finished": true,
            "transferSize": 3818,
            "resourceSize": 10912,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 345.9429998397827,
            "networkRequestTime": 346.7529993057251,
            "networkEndTime": 396.2469997406006,
            "finished": true,
            "transferSize": 131432,
            "resourceSize": 541512,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cdn.cookielaw.org/consent/5eaec3d6-175d-498f-a6a7-ec66eb9b9673/019c9ea5-4e14-78f7-b0c9-51d04d1fbc99/en.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 418.4710006713867,
            "networkRequestTime": 419.3800001144409,
            "networkEndTime": 490.8409996032715,
            "finished": true,
            "transferSize": 59659,
            "resourceSize": 408352,
            "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": 419.1319999694824,
            "networkRequestTime": 420.5059995651245,
            "networkEndTime": 477.60500049591064,
            "finished": true,
            "transferSize": 88969,
            "resourceSize": 693348,
            "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": 419.7749996185303,
            "networkRequestTime": 421.6259994506836,
            "networkEndTime": 451.75,
            "finished": true,
            "transferSize": 18176,
            "resourceSize": 64968,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/assets/otCenterRounded.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 604.3059997558594,
            "networkRequestTime": 605.0619993209839,
            "networkEndTime": 639.7439994812012,
            "finished": true,
            "transferSize": 2995,
            "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": 605.0019998550415,
            "networkRequestTime": 605.672999382019,
            "networkEndTime": 640.0130004882812,
            "finished": true,
            "transferSize": 4866,
            "resourceSize": 27608,
            "statusCode": 200,
            "mimeType": "text/css",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "Optanon"
          },
          {
            "url": "https://www.gannett-cdn.com/gannett-web/properties/usatoday/logos-and-branding/logo-default.svg",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 612.4700002670288,
            "networkRequestTime": 613.0169992446899,
            "networkEndTime": 616.1239995956421,
            "finished": true,
            "transferSize": 1455,
            "resourceSize": 2449,
            "statusCode": 200,
            "mimeType": "image/svg+xml",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 616.0880002975464,
            "networkRequestTime": 616.9609994888306,
            "networkEndTime": 621.8889999389648,
            "finished": true,
            "transferSize": 17851,
            "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": 616.2340002059937,
            "networkRequestTime": 617.4340000152588,
            "networkEndTime": 621.6809997558594,
            "finished": true,
            "transferSize": 5545,
            "resourceSize": 18995,
            "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/gallium/themes/universal.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 630.2560005187988,
            "networkRequestTime": 631.4079999923706,
            "networkEndTime": 636.8319997787476,
            "finished": true,
            "transferSize": 5986,
            "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": 631.0709991455078,
            "networkRequestTime": 631.7829990386963,
            "networkEndTime": 637.045000076294,
            "finished": true,
            "transferSize": 754,
            "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": 644.5679998397827,
            "networkRequestTime": 646.170000076294,
            "networkEndTime": 655.0129995346069,
            "finished": true,
            "transferSize": 2388,
            "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": 647.1929998397827,
            "networkRequestTime": 648.0819997787476,
            "networkEndTime": 681.4829998016357,
            "finished": true,
            "transferSize": 10167,
            "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": 647.4770002365112,
            "networkRequestTime": 648.5150003433228,
            "networkEndTime": 680.4449996948242,
            "finished": true,
            "transferSize": 1024,
            "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": 647.6949996948242,
            "networkRequestTime": 652.2340002059937,
            "networkEndTime": 676.1770000457764,
            "finished": true,
            "transferSize": 2366,
            "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": 647.9840002059937,
            "networkRequestTime": 652.8269996643066,
            "networkEndTime": 680.8319997787476,
            "finished": true,
            "transferSize": 2293,
            "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": 648.2379999160767,
            "networkRequestTime": 655.375,
            "networkEndTime": 683.9459991455078,
            "finished": true,
            "transferSize": 8860,
            "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": 648.5150003433228,
            "networkRequestTime": 655.543999671936,
            "networkEndTime": 676.3909997940063,
            "finished": true,
            "transferSize": 4116,
            "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": 648.829999923706,
            "networkRequestTime": 659.9060001373291,
            "networkEndTime": 676.6789989471436,
            "finished": true,
            "transferSize": 4563,
            "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": 649.1679992675781,
            "networkRequestTime": 660.3919992446899,
            "networkEndTime": 676.960000038147,
            "finished": true,
            "transferSize": 2086,
            "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": 649.4619998931885,
            "networkRequestTime": 662.1840000152588,
            "networkEndTime": 683.1979990005493,
            "finished": true,
            "transferSize": 2068,
            "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/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 654.8679990768433,
            "networkRequestTime": 694.9440002441406,
            "networkEndTime": 700.9739999771118,
            "finished": true,
            "transferSize": 18248,
            "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/UnifySerif_W_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 654.9930000305176,
            "networkRequestTime": 695.2430000305176,
            "networkEndTime": 701.2150001525879,
            "finished": true,
            "transferSize": 21256,
            "resourceSize": 20664,
            "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_SBd.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 655.2019996643066,
            "networkRequestTime": 695.4919996261597,
            "networkEndTime": 701.592999458313,
            "finished": true,
            "transferSize": 18065,
            "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_Rg.woff2",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 655.4119997024536,
            "networkRequestTime": 695.7299995422363,
            "networkEndTime": 701.378999710083,
            "finished": true,
            "transferSize": 16795,
            "resourceSize": 16620,
            "statusCode": 200,
            "mimeType": "binary/octet-stream",
            "resourceType": "Font",
            "priority": "VeryHigh",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/popular/USAT/10?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&searchtype=socialReferrals",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 714.701000213623,
            "networkRequestTime": 715.6609992980957,
            "networkEndTime": 750.8699998855591,
            "finished": true,
            "transferSize": 1114,
            "resourceSize": 3148,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/argon/navreimagined/usat/top_nav_primary/?apiKey=f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 715.3159999847412,
            "networkRequestTime": 717.079999923706,
            "networkEndTime": 744.9629993438721,
            "finished": true,
            "transferSize": 7485,
            "resourceSize": 37245,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/news_nation_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 722.423999786377,
            "networkRequestTime": 723.0659990310669,
            "networkEndTime": 751.8870000839233,
            "finished": true,
            "transferSize": 2983,
            "resourceSize": 14201,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/sports_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 722.9250001907349,
            "networkRequestTime": 723.4010000228882,
            "networkEndTime": 843.4589996337891,
            "finished": true,
            "transferSize": 3768,
            "resourceSize": 16440,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/entertainment_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 723.3280000686646,
            "networkRequestTime": 723.7609996795654,
            "networkEndTime": 749.8039999008179,
            "finished": true,
            "transferSize": 3108,
            "resourceSize": 15575,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/life_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 723.7589998245239,
            "networkRequestTime": 724.25,
            "networkEndTime": 748.625,
            "finished": true,
            "transferSize": 3055,
            "resourceSize": 16609,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/money_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 724.2069997787476,
            "networkRequestTime": 724.9119997024536,
            "networkEndTime": 754.6259994506836,
            "finished": true,
            "transferSize": 3177,
            "resourceSize": 15934,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/tech_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 724.5869998931885,
            "networkRequestTime": 725.1149997711182,
            "networkEndTime": 756.0949993133545,
            "finished": true,
            "transferSize": 2897,
            "resourceSize": 13387,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/travel_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 724.9359998703003,
            "networkRequestTime": 725.3369998931885,
            "networkEndTime": 754.8330001831055,
            "finished": true,
            "transferSize": 3241,
            "resourceSize": 16674,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/opinion_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 725.53600025177,
            "networkRequestTime": 726.4259996414185,
            "networkEndTime": 755.0729999542236,
            "finished": true,
            "transferSize": 3702,
            "resourceSize": 17601,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/popular/USAT/10?assettype=video&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 725.9350004196167,
            "networkRequestTime": 726.71399974823,
            "networkEndTime": 747.0290002822876,
            "finished": true,
            "transferSize": 3366,
            "resourceSize": 15773,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/popular/USAT/10?assettype=gallery&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 726.3399991989136,
            "networkRequestTime": 726.9439992904663,
            "networkEndTime": 747.2119989395142,
            "finished": true,
            "transferSize": 3469,
            "resourceSize": 16769,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://user.usatoday.com/USAT-GUP/user/",
            "sessionTargetType": "page",
            "protocol": "",
            "rendererStartTime": 749.1579999923706,
            "networkRequestTime": 749.1579999923706,
            "networkEndTime": 823.6789999008179,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 0,
            "statusCode": -1,
            "mimeType": "",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.com"
          },
          {
            "url": "https://api.gannett-cdn.com/thorium/breaking-news/?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&site-code=USAT",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 750.4099998474121,
            "networkRequestTime": 756.8369998931885,
            "networkEndTime": 759.5290002822876,
            "finished": true,
            "transferSize": 256,
            "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/shadycss/custom-style-interface.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 797.128999710083,
            "networkRequestTime": 797.7089996337891,
            "networkEndTime": 801.4670000076294,
            "finished": true,
            "transferSize": 524,
            "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": 797.4180002212524,
            "networkRequestTime": 798.0609998703003,
            "networkEndTime": 801.5880002975464,
            "finished": true,
            "transferSize": 3078,
            "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/shadycss/apply-shim.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 800.1599998474121,
            "networkRequestTime": 802.1829996109009,
            "networkEndTime": 808.2749996185303,
            "finished": true,
            "transferSize": 491,
            "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": 800.4650001525879,
            "networkRequestTime": 802.4149990081787,
            "networkEndTime": 819.6559991836548,
            "finished": true,
            "transferSize": 9941,
            "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": 800.668999671936,
            "networkRequestTime": 802.5539999008179,
            "networkEndTime": 810.91100025177,
            "finished": true,
            "transferSize": 2281,
            "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": 800.8669996261597,
            "networkRequestTime": 802.7589998245239,
            "networkEndTime": 811.1510000228882,
            "finished": true,
            "transferSize": 2753,
            "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": 801.0550003051758,
            "networkRequestTime": 802.951000213623,
            "networkEndTime": 811.3140001296997,
            "finished": true,
            "transferSize": 1201,
            "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": 801.2379999160767,
            "networkRequestTime": 803.096999168396,
            "networkEndTime": 818.1350002288818,
            "finished": true,
            "transferSize": 1702,
            "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": 801.4169998168945,
            "networkRequestTime": 803.2430000305176,
            "networkEndTime": 818.91100025177,
            "finished": true,
            "transferSize": 1432,
            "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": 801.6149997711182,
            "networkRequestTime": 803.5729990005493,
            "networkEndTime": 821.2350006103516,
            "finished": true,
            "transferSize": 1052,
            "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": 801.8009996414185,
            "networkRequestTime": 803.8559989929199,
            "networkEndTime": 823.2490005493164,
            "finished": true,
            "transferSize": 3833,
            "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/mixins/mutable-data.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 804.2299995422363,
            "networkRequestTime": 806.8689994812012,
            "networkEndTime": 831.9709997177124,
            "finished": true,
            "transferSize": 3141,
            "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/polymer/lib/utils/templatize.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 805.5689992904663,
            "networkRequestTime": 823.5409994125366,
            "networkEndTime": 832.5629997253418,
            "finished": true,
            "transferSize": 8170,
            "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": 806.8119993209839,
            "networkRequestTime": 823.7779998779297,
            "networkEndTime": 832.918999671936,
            "finished": true,
            "transferSize": 881,
            "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": 807.0460004806519,
            "networkRequestTime": 823.9659996032715,
            "networkEndTime": 842.378999710083,
            "finished": true,
            "transferSize": 1805,
            "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": 807.2600002288818,
            "networkRequestTime": 824.1099996566772,
            "networkEndTime": 839.2189989089966,
            "finished": true,
            "transferSize": 1351,
            "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/utils/array-splice.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 809.181999206543,
            "networkRequestTime": 824.2630004882812,
            "networkEndTime": 841.3119993209839,
            "finished": true,
            "transferSize": 3100,
            "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": 810.6579999923706,
            "networkRequestTime": 824.5249996185303,
            "networkEndTime": 837.8999996185303,
            "finished": true,
            "transferSize": 1248,
            "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": 810.8629999160767,
            "networkRequestTime": 824.6749992370605,
            "networkEndTime": 844.4789991378784,
            "finished": true,
            "transferSize": 25923,
            "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/vendor/components/polymer/lib/legacy/class.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 812.2089996337891,
            "networkRequestTime": 825.0319995880127,
            "networkEndTime": 839.6959991455078,
            "finished": true,
            "transferSize": 6256,
            "resourceSize": 19488,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://atoms.usatoday.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 825.0629997253418,
            "networkRequestTime": 825.9029998779297,
            "networkEndTime": 855.576000213623,
            "finished": true,
            "transferSize": 16451,
            "resourceSize": 58540,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.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": 861.9280004501343,
            "networkRequestTime": 862.3949995040894,
            "networkEndTime": 865.545000076294,
            "finished": true,
            "transferSize": 1885,
            "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/polymer/lib/utils/gestures.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 866.2700004577637,
            "networkRequestTime": 866.7890005111694,
            "networkEndTime": 869.2519998550415,
            "finished": true,
            "transferSize": 8109,
            "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": 868.9689998626709,
            "networkRequestTime": 871.3369998931885,
            "networkEndTime": 880.6900005340576,
            "finished": true,
            "transferSize": 4510,
            "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/settings.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 870.7320003509521,
            "networkRequestTime": 871.6370000839233,
            "networkEndTime": 881.2379999160767,
            "finished": true,
            "transferSize": 2046,
            "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": 871.5279998779297,
            "networkRequestTime": 873.3690004348755,
            "networkEndTime": 881.6269998550415,
            "finished": true,
            "transferSize": 2874,
            "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": 871.9010000228882,
            "networkRequestTime": 873.6389999389648,
            "networkEndTime": 878.795000076294,
            "finished": true,
            "transferSize": 3342,
            "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/flattened-nodes-observer.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 893.0169992446899,
            "networkRequestTime": 893.6000003814697,
            "networkEndTime": 896.8659992218018,
            "finished": true,
            "transferSize": 3195,
            "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/vendor/components/polymer/lib/utils/path.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 905.6709995269775,
            "networkRequestTime": 906.2760000228882,
            "networkEndTime": 908.9439992904663,
            "finished": true,
            "transferSize": 2278,
            "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": 906.2449998855591,
            "networkRequestTime": 906.6909999847412,
            "networkEndTime": 910.1339998245239,
            "finished": true,
            "transferSize": 1327,
            "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": 906.6990003585815,
            "networkRequestTime": 907.08899974823,
            "networkEndTime": 911.4959993362427,
            "finished": true,
            "transferSize": 6274,
            "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/polymer/lib/utils/async.html",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 913.0729999542236,
            "networkRequestTime": 913.6569995880127,
            "networkEndTime": 917.0830001831055,
            "finished": true,
            "transferSize": 1895,
            "resourceSize": 6112,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644586007-buckets.jpg?crop=1919,1079,x0,y0&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 932.2740001678467,
            "networkRequestTime": 932.7399997711182,
            "networkEndTime": 936.5430002212524,
            "finished": true,
            "transferSize": 12666,
            "resourceSize": 12081,
            "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/14/USAT/89601229007-usatsi-28723374.jpg?crop=3551,1998,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 933.5619993209839,
            "networkRequestTime": 933.9729995727539,
            "networkEndTime": 943.8889999389648,
            "finished": true,
            "transferSize": 9039,
            "resourceSize": 8787,
            "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/89643790007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 933.8649997711182,
            "networkRequestTime": 934.5159997940063,
            "networkEndTime": 944.2649993896484,
            "finished": true,
            "transferSize": 6839,
            "resourceSize": 6718,
            "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/USAT/89632537007-usatsi-27136809.jpg?crop=8639,4860,x0,y576&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 934.2859992980957,
            "networkRequestTime": 934.8989992141724,
            "networkEndTime": 944.8009996414185,
            "finished": true,
            "transferSize": 8318,
            "resourceSize": 8090,
            "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/89643772007-trnd-corpse-flower-blooms-after-3-years-thumb.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 934.6420001983643,
            "networkRequestTime": 936.9569997787476,
            "networkEndTime": 956.5690002441406,
            "finished": true,
            "transferSize": 8380,
            "resourceSize": 8131,
            "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/89643186007-justin-fairfax-death.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 934.9320001602173,
            "networkRequestTime": 937.2969999313354,
            "networkEndTime": 955.1000003814697,
            "finished": true,
            "transferSize": 11519,
            "resourceSize": 11265,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/videos/videoelephant/thumbnails/89235535007.jpg?width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 935.1140003204346,
            "networkRequestTime": 937.6529998779297,
            "networkEndTime": 950.1840000152588,
            "finished": true,
            "transferSize": 10853,
            "resourceSize": 10405,
            "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/89642182007-pollen-car-care.jpg?crop=3152,1774,x0,y700&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 935.4670000076294,
            "networkRequestTime": 938.0270004272461,
            "networkEndTime": 952.9580001831055,
            "finished": true,
            "transferSize": 7787,
            "resourceSize": 7571,
            "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/89642406007-20260416-t-122033-z-1-lwd-296416042026-rp-1-rtrwnev-d-2964-popeafricabamendamp-400-00-55-22-still-001.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 935.8420000076294,
            "networkRequestTime": 938.3280000686646,
            "networkEndTime": 950.6300001144409,
            "finished": true,
            "transferSize": 10008,
            "resourceSize": 9729,
            "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/89641767007-iran-strait-briefing.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 936.1370000839233,
            "networkRequestTime": 938.6730003356934,
            "networkEndTime": 953.3540000915527,
            "finished": true,
            "transferSize": 9222,
            "resourceSize": 8993,
            "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/07/NVIC/89506536007-bonking-1.jpg?crop=1903,1070,x0,y0&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 945.8209991455078,
            "networkRequestTime": 946.9090003967285,
            "networkEndTime": 960.6269998550415,
            "finished": true,
            "transferSize": 23851,
            "resourceSize": 23282,
            "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/89641974007-2271621700.jpg?crop=5785,3254,x0,y301&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 946.5130004882812,
            "networkRequestTime": 947.1750001907349,
            "networkEndTime": 991.0840005874634,
            "finished": true,
            "transferSize": 15325,
            "resourceSize": 14775,
            "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/89639660007-getty-images-1967052244.jpg?crop=3687,2075,x2,y429&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 946.8169994354248,
            "networkRequestTime": 947.5099992752075,
            "networkEndTime": 977.4469995498657,
            "finished": true,
            "transferSize": 8850,
            "resourceSize": 8617,
            "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/USAT/89631412007-ry-lf-171124-1569-2096-comp-r-2.jpg?crop=4996,2812,x0,y255&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 947.1079998016357,
            "networkRequestTime": 947.7799997329712,
            "networkEndTime": 977.9490003585815,
            "finished": true,
            "transferSize": 8635,
            "resourceSize": 8396,
            "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/USAT/89634423007-getty-images-2193735116.jpg?crop=7525,4234,x0,y250&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 947.3660001754761,
            "networkRequestTime": 948.0349998474121,
            "networkEndTime": 978.253999710083,
            "finished": true,
            "transferSize": 14207,
            "resourceSize": 13637,
            "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/89644341007-getty-images-2271545990.jpg?crop=4408,2480,x0,y157&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 947.6379995346069,
            "networkRequestTime": 948.3070001602173,
            "networkEndTime": 966.5979995727539,
            "finished": true,
            "transferSize": 8147,
            "resourceSize": 7917,
            "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/USAT/89631027007-14490.jpg?crop=3482,1960,x3,y987&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 948.0409994125366,
            "networkRequestTime": 948.636999130249,
            "networkEndTime": 988.8689994812012,
            "finished": true,
            "transferSize": 10026,
            "resourceSize": 9807,
            "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/USAT/89629118007-beef-n-s-2-e-8-00-33-20-06.jpg?crop=3199,1799,x360,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 948.3880004882812,
            "networkRequestTime": 948.9469995498657,
            "networkEndTime": 972.3059997558594,
            "finished": true,
            "transferSize": 5457,
            "resourceSize": 5201,
            "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/USAT/89634057007-getty-images-2270976655.jpg?crop=5125,2883,x0,y267&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 948.7290000915527,
            "networkRequestTime": 949.21399974823,
            "networkEndTime": 986.9390001296997,
            "finished": true,
            "transferSize": 14675,
            "resourceSize": 14416,
            "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/USAT/89629869007-xxx-20260415-jm-melania-trump-006.JPG?crop=3599,2025,x0,y187&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 949.076000213623,
            "networkRequestTime": 949.6780004501343,
            "networkEndTime": 997.060998916626,
            "finished": true,
            "transferSize": 10445,
            "resourceSize": 10203,
            "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/USAT/89633597007-amanda-mc-cracken-1.JPG?crop=2048,1152,x0,y88&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.1950006484985,
            "networkRequestTime": 967.0530004501343,
            "networkEndTime": 1026.2720003128052,
            "finished": true,
            "transferSize": 9795,
            "resourceSize": 9541,
            "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/06/USAT/89489993007-phat-4687.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.2999992370605,
            "networkRequestTime": 967.3619995117188,
            "networkEndTime": 1026.5019998550415,
            "finished": true,
            "transferSize": 11344,
            "resourceSize": 11120,
            "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/24/USAT/89300647007-2209256635.jpg?crop=3530,1987,x0,y29&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.3570003509521,
            "networkRequestTime": 967.5329999923706,
            "networkEndTime": 1026.6140003204346,
            "finished": true,
            "transferSize": 8146,
            "resourceSize": 7902,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/presto/2023/04/07/USAT/a6bfa298-17d3-4c0b-95fa-bd4b06f2205b-Screen_Shot_2023-04-07_at_7.50.57_AM.png?crop=1440,810,x59,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.4789991378784,
            "networkRequestTime": 968.7810001373291,
            "networkEndTime": 1088.3579998016357,
            "finished": true,
            "transferSize": 119350,
            "resourceSize": 119037,
            "statusCode": 200,
            "mimeType": "image/png",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89628617007-getty-images-1391616865.jpg?crop=1853,1042,x187,y372&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.5219993591309,
            "networkRequestTime": 969.3699998855591,
            "networkEndTime": 1028.6820001602173,
            "finished": true,
            "transferSize": 7304,
            "resourceSize": 7048,
            "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/14/USAT/89603917007-getty-images-2241146296.jpg?crop=2308,1298,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.5930004119873,
            "networkRequestTime": 969.9309997558594,
            "networkEndTime": 1048.2309999465942,
            "finished": true,
            "transferSize": 10634,
            "resourceSize": 10398,
            "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/11/USAT/89561490007-ammortal-chamber-in-use.jpg?crop=6498,3656,x0,y338&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.6529998779297,
            "networkRequestTime": 970.2180004119873,
            "networkEndTime": 1027.002999305725,
            "finished": true,
            "transferSize": 7683,
            "resourceSize": 7113,
            "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/14/USAT/89603283007-getty-images-2225330587.jpg?crop=3536,1989,x676,y560&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.7329998016357,
            "networkRequestTime": 970.5639991760254,
            "networkEndTime": 1066.8489999771118,
            "finished": true,
            "transferSize": 10443,
            "resourceSize": 9875,
            "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/08/USAT/89515910007-getty-images-2225734558.jpg?crop=5999,3375,x0,y312&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 959.8109998703003,
            "networkRequestTime": 970.9540004730225,
            "networkEndTime": 1079.0120000839233,
            "finished": true,
            "transferSize": 7100,
            "resourceSize": 6865,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.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": 964.0099992752075,
            "networkRequestTime": 971.2320003509521,
            "networkEndTime": 1036.9889993667603,
            "finished": true,
            "transferSize": 6040,
            "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": 965.9139995574951,
            "networkRequestTime": 971.5229997634888,
            "networkEndTime": 1038.3049993515015,
            "finished": true,
            "transferSize": 984,
            "resourceSize": 1781,
            "statusCode": 200,
            "mimeType": "text/html",
            "resourceType": "XHR",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644849007-20260417-ent-henry-winkler-16-x-9-thumb-1.jpg?crop=1919,1079,x0,y0&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 974.471999168396,
            "networkRequestTime": 978.5359992980957,
            "networkEndTime": 1069.878999710083,
            "finished": true,
            "transferSize": 15639,
            "resourceSize": 15394,
            "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/89643748007-sf-good-guys-online-teaser-one-sheet-2025-x-3000-041526.jpg?crop=1974,1110,x1,y30&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 974.6909999847412,
            "networkRequestTime": 978.8679990768433,
            "networkEndTime": 1070.3179998397827,
            "finished": true,
            "transferSize": 16358,
            "resourceSize": 16111,
            "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/89642991007-val-kilmer.png?crop=1482,833,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 974.793999671936,
            "networkRequestTime": 979.2789993286133,
            "networkEndTime": 1067.991000175476,
            "finished": true,
            "transferSize": 98844,
            "resourceSize": 98542,
            "statusCode": 200,
            "mimeType": "image/png",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644586007-buckets.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 974.83899974823,
            "networkRequestTime": 979.6759996414185,
            "networkEndTime": 1049.6969995498657,
            "finished": true,
            "transferSize": 10548,
            "resourceSize": 10326,
            "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/89640987007-2270998355.jpg?crop=4996,2812,x3,y77&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 975.7550001144409,
            "networkRequestTime": 980.673999786377,
            "networkEndTime": 1033.0749998092651,
            "finished": true,
            "transferSize": 8108,
            "resourceSize": 7547,
            "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/89642166007-1983981060.jpg?crop=3817,2146,x0,y196&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 975.8339996337891,
            "networkRequestTime": 981.204999923706,
            "networkEndTime": 1058.5229997634888,
            "finished": true,
            "transferSize": 6597,
            "resourceSize": 6040,
            "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/89641268007-getty-images-93745197.jpg?crop=2747,1544,x0,y416&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 976.0109996795654,
            "networkRequestTime": 981.3879995346069,
            "networkEndTime": 1046.3549995422363,
            "finished": true,
            "transferSize": 8760,
            "resourceSize": 8527,
            "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/89641451007-collage.png?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 976.0689992904663,
            "networkRequestTime": 981.7889995574951,
            "networkEndTime": 1093.7319993972778,
            "finished": true,
            "transferSize": 138964,
            "resourceSize": 138652,
            "statusCode": 200,
            "mimeType": "image/png",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89641558007-1666848742.jpg?crop=4681,2634,x0,y146&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 982.7889995574951,
            "networkRequestTime": 983.3549995422363,
            "networkEndTime": 1088.0780000686646,
            "finished": true,
            "transferSize": 11986,
            "resourceSize": 11427,
            "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/89644129007-20260416-t-144559-z-1683443225-rc-2-eqkamykc-0-rtrmadp-3-popeafricacameroonbamenda.JPG?crop=2079,1170,x0,y69&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 982.8880004882812,
            "networkRequestTime": 984.0129995346069,
            "networkEndTime": 1083.2329998016357,
            "finished": true,
            "transferSize": 9255,
            "resourceSize": 8981,
            "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/89642693007-hspd.png?crop=489,275,x0,y126&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 982.9349994659424,
            "networkRequestTime": 985.1669998168945,
            "networkEndTime": 1104.6879997253418,
            "finished": true,
            "transferSize": 118239,
            "resourceSize": 117925,
            "statusCode": 200,
            "mimeType": "image/png",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2024/08/12/USAT/74769822007-20231110-t-090117-z-1536244383-rc-22-a-4-a-0-kmyw-rtrmadp-3-spaceexplorationasteroid.JPG?crop=3793,2133,x11,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 983.1440000534058,
            "networkRequestTime": 991.3619995117188,
            "networkEndTime": 1089.2760000228882,
            "finished": true,
            "transferSize": 9170,
            "resourceSize": 8987,
            "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/89640976007-20190211-t-213034-z-278431926-rc-14751-d-8-d-60-rtrmadp-3-virginiapolitics.JPG?crop=4131,2324,x0,y193&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 983.2379999160767,
            "networkRequestTime": 991.6690006256104,
            "networkEndTime": 1090.7480001449585,
            "finished": true,
            "transferSize": 9452,
            "resourceSize": 9191,
            "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/13/USAT/89596917007-usatsi-19687785.jpg?crop=3544,1995,x0,y216&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 990.8629999160767,
            "networkRequestTime": 991.8550004959106,
            "networkEndTime": 1107.5279998779297,
            "finished": true,
            "transferSize": 13247,
            "resourceSize": 13028,
            "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/89643707007-2202158353.jpg?crop=5768,3245,x0,y377&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 990.956000328064,
            "networkRequestTime": 992.0419998168945,
            "networkEndTime": 1109.1059999465942,
            "finished": true,
            "transferSize": 11259,
            "resourceSize": 11035,
            "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/89642984007-2270874554.jpg?crop=3928,2211,x0,y204&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.0180006027222,
            "networkRequestTime": 992.293999671936,
            "networkEndTime": 1099.5780000686646,
            "finished": true,
            "transferSize": 6693,
            "resourceSize": 6471,
            "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/89641257007-usatsi-24248715-168410240-lowres.jpg?crop=2591,1459,x0,y134&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.0699996948242,
            "networkRequestTime": 992.5389995574951,
            "networkEndTime": 1105.9969997406006,
            "finished": true,
            "transferSize": 8505,
            "resourceSize": 8267,
            "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/89639863007-2268564371.jpg?crop=4723,2657,x0,y246&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.1359996795654,
            "networkRequestTime": 992.7129993438721,
            "networkEndTime": 1102.7170000076294,
            "finished": true,
            "transferSize": 12947,
            "resourceSize": 12700,
            "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/89639342007-usatsi-28741028.jpg?crop=2999,1687,x0,y156&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.2279996871948,
            "networkRequestTime": 992.9989995956421,
            "networkEndTime": 1094.2720003128052,
            "finished": true,
            "transferSize": 9326,
            "resourceSize": 9077,
            "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/USAT/89633543007-post-malone-1.jpg?crop=6330,3559,x8,y1081&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.298999786377,
            "networkRequestTime": 993.1990003585815,
            "networkEndTime": 1103.333999633789,
            "finished": true,
            "transferSize": 10867,
            "resourceSize": 10305,
            "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/89639211007-1000-x-563-hockey-bogo-pr.jpg?crop=999,562,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.3959999084473,
            "networkRequestTime": 993.4060001373291,
            "networkEndTime": 1101.1189994812012,
            "finished": true,
            "transferSize": 14922,
            "resourceSize": 14686,
            "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/USAT/89624217007-getty-images-2247967585.jpg?crop=8191,4609,x0,y427&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.4630002975464,
            "networkRequestTime": 993.6759996414185,
            "networkEndTime": 1096.1569995880127,
            "finished": true,
            "transferSize": 7799,
            "resourceSize": 7254,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/images/motleyfool/2026/01/21/USAT/88283899007-getty-gold-bars-on-money-cash-wealth.jpeg?crop=2118,1191,x0,y111&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 991.746000289917,
            "networkRequestTime": 994.1029996871948,
            "networkEndTime": 1094.7019996643066,
            "finished": true,
            "transferSize": 13906,
            "resourceSize": 13759,
            "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/13/USAT/89592522007-20260413-t-164654-z-1793843197-rc-2-gokajvjw-9-rtrmadp-3-usatrump.JPG?crop=3983,2241,x0,y0&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 997.0410003662109,
            "networkRequestTime": 997.6239995956421,
            "networkEndTime": 1113.7980003356934,
            "finished": true,
            "transferSize": 10607,
            "resourceSize": 10342,
            "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/06/04/PROC/84035623007-roc-56-k-0-l-0-jvyk-746-b-35-lc-1-original.jpg?crop=3241,1822,x3,y736&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 997.1809997558594,
            "networkRequestTime": 997.9329996109009,
            "networkEndTime": 1123.0449991226196,
            "finished": true,
            "transferSize": 9422,
            "resourceSize": 9241,
            "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/04/10/USAT/83028897007-getty-images-1973410818.jpg?crop=2119,1192,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 997.25,
            "networkRequestTime": 998.2279996871948,
            "networkEndTime": 1114.25,
            "finished": true,
            "transferSize": 12092,
            "resourceSize": 11598,
            "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/USAT/89622452007-2269960577.jpg?crop=4885,2748,x0,y0&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 997.326000213623,
            "networkRequestTime": 998.5959997177124,
            "networkEndTime": 1124.5639991760254,
            "finished": true,
            "transferSize": 10913,
            "resourceSize": 10352,
            "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/08/26/USAT/85832359007-usatsi-25580961-3.jpg?crop=3494,1967,x0,y181&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 997.5699996948242,
            "networkRequestTime": 1007.6999998092651,
            "networkEndTime": 1110.8329992294312,
            "finished": true,
            "transferSize": 9799,
            "resourceSize": 9591,
            "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/13/USAT/89586611007-20260413-t-103834-z-419146673-rc-2-aoka-44-ui-4-rtrmadp-3-popeafricaalgeria.JPG?crop=2959,1665,x0,y151&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 997.7929992675781,
            "networkRequestTime": 1008.5559997558594,
            "networkEndTime": 1115.7649993896484,
            "finished": true,
            "transferSize": 5668,
            "resourceSize": 5396,
            "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/09/USAT/89537304007-usatsi-16538132-168415644-lowres.jpg?crop=3108,1748,x0,y328&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 998.0099992752075,
            "networkRequestTime": 1009.1840000152588,
            "networkEndTime": 1129.6549997329712,
            "finished": true,
            "transferSize": 7031,
            "resourceSize": 6767,
            "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/08/USAT/89519569007-usatsi-27992424.jpg?crop=1279,721,x0,y119&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 998.2410001754761,
            "networkRequestTime": 1009.673999786377,
            "networkEndTime": 1116.8470001220703,
            "finished": true,
            "transferSize": 14449,
            "resourceSize": 14198,
            "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/31/USAT/89409993007-20260330-t-214742-z-74322177-rc-2-rndamx-6-lf-rtrmadp-3-usatrumpthrone.JPG?crop=6493,3653,x5,y681&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 998.4749994277954,
            "networkRequestTime": 1014.3559999465942,
            "networkEndTime": 1122.6939992904663,
            "finished": true,
            "transferSize": 10033,
            "resourceSize": 9750,
            "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/14/USAT/89600607007-2270717460.jpg?crop=8208,4617,x7,y513&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 998.71399974823,
            "networkRequestTime": 1014.9650001525879,
            "networkEndTime": 1119.1630001068115,
            "finished": true,
            "transferSize": 13375,
            "resourceSize": 13149,
            "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/10/USAT/89557872007-krabi-hat-noppharat-thara-mu-ko-phi-phi-national-park-mu-ko-hong-0884-p-1.jpg?crop=1999,1125,x0,y207&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1004.8129997253418,
            "networkRequestTime": 1015.5639991760254,
            "networkEndTime": 1124.8870000839233,
            "finished": true,
            "transferSize": 19224,
            "resourceSize": 18945,
            "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/USAT/89631768007-20260410-t-063245-z-35847140-rc-26-mka-41-ghm-rtrmadp-3-lufthansastrike.JPG?crop=5494,3093,x0,y282&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1005.0749998092651,
            "networkRequestTime": 1015.9759998321533,
            "networkEndTime": 1118.1899995803833,
            "finished": true,
            "transferSize": 10114,
            "resourceSize": 9511,
            "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/13/USAT/89596917007-usatsi-19687785.jpg?crop=3544,1995,x0,y216&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1005.2449998855591,
            "networkRequestTime": 1016.5219993591309,
            "networkEndTime": 1126.5069999694824,
            "finished": true,
            "transferSize": 11685,
            "resourceSize": 11463,
            "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/89644858007-20260416-t-062514-z-1977052121-rc-25-qkabph-8-m-rtrmadp-3-easyjetoutlook.JPG?crop=2419,1361,x0,y272&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1005.5049991607666,
            "networkRequestTime": 1016.9270000457764,
            "networkEndTime": 1128.0459995269775,
            "finished": true,
            "transferSize": 8208,
            "resourceSize": 7939,
            "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/07/USAT/89501913007-20210717-t-000000-z-568331705-rc-2-dmo-9-nf-66-r-rtrmadp-3-montenegrotourismcruiser.JPG?crop=5494,3093,x0,y572&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1005.6999998092651,
            "networkRequestTime": 1017.2109994888306,
            "networkEndTime": 1133.6420001983643,
            "finished": true,
            "transferSize": 9352,
            "resourceSize": 8742,
            "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/USAT/89633327007-iceblock-2-htjef-260415-1776265996893-hp-embed-3-x-4.jpg?crop=749,421,x0,y400&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1005.8649997711182,
            "networkRequestTime": 1017.5729999542236,
            "networkEndTime": 1130.7809991836548,
            "finished": true,
            "transferSize": 8435,
            "resourceSize": 8182,
            "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/18/USAT/89215505007-milner-ruts.jpg?crop=2813,1584,x0,y143&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1006.0390005111694,
            "networkRequestTime": 1018.3489990234375,
            "networkEndTime": 1133.9320001602173,
            "finished": true,
            "transferSize": 8383,
            "resourceSize": 8158,
            "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/11/USAT/89561490007-ammortal-chamber-in-use.jpg?crop=6498,3656,x0,y338&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1017.3830003738403,
            "networkRequestTime": 1018.8210000991821,
            "networkEndTime": 1138.712999343872,
            "finished": true,
            "transferSize": 8715,
            "resourceSize": 8155,
            "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/13/USAT/89592945007-pghe-0338-family-phone-safety-kids-teens.jpg?crop=1918,1078,x0,y2&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1017.7090005874634,
            "networkRequestTime": 1019.4429998397827,
            "networkEndTime": 1141.9490003585815,
            "finished": true,
            "transferSize": 11413,
            "resourceSize": 11145,
            "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/14/USAT/89607114007-dscf-0474.JPG?crop=3839,2161,x0,y199&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1017.918999671936,
            "networkRequestTime": 1019.6639995574951,
            "networkEndTime": 1137.3629999160767,
            "finished": true,
            "transferSize": 9426,
            "resourceSize": 9202,
            "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/14/USAT/89606236007-apple-maps-google-maps-house-blur-2.jpg?crop=1534,864,x0,y412&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1018.1319990158081,
            "networkRequestTime": 1020.6920003890991,
            "networkEndTime": 1139.1699991226196,
            "finished": true,
            "transferSize": 9373,
            "resourceSize": 9132,
            "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/14/PNAS/89603571007-1243415335.jpg?crop=4799,2701,x0,y198&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1018.4870004653931,
            "networkRequestTime": 1021.0419998168945,
            "networkEndTime": 1140.881999015808,
            "finished": true,
            "transferSize": 17304,
            "resourceSize": 17068,
            "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/09/USAT/89538908007-316-partner-programming-099.jpg?crop=2393,1346,x2095,y1791&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1018.753999710083,
            "networkRequestTime": 1021.3039999008179,
            "networkEndTime": 1143.01699924469,
            "finished": true,
            "transferSize": 13413,
            "resourceSize": 13174,
            "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/07/USAT/89498242007-img-2062-1.jpg?crop=2679,1507,x0,y812&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1018.9739999771118,
            "networkRequestTime": 1022.0869998931885,
            "networkEndTime": 1135.1879997253418,
            "finished": true,
            "transferSize": 6416,
            "resourceSize": 6169,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://atoms.usatoday.com/atoms-configs/prod/dist/uw/USAT/(null)/journey.json",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1036.6359996795654,
            "networkRequestTime": 1037.9809999465942,
            "networkEndTime": 1062.4420003890991,
            "finished": true,
            "transferSize": 554,
            "resourceSize": 0,
            "statusCode": 302,
            "mimeType": "application/xml",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.com"
          },
          {
            "url": "https://www.gannett-cdn.com/sites/usatoday/images/favicon.png",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1039.8979997634888,
            "networkRequestTime": 1043.556999206543,
            "networkEndTime": 1144.4349994659424,
            "finished": true,
            "transferSize": 812,
            "resourceSize": 198,
            "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/shadycss/custom-style-interface.min.js",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1050.0790004730225,
            "networkRequestTime": 1050.8499994277954,
            "networkEndTime": 1069.1510000228882,
            "finished": true,
            "transferSize": 1535,
            "resourceSize": 3075,
            "statusCode": 200,
            "mimeType": "application/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannettdigital.com"
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/07/SFTW/89503195007-usatsi-28051299.jpg?crop=5218,2936,x0,y540&width=420&quality=50",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1056.791000366211,
            "networkRequestTime": 1059.1180000305176,
            "networkEndTime": 1152.7569999694824,
            "finished": true,
            "transferSize": 10560,
            "resourceSize": 10309,
            "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/89644263007-byeong-hun-an.jpg?crop=3681,2072,x0,y187&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1057.1409997940063,
            "networkRequestTime": 1059.476999282837,
            "networkEndTime": 1167.8639993667603,
            "finished": true,
            "transferSize": 6668,
            "resourceSize": 6413,
            "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/USAT/89633468007-usatsi-27652032.jpg?crop=5118,2880,x0,y511&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1057.3369998931885,
            "networkRequestTime": 1060.6619997024536,
            "networkEndTime": 1150.5679998397827,
            "finished": true,
            "transferSize": 11233,
            "resourceSize": 10709,
            "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/89634910007-usatsi-28521730.jpg?crop=5327,2997,x410,y144&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1057.494999885559,
            "networkRequestTime": 1061.0459995269775,
            "networkEndTime": 1148.6559991836548,
            "finished": true,
            "transferSize": 6928,
            "resourceSize": 6682,
            "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/10/SGLF/89559832007-2270732724.jpg?crop=4261,2398,x0,y221&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1057.6459999084473,
            "networkRequestTime": 1061.351999282837,
            "networkEndTime": 1146.159999847412,
            "finished": true,
            "transferSize": 10212,
            "resourceSize": 9957,
            "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/13/PDTF/88663381007-021326-tigers-022.jpg?crop=5550,3122,x0,y338&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1057.8050003051758,
            "networkRequestTime": 1062.3589992523193,
            "networkEndTime": 1157.7079992294312,
            "finished": true,
            "transferSize": 7654,
            "resourceSize": 7512,
            "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/89642961007-usatsi-28666802.jpg?crop=3219,1811,x0,y107&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1057.960000038147,
            "networkRequestTime": 1063.222999572754,
            "networkEndTime": 1155.7869997024536,
            "finished": true,
            "transferSize": 7297,
            "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/03/24/USAT/89294576007-matthew-stafford-032326.jpg?crop=3304,1858,x465,y104&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1058.101999282837,
            "networkRequestTime": 1063.6359996795654,
            "networkEndTime": 1158.0190000534058,
            "finished": true,
            "transferSize": 10525,
            "resourceSize": 9987,
            "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/89640721007-eric-decosta-ravens-gm-041626.jpg?crop=5201,2926,x343,y476&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1058.246000289917,
            "networkRequestTime": 1064.1890001296997,
            "networkEndTime": 1154.2630004882812,
            "finished": true,
            "transferSize": 10778,
            "resourceSize": 10511,
            "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/89638306007-usatsi-28730316.jpg?crop=3319,1866,x0,y123&width=384&quality=50&crop=16%3A9",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1058.3849992752075,
            "networkRequestTime": 1064.6319999694824,
            "networkEndTime": 1154.5190000534058,
            "finished": true,
            "transferSize": 9976,
            "resourceSize": 9734,
            "statusCode": 200,
            "mimeType": "image/jpeg",
            "resourceType": "Image",
            "priority": "Low",
            "experimentalFromMainFrame": true,
            "entity": "gannett-cdn.com"
          },
          {
            "url": "https://atoms.usatoday.com/atoms-configs/prod/dist/uw/usat/control/journey.json?originalSegment=(null)",
            "sessionTargetType": "page",
            "protocol": "h2",
            "rendererStartTime": 1062.4420003890991,
            "networkRequestTime": 1069.008999824524,
            "networkEndTime": 1077.246000289917,
            "finished": true,
            "transferSize": 503,
            "resourceSize": 130,
            "statusCode": 200,
            "mimeType": "application/json",
            "resourceType": "Fetch",
            "priority": "High",
            "experimentalFromMainFrame": true,
            "entity": "usatoday.com"
          },
          {
            "url": "data:text/javascript;charset=utf-8,(function()%7B'use%20strict'%3Bvar%20userPolymer%3Dwindow.Polyme…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1074.0789995193481,
            "networkRequestTime": 1074.0789995193481,
            "networkEndTime": 1074.2750005722046,
            "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": 1075.6059999465942,
            "networkRequestTime": 1075.6059999465942,
            "networkEndTime": 1077.1479997634888,
            "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": 1081.7019996643066,
            "networkRequestTime": 1081.7019996643066,
            "networkEndTime": 1081.9969997406006,
            "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": 1083.2239999771118,
            "networkRequestTime": 1083.2239999771118,
            "networkEndTime": 1083.4409999847412,
            "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": 1084.5869998931885,
            "networkRequestTime": 1084.5869998931885,
            "networkEndTime": 1084.7709999084473,
            "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": 1086.1209993362427,
            "networkRequestTime": 1087.4499998092651,
            "networkEndTime": 1159.8020000457764,
            "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": 1166.253999710083,
            "networkRequestTime": 1166.253999710083,
            "networkEndTime": 1166.5609998703003,
            "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": 1167.8999996185303,
            "networkRequestTime": 1167.8999996185303,
            "networkEndTime": 1168.031000137329,
            "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": 1169.6950006484985,
            "networkRequestTime": 1169.6950006484985,
            "networkEndTime": 1169.972999572754,
            "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": 1172.8219995498657,
            "networkRequestTime": 1172.8219995498657,
            "networkEndTime": 1173.091999053955,
            "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": 1174.3680000305176,
            "networkRequestTime": 1174.3680000305176,
            "networkEndTime": 1174.7259998321533,
            "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": 1175.8489999771118,
            "networkRequestTime": 1175.8489999771118,
            "networkEndTime": 1176.2399997711182,
            "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": 1177.7409992218018,
            "networkRequestTime": 1177.7409992218018,
            "networkEndTime": 1178.2479991912842,
            "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": 1181.164999961853,
            "networkRequestTime": 1181.164999961853,
            "networkEndTime": 1181.583999633789,
            "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": 1183.9159994125366,
            "networkRequestTime": 1183.9159994125366,
            "networkEndTime": 1184.5880002975464,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 19930,
            "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": 1189.2799997329712,
            "networkRequestTime": 1189.2799997329712,
            "networkEndTime": 1191.2600002288818,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 100964,
            "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*%20Provides%20b…",
            "sessionTargetType": "page",
            "protocol": "data",
            "rendererStartTime": 1202.3610000610352,
            "networkRequestTime": 1202.3610000610352,
            "networkEndTime": 1202.5710000991821,
            "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": 1204.4799995422363,
            "networkRequestTime": 1204.4799995422363,
            "networkEndTime": 1204.7699995040894,
            "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": 1206.6310005187988,
            "networkRequestTime": 1206.6310005187988,
            "networkEndTime": 1207.1949996948242,
            "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": 1210.4809999465942,
            "networkRequestTime": 1210.4809999465942,
            "networkEndTime": 1210.755000114441,
            "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": 1212.3590002059937,
            "networkRequestTime": 1212.3590002059937,
            "networkEndTime": 1213.0669994354248,
            "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": 1216.4409999847412,
            "networkRequestTime": 1216.4409999847412,
            "networkEndTime": 1216.583999633789,
            "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": 1217.6169996261597,
            "networkRequestTime": 1217.6169996261597,
            "networkEndTime": 1217.7919998168945,
            "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": 1219.218999862671,
            "networkRequestTime": 1219.218999862671,
            "networkEndTime": 1219.468999862671,
            "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": 1220.3289995193481,
            "networkRequestTime": 1220.3289995193481,
            "networkEndTime": 1220.4499998092651,
            "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": 1221.3529996871948,
            "networkRequestTime": 1221.3529996871948,
            "networkEndTime": 1221.4659996032715,
            "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": 1222.4899997711182,
            "networkRequestTime": 1222.4899997711182,
            "networkEndTime": 1222.7829990386963,
            "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": 1224.1029996871948,
            "networkRequestTime": 1224.1029996871948,
            "networkEndTime": 1224.4419994354248,
            "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": 1226.5509996414185,
            "networkRequestTime": 1226.5509996414185,
            "networkEndTime": 1226.8129997253418,
            "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": 1228.1960000991821,
            "networkRequestTime": 1228.1960000991821,
            "networkEndTime": 1228.5190000534058,
            "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": 1231.502999305725,
            "networkRequestTime": 1231.502999305725,
            "networkEndTime": 1232.4559993743896,
            "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": 1237.156000137329,
            "networkRequestTime": 1237.156000137329,
            "networkEndTime": 1237.4789991378784,
            "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": 1240.1129999160767,
            "networkRequestTime": 1240.1129999160767,
            "networkEndTime": 1240.2559995651245,
            "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": 1241.423999786377,
            "networkRequestTime": 1241.423999786377,
            "networkEndTime": 1241.777000427246,
            "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": 1243.3629999160767,
            "networkRequestTime": 1243.3629999160767,
            "networkEndTime": 1243.8929996490479,
            "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": 1248.502999305725,
            "networkRequestTime": 1248.502999305725,
            "networkEndTime": 1248.789999961853,
            "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": 1250.0769996643066,
            "networkRequestTime": 1250.0769996643066,
            "networkEndTime": 1250.3059997558594,
            "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": 1252.440999031067,
            "networkRequestTime": 1252.440999031067,
            "networkEndTime": 1252.8989992141724,
            "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": 1255.1799993515015,
            "networkRequestTime": 1255.1799993515015,
            "networkEndTime": 1255.2999992370605,
            "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": 1256.9260005950928,
            "networkRequestTime": 1256.9260005950928,
            "networkEndTime": 1257.782000541687,
            "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": 1263.248999595642,
            "networkRequestTime": 1263.248999595642,
            "networkEndTime": 1263.5389995574951,
            "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": 1265.831000328064,
            "networkRequestTime": 1265.831000328064,
            "networkEndTime": 1266.0769996643066,
            "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": 1268.3569993972778,
            "networkRequestTime": 1268.3569993972778,
            "networkEndTime": 1268.561999320984,
            "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": 1269.8430004119873,
            "networkRequestTime": 1269.8430004119873,
            "networkEndTime": 1270.0249996185303,
            "finished": true,
            "transferSize": 0,
            "resourceSize": 314,
            "statusCode": 200,
            "mimeType": "text/javascript",
            "resourceType": "Script",
            "priority": "Low",
            "experimentalFromMainFrame": true
          }
        ],
        "debugData": {
          "type": "debugdata",
          "networkStartTimeTs": 5457951948300,
          "initiators": [
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 220,
              "columnNumber": 214
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 220,
              "columnNumber": 356
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 220,
              "columnNumber": 766
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 220,
              "columnNumber": 1215
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 522,
              "columnNumber": 914
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 523,
              "columnNumber": 1515
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 524,
              "columnNumber": 1175
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 530,
              "columnNumber": 1457
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 532,
              "columnNumber": 1182
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 534,
              "columnNumber": 1712
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 536,
              "columnNumber": 1269
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 538,
              "columnNumber": 1295
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 540,
              "columnNumber": 1267
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 542,
              "columnNumber": 1303
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 544,
              "columnNumber": 1263
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 546,
              "columnNumber": 1266
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 548,
              "columnNumber": 1263
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 550,
              "columnNumber": 1415
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 556,
              "columnNumber": 286
            },
            {
              "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://eu.usatoday.com/",
              "lineNumber": 598,
              "columnNumber": 655
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 598,
              "columnNumber": 655
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 598,
              "columnNumber": 655
            },
            {
              "type": "parser",
              "url": "https://eu.usatoday.com/",
              "lineNumber": 598,
              "columnNumber": 655
            }
          ]
        }
      }
    },
    "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": 24.632,
      "numericUnit": "millisecond",
      "displayValue": "20 ms",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "origin",
            "valueType": "text",
            "label": "URL"
          },
          {
            "key": "rtt",
            "valueType": "ms",
            "granularity": 1,
            "label": "Time Spent"
          }
        ],
        "items": [
          {
            "origin": "https://usatoday.com",
            "rtt": 24.632
          },
          {
            "origin": "https://cdn.cookielaw.org",
            "rtt": 16.645
          },
          {
            "origin": "https://eu.usatoday.com",
            "rtt": 1.0322399999999998
          },
          {
            "origin": "https://api.gannett-cdn.com",
            "rtt": 0.8999999999999999
          },
          {
            "origin": "https://atoms.usatoday.com",
            "rtt": 0.8999999999999999
          },
          {
            "origin": "https://www.gannett-cdn.com",
            "rtt": 0.5670000000000002
          },
          {
            "origin": "https://polyfill-fastly.io",
            "rtt": 0.5
          },
          {
            "origin": "https://www.usatoday.com",
            "rtt": 0.45200000000000173
          },
          {
            "origin": "https://cpt-static.gannettdigital.com",
            "rtt": 0.4510000000000005
          }
        ],
        "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": 32.544000000000004,
      "numericUnit": "millisecond",
      "displayValue": "30 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": 32.544000000000004
          },
          {
            "origin": "https://eu.usatoday.com",
            "serverResponseTime": 32.24176
          },
          {
            "origin": "https://cdn.cookielaw.org",
            "serverResponseTime": 15.173
          },
          {
            "origin": "https://api.gannett-cdn.com",
            "serverResponseTime": 7.532000000000002
          },
          {
            "origin": "https://cpt-static.gannettdigital.com",
            "serverResponseTime": 2.458999999999999
          },
          {
            "origin": "https://usatoday.com",
            "serverResponseTime": 1.799000000000003
          },
          {
            "origin": "https://polyfill-fastly.io",
            "serverResponseTime": 1.0769999999999982
          },
          {
            "origin": "https://atoms.usatoday.com",
            "serverResponseTime": 1.0520000000000018
          },
          {
            "origin": "https://www.usatoday.com",
            "serverResponseTime": 0.6869999999999976
          }
        ],
        "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": 14.516,
            "startTime": 156.332
          },
          {
            "duration": 8.582,
            "startTime": 171.588
          },
          {
            "duration": 15.328,
            "startTime": 406.014
          },
          {
            "duration": 7.574,
            "startTime": 455.767
          },
          {
            "duration": 13.969,
            "startTime": 481.5
          },
          {
            "duration": 104.718,
            "startTime": 502.231
          },
          {
            "duration": 8.359,
            "startTime": 608.667
          },
          {
            "duration": 9.111,
            "startTime": 617.382
          },
          {
            "duration": 9.037,
            "startTime": 632.657
          },
          {
            "duration": 43.181,
            "startTime": 652.342
          },
          {
            "duration": 9.787,
            "startTime": 698.823
          },
          {
            "duration": 84.747,
            "startTime": 710.715
          },
          {
            "duration": 33.577,
            "startTime": 826.832
          },
          {
            "duration": 6.247,
            "startTime": 903.434
          },
          {
            "duration": 17.561,
            "startTime": 920.233
          },
          {
            "duration": 11.803,
            "startTime": 938.761
          },
          {
            "duration": 7.706,
            "startTime": 953.313
          },
          {
            "duration": 6.885,
            "startTime": 970.367
          },
          {
            "duration": 6.933,
            "startTime": 986.031
          },
          {
            "duration": 5.769,
            "startTime": 994.348
          },
          {
            "duration": 5.698,
            "startTime": 1001.607
          },
          {
            "duration": 12.34,
            "startTime": 1008.017
          },
          {
            "duration": 10.678,
            "startTime": 1027.457
          },
          {
            "duration": 6.224,
            "startTime": 1053.511
          },
          {
            "duration": 8.693,
            "startTime": 1186.132
          },
          {
            "duration": 9.979,
            "startTime": 1194.863
          },
          {
            "duration": 5.066,
            "startTime": 1230.047
          },
          {
            "duration": 5.735,
            "startTime": 1259.32
          },
          {
            "duration": 5.226,
            "startTime": 1271.391
          },
          {
            "duration": 40.157,
            "startTime": 1293.145
          }
        ]
      }
    },
    "metrics": {
      "id": "metrics",
      "title": "Metrics",
      "description": "Collects all available metrics.",
      "score": 1,
      "scoreDisplayMode": "informative",
      "numericValue": 10162,
      "numericUnit": "millisecond",
      "details": {
        "type": "debugdata",
        "items": [
          {
            "firstContentfulPaint": 4603,
            "largestContentfulPaint": 10064,
            "interactive": 10162,
            "speedIndex": 6052,
            "totalBlockingTime": 551,
            "maxPotentialFID": 419,
            "cumulativeLayoutShift": 0,
            "cumulativeLayoutShiftMainFrame": 0,
            "lcpLoadDelay": 742,
            "lcpLoadDuration": 902,
            "timeToFirstByte": 632,
            "observedTimeOrigin": 0,
            "observedTimeOriginTs": 5457951947281,
            "observedNavigationStart": 0,
            "observedNavigationStartTs": 5457951947281,
            "observedFirstPaint": 2315,
            "observedFirstPaintTs": 5457954262720,
            "observedFirstContentfulPaint": 2315,
            "observedFirstContentfulPaintTs": 5457954262720,
            "observedFirstContentfulPaintAllFrames": 2315,
            "observedFirstContentfulPaintAllFramesTs": 5457954262720,
            "observedLargestContentfulPaint": 2315,
            "observedLargestContentfulPaintTs": 5457954262720,
            "observedLargestContentfulPaintAllFrames": 2315,
            "observedLargestContentfulPaintAllFramesTs": 5457954262720,
            "observedTraceEnd": 4647,
            "observedTraceEndTs": 5457956594256,
            "observedLoad": 795,
            "observedLoadTs": 5457952742181,
            "observedDomContentLoaded": 793,
            "observedDomContentLoadedTs": 5457952740480,
            "observedCumulativeLayoutShift": 0,
            "observedCumulativeLayoutShiftMainFrame": 0,
            "observedFirstVisualChange": 2315,
            "observedFirstVisualChangeTs": 5457954262281,
            "observedLastVisualChange": 2613,
            "observedLastVisualChangeTs": 5457954560281,
            "observedSpeedIndex": 2319,
            "observedSpeedIndexTs": 5457954266129
          },
          {
            "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": 190,
            "transferSize": 2385473
          },
          {
            "resourceType": "image",
            "label": "Image",
            "requestCount": 102,
            "transferSize": 1594712
          },
          {
            "resourceType": "other",
            "label": "Other",
            "requestCount": 69,
            "transferSize": 375594
          },
          {
            "resourceType": "script",
            "label": "Script",
            "requestCount": 14,
            "transferSize": 300209
          },
          {
            "resourceType": "font",
            "label": "Font",
            "requestCount": 4,
            "transferSize": 74364
          },
          {
            "resourceType": "document",
            "label": "Document",
            "requestCount": 1,
            "transferSize": 40594
          },
          {
            "resourceType": "stylesheet",
            "label": "Stylesheet",
            "requestCount": 0,
            "transferSize": 0
          },
          {
            "resourceType": "media",
            "label": "Media",
            "requestCount": 0,
            "transferSize": 0
          },
          {
            "resourceType": "third-party",
            "label": "Third-party",
            "requestCount": 183,
            "transferSize": 2326315
          }
        ]
      }
    },
    "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": null,
      "scoreDisplayMode": "notApplicable",
      "metricSavings": {
        "CLS": 0
      },
      "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": []
      },
      "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": "9 long tasks found",
      "metricSavings": {
        "TBT": 550
      },
      "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": "Unattributable",
            "duration": 419,
            "startTime": 6132.84496
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "duration": 169,
            "startTime": 6560.84496
          },
          {
            "url": "https://eu.usatoday.com/",
            "duration": 86,
            "startTime": 2752.1799600000004
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "duration": 80,
            "startTime": 10760.844959999997
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "duration": 70,
            "startTime": 5062.63896
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "duration": 67,
            "startTime": 6748.84496
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "duration": 61,
            "startTime": 6071.84496
          },
          {
            "url": "Unattributable",
            "duration": 58,
            "startTime": 2660.1799600000004
          },
          {
            "url": "Unattributable",
            "duration": 56,
            "startTime": 824.3420000000001
          }
        ],
        "sortedBy": [
          "duration"
        ],
        "skipSumming": [
          "startTime"
        ],
        "debugData": {
          "type": "debugdata",
          "urls": [
            "Unattributable",
            "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "https://eu.usatoday.com/",
            "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js"
          ],
          "tasks": [
            {
              "urlIndex": 0,
              "startTime": 6132.8,
              "duration": 419,
              "other": 419,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 1,
              "startTime": 6560.8,
              "duration": 169,
              "other": 169,
              "scriptEvaluation": 0,
              "styleLayout": 0
            },
            {
              "urlIndex": 2,
              "startTime": 2752.2,
              "duration": 86,
              "other": 86,
              "styleLayout": 0
            },
            {
              "urlIndex": 3,
              "startTime": 10760.8,
              "duration": 80,
              "other": 80,
              "paintCompositeRender": 0,
              "scriptEvaluation": 0,
              "styleLayout": 0
            },
            {
              "urlIndex": 1,
              "startTime": 5062.6,
              "duration": 70,
              "other": 70,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 4,
              "startTime": 6748.8,
              "duration": 67,
              "other": 67,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 4,
              "startTime": 6071.8,
              "duration": 61,
              "other": 61,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 0,
              "startTime": 2660.2,
              "duration": 58,
              "other": 58,
              "scriptEvaluation": 0
            },
            {
              "urlIndex": 0,
              "startTime": 824.3,
              "duration": 56,
              "other": 56
            }
          ]
        }
      },
      "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/authoring/authoring-images/2026/04/15/USAT/89625363007-image-20260415-t-114438434.jpg?crop=776,437,x0,y307",
            "node": {
              "type": "node",
              "lhId": "1-82-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,PICTURE,4,IMG",
              "selector": "a.p12-container-link > div.section-helper-column > picture.p12-photo > img.p12-photo",
              "boundingRect": {
                "top": 56,
                "bottom": 288,
                "left": 0,
                "right": 412,
                "width": 412,
                "height": 232
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"Dinner on the USS Tripoli: a scoop of meat, 1 tortilla.\" class=\"p12-photo\">",
              "nodeLabel": "Dinner on the USS Tripoli: a scoop of meat, 1 tortilla."
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89640976007-20190211-t-213034-z-278431926-rc-14751-d-8-d-60-rtrmadp-3-virginiapolitics.JPG?crop=4131,2324,x0,y193&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-83-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,1,DIV,0,DIV,0,A,0,PICTURE,5,IMG",
              "selector": "div.hero-slot-two > a.section-helper-flex > picture.section-helper-column > img",
              "boundingRect": {
                "top": 398,
                "bottom": 591,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 193
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\" alt=\"Former Virginia Lt. Gov. Justin Fairfax and wife found dead in home\">",
              "nodeLabel": "Former Virginia Lt. Gov. Justin Fairfax and wife found dead in home"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89633597007-amanda-mc-cracken-1.JPG?crop=2048,1152,x0,y88&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-84-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,1,DIV,1,DIV,0,A,0,PICTURE,5,IMG",
              "selector": "div.hero-slot-three > a.section-helper-flex > picture.section-helper-column > img",
              "boundingRect": {
                "top": 641,
                "bottom": 834,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 193
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"She remained a virgin until 41. She says limerence is to blame.\">",
              "nodeLabel": "She remained a virgin until 41. She says limerence is to blame."
            }
          },
          {
            "url": "https://www.gannett-cdn.com/gannett-web/properties/usatoday/logos-and-branding/logo-default.svg",
            "node": {
              "type": "node",
              "lhId": "1-250-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": 138,
                "width": 78,
                "height": 32
              },
              "snippet": "<img alt=\"USA TODAY\" class=\"expand-icon\" id=\"logo\" src=\"https://www.gannett-cdn.com/gannett-web/properties/usatoday/logos-and-bran…\">",
              "nodeLabel": "USA TODAY"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/gannett-web/properties/usatoday/logos-and-branding/logo-default.svg",
            "node": {
              "type": "node",
              "lhId": "1-251-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": -268,
                "width": 110,
                "height": 45
              },
              "snippet": "<img id=\"sidebarLogo\" class=\"full-height-logo\" alt=\"USA TODAY\" src=\"https://www.gannett-cdn.com/gannett-web/properties/usatoday/logos-and-bran…\">",
              "nodeLabel": "USA TODAY"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642693007-hspd.png?crop=489,490,x0,y7&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-253-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": 1029,
                "bottom": 1134,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 105
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\" class=\"p1-image\" alt=\"FBI's Most Wanted woman captured in Florida\">",
              "nodeLabel": "FBI's Most Wanted woman captured in Florida"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89639564007-pope-leo-latest-comments-trump-feud.JPG?crop=3673,3672,x1650,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-252-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": 908,
                "bottom": 1013,
                "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=\"'Tyrants.' Pope blasts 'those who manipulate religion' as Trump feud escal…\">",
              "nodeLabel": "'Tyrants.' Pope blasts 'those who manipulate religion' as Trump feud escalates"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/01/08/USAT/88081150007-20260106-t-175454-z-1475936040-rc-2-rviawdrlw-rtrmadp-3-usanewyorkmamdani.JPG?crop=3767,3767,x1236,y1&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-254-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": 1150,
                "bottom": 1254,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/01/08/USAT/880…\" class=\"p1-image\" alt=\"Mamdani moves to tax rich for pricey second homes; what to know\">",
              "nodeLabel": "Mamdani moves to tax rich for pricey second homes; what to know"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/03/24/USAT/89300647007-2209256635.jpg?crop=2356,2356,x704,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-255-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": 1270,
                "bottom": 1375,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/24/USAT/893…\" class=\"p1-image\" alt=\"Most actresses don’t want to play this role. Here’s why Amanda Peet did.\">",
              "nodeLabel": "Most actresses don’t want to play this role. Here’s why Amanda Peet did."
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89623451007-rory-mcilroy-18.jpg?crop=1955,1951,x732,y4&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-256-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": 1391,
                "bottom": 1495,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" class=\"p1-image\" alt=\"NBC golf analyst blasts CBS for Masters missteps; Nantz defends\">",
              "nodeLabel": "NBC golf analyst blasts CBS for Masters missteps; Nantz defends"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89640620007-2229139253.jpg?crop=3332,3332,x750,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-257-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": 1511,
                "bottom": 1615,
                "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=\"Dave Chappelle resents that Republicans 'ran on transgender jokes'\">",
              "nodeLabel": "Dave Chappelle resents that Republicans 'ran on transgender jokes'"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89639342007-usatsi-28741028.jpg?crop=2000,1999,x750,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-258-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": 1631,
                "bottom": 1735,
                "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=\"Trader Joe's settlement could pay you $102. See if you're eligible.\">",
              "nodeLabel": "Trader Joe's settlement could pay you $102. See if you're eligible."
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/11/USAT/89569134007-2270257254.jpg?crop=5504,5503,x825,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-259-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": 1751,
                "bottom": 1856,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/11/USAT/895…\" class=\"p1-image\" alt=\"Artemis II crew to make one of 1st public appearances since splashdown\">",
              "nodeLabel": "Artemis II crew to make one of 1st public appearances since splashdown"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89624787007-2267741973.jpg?crop=2801,2799,x699,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-260-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": 1872,
                "bottom": 1976,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" class=\"p1-image\" alt=\"Exclusive: Pentagon ramps up plans for military operation in Cuba\">",
              "nodeLabel": "Exclusive: Pentagon ramps up plans for military operation in Cuba"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89640987007-2270998355.jpg?crop=3332,3332,x906,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-261-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": 1992,
                "bottom": 2097,
                "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=\"Henry Winkler has a soft spot for one 'Happy Days' item especially\">",
              "nodeLabel": "Henry Winkler has a soft spot for one 'Happy Days' item especially"
            }
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89639409007-tesla-new-orleans-molotov-cocktail.jpeg?crop=800,799,x240,y0&quality=50&width=270",
            "node": {
              "type": "node",
              "lhId": "1-262-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": 2113,
                "bottom": 2217,
                "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=\"New Orleans Tesla sales office targeted in attack\">",
              "nodeLabel": "New Orleans Tesla sales office targeted in attack"
            }
          }
        ]
      },
      "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/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.usatoday.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "sourceMapUrl": "https://atoms.usatoday.com/atoms-library/prod/dist/gannett-atoms-library.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": []
            }
          }
        ]
      }
    },
    "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.usatoday.com/",
            "resourceBytes": 27298,
            "encodedBytes": 6236,
            "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://cdn.cookielaw.org/scripttemplates/otSDKStub.js",
            "resourceBytes": 26578,
            "encodedBytes": 8732,
            "unusedBytes": 7572
          },
          {
            "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": 840
          },
          {
            "name": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "resourceBytes": 541506,
            "encodedBytes": 131285,
            "unusedBytes": 312219
          },
          {
            "name": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "resourceBytes": 64968,
            "encodedBytes": 18019,
            "unusedBytes": 15441
          },
          {
            "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://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": 98632,
                    "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,
                        "children": [
                          {
                            "name": "util-lit/util-lit.js",
                            "resourceBytes": 612
                          },
                          {
                            "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
                          },
                          {
                            "name": "util-sticky-module/util-sticky-module.js",
                            "resourceBytes": 641
                          },
                          {
                            "name": "util-user-subscription-manager/util-user-subscription-manager.js",
                            "resourceBytes": 1444,
                            "unusedBytes": 1057
                          }
                        ],
                        "unusedBytes": 4627
                      },
                      {
                        "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,
                        "unusedBytes": 1079,
                        "children": [
                          {
                            "name": "cta-atoms-container-aux/cta-atoms-container-aux.js",
                            "resourceBytes": 206,
                            "unusedBytes": 98
                          },
                          {
                            "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": 306
                          }
                        ]
                      },
                      {
                        "name": "nav",
                        "resourceBytes": 40585,
                        "unusedBytes": 26091,
                        "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": 1426
                          },
                          {
                            "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": 34313,
                        "children": [
                          {
                            "name": "partner-slot/partner-slot.js",
                            "resourceBytes": 22965,
                            "unusedBytes": 9312
                          },
                          {
                            "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": 190
                          },
                          {
                            "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": 140800
              },
              {
                "name": "(unmapped)",
                "resourceBytes": 65
              }
            ],
            "unusedBytes": 140800
          },
          {
            "name": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "resourceBytes": 11823,
            "encodedBytes": 3572,
            "unusedBytes": 4470
          },
          {
            "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://atoms.usatoday.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "resourceBytes": 58540,
            "encodedBytes": 16045,
            "unusedBytes": 39202,
            "children": [
              {
                "name": "webpack:/atoms-library",
                "resourceBytes": 58269,
                "unusedBytes": 39202,
                "children": [
                  {
                    "name": ".",
                    "resourceBytes": 57974,
                    "unusedBytes": 39058,
                    "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": 3368
                          },
                          {
                            "name": "whatwg-fetch/fetch.js",
                            "resourceBytes": 8953,
                            "unusedBytes": 7699
                          },
                          {
                            "name": "polyfill-array-includes/index.js",
                            "resourceBytes": 474,
                            "unusedBytes": 309
                          }
                        ],
                        "unusedBytes": 17668
                      }
                    ]
                  },
                  {
                    "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://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js",
            "resourceBytes": 3075,
            "encodedBytes": 0,
            "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": 177
          },
          {
            "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": 966
          },
          {
            "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": 4166
          },
          {
            "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": 0,
            "unusedBytes": 3142
          },
          {
            "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": 2085
          },
          {
            "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": 1536
          },
          {
            "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": 7197
          },
          {
            "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": 4982
          },
          {
            "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": 8130
          },
          {
            "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": 40160
          },
          {
            "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": 3205
          },
          {
            "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": 12276
          },
          {
            "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": 2495
          },
          {
            "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": 3525
          },
          {
            "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": 11599
          },
          {
            "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": 10418
          },
          {
            "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": 318
          },
          {
            "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": 5870
          },
          {
            "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": 4656
          },
          {
            "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
          }
        ]
      }
    },
    "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,0,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": 2260,
                "bottom": 2280,
                "left": 0,
                "right": 79,
                "width": 79,
                "height": 20
              },
              "snippet": "<h5 class=\"label-news\">",
              "nodeLabel": "News",
              "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,0,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": 2585,
                "bottom": 2654,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-2-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2585,
                "bottom": 2654,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-3-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2585,
                "bottom": 2654,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-4-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2814,
                "bottom": 2883,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-5-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2814,
                "bottom": 2883,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2024/08/12/USAT/747…\">",
              "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,0,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": 2814,
                "bottom": 2883,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-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,2,DIV,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3208,
                "bottom": 3278,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-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,2,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3208,
                "bottom": 3278,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-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,2,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3208,
                "bottom": 3278,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-10-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": 3437,
                "bottom": 3507,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/10/SGLF/895…\">",
              "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,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": 3437,
                "bottom": 3507,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/02/13/PDTF/886…\">",
              "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,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": 3437,
                "bottom": 3507,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-13-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": 3441,
                "bottom": 3503,
                "left": 12,
                "right": 121,
                "width": 109,
                "height": 62
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/24/USAT/892…\">",
              "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,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": 3441,
                "bottom": 3503,
                "left": 129,
                "right": 239,
                "width": 109,
                "height": 62
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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,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": 3441,
                "bottom": 3527,
                "left": 247,
                "right": 400,
                "width": 153,
                "height": 86
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-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,2,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3837,
                "bottom": 3907,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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,2,DIV,4,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3837,
                "bottom": 3907,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-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,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3837,
                "bottom": 3907,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-19-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": 4066,
                "bottom": 4136,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8964379000…\">",
              "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-20-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": 4066,
                "bottom": 4136,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-21-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": 4066,
                "bottom": 4136,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-22-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": 4070,
                "bottom": 4140,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/videoelephant/thumbnails/8923…\">",
              "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-23-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": 4070,
                "bottom": 4140,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-24-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": 4070,
                "bottom": 4140,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-25-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4489,
                "bottom": 4559,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/USAT/894…\">",
              "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-26-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4489,
                "bottom": 4559,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/24/USAT/893…\">",
              "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-27-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4489,
                "bottom": 4559,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/presto/2023/04/07/USAT/a6bfa298-17d3-4c0b-95fa…\">",
              "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-28-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4718,
                "bottom": 4793,
                "left": 12,
                "right": 146,
                "width": 134,
                "height": 75
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-29-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4718,
                "bottom": 4785,
                "left": 154,
                "right": 273,
                "width": 119,
                "height": 67
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/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-30-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4718,
                "bottom": 4785,
                "left": 281,
                "right": 400,
                "width": 119,
                "height": 67
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/11/USAT/895…\">",
              "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-31-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4722,
                "bottom": 4792,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/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-32-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4722,
                "bottom": 4792,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/presto/2023/04/07/USAT/a6bfa298-17d3-4c0b-95fa…\">",
              "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-33-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4722,
                "bottom": 4792,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/08/USAT/895…\">",
              "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-34-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5140,
                "bottom": 5210,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-35-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5140,
                "bottom": 5210,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-36-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5140,
                "bottom": 5210,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-37-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5369,
                "bottom": 5439,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-38-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5369,
                "bottom": 5439,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-39-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5369,
                "bottom": 5439,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-40-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5373,
                "bottom": 5443,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-41-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5373,
                "bottom": 5443,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-42-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5373,
                "bottom": 5443,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/images/motleyfool/2026/01/21/USAT/88…\">",
              "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-43-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 5792,
                "bottom": 5861,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/895…\">",
              "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-44-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 5792,
                "bottom": 5861,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/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-45-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 5792,
                "bottom": 5861,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/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-46-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 6021,
                "bottom": 6090,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/PNAS/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-47-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 6021,
                "bottom": 6090,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/09/USAT/895…\">",
              "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-48-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 6021,
                "bottom": 6090,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/07/USAT/894…\">",
              "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-49-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6439,
                "bottom": 6509,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-50-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6439,
                "bottom": 6509,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/895…\">",
              "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-51-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6439,
                "bottom": 6509,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-52-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6668,
                "bottom": 6738,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/07/USAT/895…\">",
              "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-53-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6668,
                "bottom": 6738,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-54-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6668,
                "bottom": 6738,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/18/USAT/892…\">",
              "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-55-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7063,
                "bottom": 7132,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/06/04/PROC/840…\">",
              "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-56-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7063,
                "bottom": 7132,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/04/10/USAT/830…\">",
              "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-57-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7063,
                "bottom": 7132,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-58-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7292,
                "bottom": 7361,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/08/26/USAT/858…\">",
              "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-59-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7292,
                "bottom": 7361,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/895…\">",
              "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-60-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7292,
                "bottom": 7361,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/09/USAT/895…\">",
              "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-61-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7296,
                "bottom": 7365,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/08/USAT/895…\">",
              "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-62-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7296,
                "bottom": 7365,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/31/USAT/894…\">",
              "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-63-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7296,
                "bottom": 7365,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/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-64-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7692,
                "bottom": 7762,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/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-65-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7692,
                "bottom": 7762,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8964379000…\">",
              "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-66-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7692,
                "bottom": 7762,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-67-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7921,
                "bottom": 7991,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-68-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7921,
                "bottom": 7991,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-69-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7921,
                "bottom": 7991,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/videoelephant/thumbnails/8923…\">",
              "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-70-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7925,
                "bottom": 7995,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-71-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7925,
                "bottom": 7995,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-72-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7925,
                "bottom": 7995,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-73-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8345,
                "bottom": 8415,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-74-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8345,
                "bottom": 8415,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-75-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8345,
                "bottom": 8415,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-76-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8574,
                "bottom": 8644,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-77-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8574,
                "bottom": 8644,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/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-78-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8574,
                "bottom": 8644,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-79-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8578,
                "bottom": 8648,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-80-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8578,
                "bottom": 8648,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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-81-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,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": 8578,
                "bottom": 8648,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/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\""
            }
          }
        ],
        "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": 1,
      "scoreDisplayMode": "informative",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "node",
            "valueType": "node",
            "subItemsHeading": {
              "key": "relatedNode",
              "valueType": "node"
            },
            "label": "Failing Elements"
          }
        ],
        "items": [
          {
            "node": {
              "type": "node",
              "lhId": "1-82-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,PICTURE,4,IMG",
              "selector": "a.p12-container-link > div.section-helper-column > picture.p12-photo > img.p12-photo",
              "boundingRect": {
                "top": 56,
                "bottom": 288,
                "left": 0,
                "right": 412,
                "width": 412,
                "height": 232
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"Dinner on the USS Tripoli: a scoop of meat, 1 tortilla.\" class=\"p12-photo\">",
              "nodeLabel": "Dinner on the USS Tripoli: a scoop of meat, 1 tortilla.",
              "explanation": "Fix all of the following:\n  Element contains <img> element with alt text that duplicates existing text"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-83-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,1,DIV,0,DIV,0,A,0,PICTURE,5,IMG",
              "selector": "div.hero-slot-two > a.section-helper-flex > picture.section-helper-column > img",
              "boundingRect": {
                "top": 398,
                "bottom": 591,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 193
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\" alt=\"Former Virginia Lt. Gov. Justin Fairfax and wife found dead in home\">",
              "nodeLabel": "Former Virginia Lt. Gov. Justin Fairfax and wife found dead in home",
              "explanation": "Fix all of the following:\n  Element contains <img> element with alt text that duplicates existing text"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-84-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,1,DIV,1,DIV,0,A,0,PICTURE,5,IMG",
              "selector": "div.hero-slot-three > a.section-helper-flex > picture.section-helper-column > img",
              "boundingRect": {
                "top": 641,
                "bottom": 834,
                "left": 34,
                "right": 378,
                "width": 343,
                "height": 193
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"She remained a virgin until 41. She says limerence is to blame.\">",
              "nodeLabel": "She remained a virgin until 41. She says limerence is to blame.",
              "explanation": "Fix all of the following:\n  Element contains <img> element with alt text that duplicates existing text"
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "impact": "minor",
          "tags": [
            "cat.text-alternatives",
            "best-practice"
          ]
        }
      }
    },
    "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-85-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 do not 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": 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-86-A",
              "path": "1,HTML,1,BODY,5,FOOTER,1,DIV,1,DIV,1,DIV,0,A",
              "selector": "div#footer > div#footerContainer > div#footerButtons > a#Facebook",
              "boundingRect": {
                "top": 8801,
                "bottom": 8829,
                "left": 26,
                "right": 75,
                "width": 49,
                "height": 28
              },
              "snippet": "<a id=\"Facebook\" href=\"https://www.facebook.com/usatoday\" on-tap=\"trackClick(this)\">",
              "nodeLabel": "div#footer > div#footerContainer > div#footerButtons > a#Facebook",
              "explanation": "Fix all of the following:\n  Element is in tab order and does not have accessible text\n\nFix any of the following:\n  Element does not have text that is visible to screen readers\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"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-87-A",
              "path": "1,HTML,1,BODY,5,FOOTER,1,DIV,1,DIV,1,DIV,1,A",
              "selector": "div#footer > div#footerContainer > div#footerButtons > a#Twitter",
              "boundingRect": {
                "top": 8801,
                "bottom": 8829,
                "left": 75,
                "right": 124,
                "width": 49,
                "height": 28
              },
              "snippet": "<a id=\"Twitter\" href=\"https://www.twitter.com/usatoday\" on-tap=\"trackClick(this)\">",
              "nodeLabel": "div#footer > div#footerContainer > div#footerButtons > a#Twitter",
              "explanation": "Fix all of the following:\n  Element is in tab order and does not have accessible text\n\nFix any of the following:\n  Element does not have text that is visible to screen readers\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"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-88-A",
              "path": "1,HTML,1,BODY,5,FOOTER,1,DIV,1,DIV,1,DIV,2,A",
              "selector": "div#footer > div#footerContainer > div#footerButtons > a#Snapchat",
              "boundingRect": {
                "top": 8801,
                "bottom": 8829,
                "left": 124,
                "right": 173,
                "width": 49,
                "height": 28
              },
              "snippet": "<a id=\"Snapchat\" href=\"https://go.snapchat.com/add/usatoday\" on-tap=\"trackClick(this)\">",
              "nodeLabel": "div#footer > div#footerContainer > div#footerButtons > a#Snapchat",
              "explanation": "Fix all of the following:\n  Element is in tab order and does not have accessible text\n\nFix any of the following:\n  Element does not have text that is visible to screen readers\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"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-89-A",
              "path": "1,HTML,1,BODY,5,FOOTER,1,DIV,1,DIV,1,DIV,4,A",
              "selector": "div#footer > div#footerContainer > div#footerButtons > a#Linkedin",
              "boundingRect": {
                "top": 8801,
                "bottom": 8829,
                "left": 222,
                "right": 271,
                "width": 49,
                "height": 28
              },
              "snippet": "<a id=\"Linkedin\" href=\"http://www.linkedin.com/company/usa-today\" on-tap=\"trackClick(this)\">",
              "nodeLabel": "div#footer > div#footerContainer > div#footerButtons > a#Linkedin",
              "explanation": "Fix all of the following:\n  Element is in tab order and does not have accessible text\n\nFix any of the following:\n  Element does not have text that is visible to screen readers\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"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-90-A",
              "path": "1,HTML,1,BODY,5,FOOTER,1,DIV,1,DIV,1,DIV,5,A",
              "selector": "div#footer > div#footerContainer > div#footerButtons > a#Pinterest",
              "boundingRect": {
                "top": 8801,
                "bottom": 8829,
                "left": 271,
                "right": 295,
                "width": 24,
                "height": 28
              },
              "snippet": "<a id=\"Pinterest\" href=\"https://www.pinterest.com/usatoday/\" on-tap=\"trackClick(this)\">",
              "nodeLabel": "div#footer > div#footerContainer > div#footerButtons > a#Pinterest",
              "explanation": "Fix all of the following:\n  Element is in tab order and does not have accessible text\n\nFix any of the following:\n  Element does not have text that is visible to screen readers\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"
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "impact": "serious",
          "tags": [
            "cat.name-role-value",
            "wcag2a",
            "wcag244",
            "wcag412",
            "section508",
            "section508.22.a",
            "TTv5",
            "TT6.a",
            "EN-301-549",
            "EN-9.2.4.4",
            "EN-9.4.1.2",
            "ACT",
            "RGAAv4",
            "RGAA-6.2.1"
          ]
        }
      }
    },
    "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-91-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": 2385473,
      "numericUnit": "byte",
      "displayValue": "Total size was 2,330 KiB",
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "totalBytes",
            "valueType": "bytes",
            "label": "Transfer Size"
          }
        ],
        "items": [
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89641451007-collage.png?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 138964
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "totalBytes": 131432
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642693007-hspd.png?crop=489,490,x0,y7&quality=50&width=270",
            "totalBytes": 124690
          },
          {
            "url": "https://www.gannett-cdn.com/presto/2023/04/07/USAT/a6bfa298-17d3-4c0b-95fa-bd4b06f2205b-Screen_Shot_2023-04-07_at_7.50.57_AM.png?crop=1440,810,x59,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 119350
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642693007-hspd.png?crop=489,275,x0,y126&width=384&quality=50&crop=16%3A9",
            "totalBytes": 118239
          },
          {
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642991007-val-kilmer.png?crop=1482,833,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 98844
          },
          {
            "url": "https://cdn.cookielaw.org/vendorlist/iab2V2Data.json",
            "totalBytes": 88969
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "totalBytes": 84378
          },
          {
            "url": "https://cdn.cookielaw.org/consent/5eaec3d6-175d-498f-a6a7-ec66eb9b9673/019c9ea5-4e14-78f7-b0c9-51d04d1fbc99/en.json",
            "totalBytes": 59659
          },
          {
            "url": "https://eu.usatoday.com/",
            "totalBytes": 40594
          }
        ],
        "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 284 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,(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": "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,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,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,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,(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,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,(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": 290619,
        "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": 290,
      "numericUnit": "millisecond",
      "displayValue": "Est savings of 147 KiB",
      "metricSavings": {
        "FCP": 150,
        "LCP": 300
      },
      "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": 75695,
            "wastedPercent": 57.6575328805221
          },
          {
            "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": 40160,
            "wastedPercent": 39.77655401925439
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "totalBytes": 83689,
            "wastedBytes": 35115,
            "wastedPercent": 41.95833370583274,
            "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": 2322
                },
                {
                  "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
                }
              ]
            }
          }
        ],
        "overallSavingsMs": 290,
        "overallSavingsBytes": 150970,
        "sortedBy": [
          "wastedBytes"
        ],
        "debugData": {
          "type": "debugdata",
          "metricSavings": {
            "FCP": 150,
            "LCP": 290
          }
        }
      },
      "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-135-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 2821,
                "bottom": 2849,
                "left": 129,
                "right": 283,
                "width": 155,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more News"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-147-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": 3448,
                "bottom": 3476,
                "left": 124,
                "right": 288,
                "width": 164,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Sports"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-159-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": 4077,
                "bottom": 4105,
                "left": 93,
                "right": 319,
                "width": 225,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Entertainment"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-171-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 4729,
                "bottom": 4757,
                "left": 135,
                "right": 277,
                "width": 141,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Life"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-183-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 5380,
                "bottom": 5408,
                "left": 124,
                "right": 288,
                "width": 165,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Money"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-192-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 6028,
                "bottom": 6056,
                "left": 132,
                "right": 280,
                "width": 149,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Tech"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-201-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 6675,
                "bottom": 6703,
                "left": 126,
                "right": 286,
                "width": 160,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Travel"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-213-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 7303,
                "bottom": 7331,
                "left": 119,
                "right": 293,
                "width": 173,
                "height": 28
              },
              "snippet": "<a class=\"show-more-link \">",
              "nodeLabel": "Show more Opinion"
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "1-225-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 7932,
                "bottom": 7960,
                "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-237-A",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,12,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,2,DIV,0,A",
              "selector": "div#container > div#showMoreContent > a.show-more-link",
              "boundingRect": {
                "top": 8585,
                "bottom": 8613,
                "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 232 KiB",
      "metricSavings": {
        "FCP": 600,
        "LCP": 1300
      },
      "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://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 84378,
            "wastedBytes": 67502.40000000001
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otBannerSdk.js",
            "cacheLifetimeMs": 86400000,
            "totalBytes": 131432,
            "wastedBytes": 52572.8
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 21256,
            "wastedBytes": 17004.8
          },
          {
            "url": "https://atoms.usatoday.com/atoms-library/prod/dist/gannett-atoms-library.js",
            "cacheLifetimeMs": 900000,
            "totalBytes": 16451,
            "wastedBytes": 14703.081250000001
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 18248,
            "wastedBytes": 14598.400000000001
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 18065,
            "wastedBytes": 14452
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 17851,
            "wastedBytes": 14280.800000000001
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 16795,
            "wastedBytes": 13436
          },
          {
            "url": "https://cdn.cookielaw.org/scripttemplates/202601.2.0/otTCF.js",
            "cacheLifetimeMs": 86400000,
            "totalBytes": 18176,
            "wastedBytes": 7270.400000000001
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 5545,
            "wastedBytes": 4436
          },
          {
            "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": 9293,
            "wastedBytes": 3717.2000000000003
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-hi.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 3818,
            "wastedBytes": 3054.4
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 3755,
            "wastedBytes": 3004
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/webcomponents-loader.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 1693,
            "wastedBytes": 1354.4
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/shadycss/custom-style-interface.min.js",
            "cacheLifetimeMs": 3600000,
            "totalBytes": 1535,
            "wastedBytes": 1228
          },
          {
            "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": 237392.48124999995
        }
      },
      "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": 1,
      "scoreDisplayMode": "numeric",
      "metricSavings": {
        "CLS": 0
      },
      "details": {
        "type": "list",
        "items": []
      },
      "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 120 ms",
      "metricSavings": {
        "FCP": 100,
        "LCP": 100
      },
      "details": {
        "type": "checklist",
        "items": {
          "noRedirects": {
            "label": "Had redirects (2 redirects, +116 ms)",
            "value": false
          },
          "serverResponseIsFast": {
            "label": "Server responds quickly (observed 33 ms)",
            "value": true
          },
          "usesCompression": {
            "label": "Applies text compression",
            "value": true
          }
        },
        "debugData": {
          "type": "debugdata",
          "redirectDuration": 116,
          "serverResponseTime": 33,
          "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": 1803,
      "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": 1803
            }
          },
          {
            "statistic": "DOM depth",
            "node": {
              "type": "node",
              "lhId": "page-33-path",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,PROMO-STORY-BUCKET-SHORT,a,#document-fragment,2,DIV,1,DIV,4,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": 2887,
                "bottom": 2903,
                "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-32-DIV",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,1,DIV,0,DIV",
              "selector": "div.primary > div.content-well > div#content > div#section-stories",
              "boundingRect": {
                "top": 900,
                "bottom": 2225,
                "left": 0,
                "right": 412,
                "width": 412,
                "height": 1325
              },
              "snippet": "<div id=\"section-stories\" class=\"row\">",
              "nodeLabel": "'Tyrants.' Pope blasts 'those who manipulate religion' as Trump feud escalates\n…"
            },
            "value": {
              "type": "numeric",
              "granularity": 1,
              "value": 17
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "totalElements": 1803,
          "maxChildren": 17,
          "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": 1,
      "scoreDisplayMode": "metricSavings",
      "metricSavings": {
        "INP": 0
      },
      "details": {
        "type": "table",
        "headings": [
          {
            "key": "url",
            "valueType": "url",
            "label": "URL"
          },
          {
            "key": "wastedMs",
            "valueType": "ms",
            "label": "Est Savings"
          }
        ],
        "items": [],
        "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,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "Est savings of 670 KiB",
      "metricSavings": {
        "FCP": 0,
        "LCP": 200
      },
      "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-0-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": 1029,
                "bottom": 1134,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 105
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\" class=\"p1-image\" alt=\"FBI's Most Wanted woman captured in Florida\">",
              "nodeLabel": "FBI's Most Wanted woman captured in Florida"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642693007-hspd.png?crop=489,490,x0,y7&quality=50&width=270",
            "totalBytes": 124051,
            "wastedBytes": 122227,
            "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": 111856
                },
                {
                  "reason": "This image file is larger than it needs to be (270x271) for its displayed dimensions (104x105). Use responsive images to reduce the image download size.",
                  "wastedBytes": 105493
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-1-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4489,
                "bottom": 4559,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/presto/2023/04/07/USAT/a6bfa298-17d3-4c0b-95fa…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/presto/2023/04/07/USAT/a6bfa298-17d3-4c0b-95fa-bd4b06f2205b-Screen_Shot_2023-04-07_at_7.50.57_AM.png?crop=1440,810,x59,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 119037,
            "wastedBytes": 117596,
            "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": 105213
                },
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 106624
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-2-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2585,
                "bottom": 2654,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642693007-hspd.png?crop=489,275,x0,y126&width=384&quality=50&crop=16%3A9",
            "totalBytes": 117925,
            "wastedBytes": 116484,
            "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": 104101
                },
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 105628
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-3-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": 3837,
                "bottom": 3907,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642991007-val-kilmer.png?crop=1482,833,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 98542,
            "wastedBytes": 97101,
            "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": 84718
                },
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 88267
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-4-IMG",
              "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,PICTURE,4,IMG",
              "selector": "a.p12-container-link > div.section-helper-column > picture.p12-photo > img.p12-photo",
              "boundingRect": {
                "top": 56,
                "bottom": 288,
                "left": 0,
                "right": 412,
                "width": 412,
                "height": 232
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"Dinner on the USS Tripoli: a scoop of meat, 1 tortilla.\" class=\"p12-photo\">",
              "nodeLabel": "Dinner on the USS Tripoli: a scoop of meat, 1 tortilla."
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89625363007-image-20260415-t-114438434.jpg?crop=776,437,x0,y307",
            "totalBytes": 24414,
            "wastedBytes": 17533,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (776x437) for its displayed dimensions (412x232). Use responsive images to reduce the image download size.",
                  "wastedBytes": 17533
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-5-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": 3837,
                "bottom": 3907,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89643748007-sf-good-guys-online-teaser-one-sheet-2025-x-3000-041526.jpg?crop=1974,1110,x1,y30&width=384&quality=50&crop=16%3A9",
            "totalBytes": 16111,
            "wastedBytes": 14670,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 14431
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-6-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": 1872,
                "bottom": 1976,
                "left": 273,
                "right": 378,
                "width": 104,
                "height": 104
              },
              "snippet": "<img srcset=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" class=\"p1-image\" alt=\"Exclusive: Pentagon ramps up plans for military operation in Cuba\">",
              "nodeLabel": "Exclusive: Pentagon ramps up plans for military operation in Cuba"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89624787007-2267741973.jpg?crop=2801,2799,x699,y0&quality=50&width=270",
            "totalBytes": 15205,
            "wastedBytes": 13387,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (270x270) for its displayed dimensions (104x104). Use responsive images to reduce the image download size.",
                  "wastedBytes": 12930
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-7-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7063,
                "bottom": 7132,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/04/10/USAT/830…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/04/10/USAT/83028897007-getty-images-1973410818.jpg?crop=2119,1192,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 11598,
            "wastedBytes": 10389,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 10389
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-8-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6439,
                "bottom": 6509,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/895…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/89596917007-usatsi-19687785.jpg?crop=3544,1995,x0,y216&width=384&quality=50&crop=16%3A9",
            "totalBytes": 11463,
            "wastedBytes": 10268,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 10268
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-9-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 5792,
                "bottom": 5861,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/895…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/13/USAT/89592945007-pghe-0338-family-phone-safety-kids-teens.jpg?crop=1918,1078,x0,y2&width=384&quality=50&crop=16%3A9",
            "totalBytes": 11145,
            "wastedBytes": 9983,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 9983
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-10-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4489,
                "bottom": 4559,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/USAT/894…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/06/USAT/89489993007-phat-4687.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 11120,
            "wastedBytes": 9960,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 9960
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-11-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5140,
                "bottom": 5210,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89643707007-2202158353.jpg?crop=5768,3245,x0,y377&width=384&quality=50&crop=16%3A9",
            "totalBytes": 11035,
            "wastedBytes": 9884,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 9884
                }
              ]
            }
          },
          {
            "node": {
              "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,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": 3208,
                "bottom": 3278,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89633468007-usatsi-27652032.jpg?crop=5118,2880,x0,y511&width=384&quality=50&crop=16%3A9",
            "totalBytes": 10709,
            "wastedBytes": 9592,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 9592
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-13-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7063,
                "bottom": 7132,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89622452007-2269960577.jpg?crop=4885,2748,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 10352,
            "wastedBytes": 9273,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 9273
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-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,2,DIV,6,LIT-STORY-CARD,a,#document-fragment,1,A,0,DIV,0,IMG",
              "selector": "a.container-link > div.container > img",
              "boundingRect": {
                "top": 3837,
                "bottom": 3907,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644586007-buckets.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 10326,
            "wastedBytes": 9249,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 9249
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-15-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6439,
                "bottom": 6509,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89631768007-20260410-t-063245-z-35847140-rc-26-mka-41-ghm-rtrmadp-3-lufthansastrike.JPG?crop=5494,3093,x0,y282&width=384&quality=50&crop=16%3A9",
            "totalBytes": 9511,
            "wastedBytes": 8519,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 8519
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-16-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,9,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": 7063,
                "bottom": 7132,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2025/06/04/PROC/840…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2025/06/04/PROC/84035623007-roc-56-k-0-l-0-jvyk-746-b-35-lc-1-original.jpg?crop=3241,1822,x3,y736&width=384&quality=50&crop=16%3A9",
            "totalBytes": 9241,
            "wastedBytes": 8277,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 8277
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-17-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 5792,
                "bottom": 5861,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/89607114007-dscf-0474.JPG?crop=3839,2161,x0,y199&width=384&quality=50&crop=16%3A9",
            "totalBytes": 9202,
            "wastedBytes": 8242,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 8242
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-18-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,6,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": 5792,
                "bottom": 5861,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/89606236007-apple-maps-google-maps-house-blur-2.jpg?crop=1534,864,x0,y412&width=384&quality=50&crop=16%3A9",
            "totalBytes": 9132,
            "wastedBytes": 8180,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 8180
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-19-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2585,
                "bottom": 2654,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644129007-20260416-t-144559-z-1683443225-rc-2-eqkamykc-0-rtrmadp-3-popeafricacameroonbamenda.JPG?crop=2079,1170,x0,y69&width=384&quality=50&crop=16%3A9",
            "totalBytes": 8981,
            "wastedBytes": 8045,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 8045
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-20-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7692,
                "bottom": 7762,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/14/USAT/89601229007-usatsi-28723374.jpg?crop=3551,1998,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 8787,
            "wastedBytes": 7871,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 7871
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-21-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5140,
                "bottom": 5210,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89641257007-usatsi-24248715-168410240-lowres.jpg?crop=2591,1459,x0,y134&width=384&quality=50&crop=16%3A9",
            "totalBytes": 8267,
            "wastedBytes": 7405,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 7405
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-22-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,0,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": 2585,
                "bottom": 2654,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89643772007-trnd-corpse-flower-blooms-after-3-years-thumb.jpg?crop=1919,1079,x0,y0&width=384&quality=50&crop=16%3A9",
            "totalBytes": 8131,
            "wastedBytes": 7283,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 7283
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-23-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7692,
                "bottom": 7762,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/89632537007-usatsi-27136809.jpg?crop=8639,4860,x0,y576&width=384&quality=50&crop=16%3A9",
            "totalBytes": 8090,
            "wastedBytes": 7246,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 7246
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-24-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,8,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": 6439,
                "bottom": 6509,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644858007-20260416-t-062514-z-1977052121-rc-25-qkabph-8-m-rtrmadp-3-easyjetoutlook.JPG?crop=2419,1361,x0,y272&width=384&quality=50&crop=16%3A9",
            "totalBytes": 7939,
            "wastedBytes": 7111,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 7111
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-25-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,4,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": 4489,
                "bottom": 4559,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/03/24/USAT/893…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/03/24/USAT/89300647007-2209256635.jpg?crop=3530,1987,x0,y29&width=384&quality=50&crop=16%3A9",
            "totalBytes": 7902,
            "wastedBytes": 7078,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 7078
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-26-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,11,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": 7692,
                "bottom": 7762,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/8964379000…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/videos/stringr/thumbnails/89643790007.jpg?width=384&quality=50&crop=16%3A9",
            "totalBytes": 6718,
            "wastedBytes": 6017,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 6017
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-27-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": 3208,
                "bottom": 3278,
                "left": 276,
                "right": 400,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89634910007-usatsi-28521730.jpg?crop=5327,2997,x410,y144&width=384&quality=50&crop=16%3A9",
            "totalBytes": 6682,
            "wastedBytes": 5985,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 5985
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-28-IMG",
              "path": "1,HTML,1,BODY,4,SECTION,0,DIV,0,DIV,2,DIV,5,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": 5140,
                "bottom": 5210,
                "left": 144,
                "right": 268,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89642984007-2270874554.jpg?crop=3928,2211,x0,y204&width=384&quality=50&crop=16%3A9",
            "totalBytes": 6471,
            "wastedBytes": 5796,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 5796
                }
              ]
            }
          },
          {
            "node": {
              "type": "node",
              "lhId": "page-29-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": 3208,
                "bottom": 3278,
                "left": 12,
                "right": 136,
                "width": 124,
                "height": 70
              },
              "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/896…\">",
              "nodeLabel": "a.container-link > div.container > img"
            },
            "url": "https://www.gannett-cdn.com/authoring/authoring-images/2026/04/16/USAT/89644263007-byeong-hun-an.jpg?crop=3681,2072,x0,y187&width=384&quality=50&crop=16%3A9",
            "totalBytes": 6413,
            "wastedBytes": 5744,
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "reason": "This image file is larger than it needs to be (384x216) for its displayed dimensions (124x70). Use responsive images to reduce the image download size.",
                  "wastedBytes": 5744
                }
              ]
            }
          }
        ],
        "debugData": {
          "type": "debugdata",
          "wastedBytes": 686395
        }
      },
      "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": 151.81
              },
              {
                "subpart": "resourceLoadDelay",
                "label": "Resource load delay",
                "duration": 16.353
              },
              {
                "subpart": "resourceLoadDuration",
                "label": "Resource load duration",
                "duration": 39.352
              },
              {
                "subpart": "elementRenderDelay",
                "label": "Element render delay",
                "duration": 2107.924
              }
            ]
          },
          {
            "type": "node",
            "lhId": "page-4-IMG",
            "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,PICTURE,4,IMG",
            "selector": "a.p12-container-link > div.section-helper-column > picture.p12-photo > img.p12-photo",
            "boundingRect": {
              "top": 56,
              "bottom": 288,
              "left": 0,
              "right": 412,
              "width": 412,
              "height": 232
            },
            "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"Dinner on the USS Tripoli: a scoop of meat, 1 tortilla.\" class=\"p12-photo\">",
            "nodeLabel": "Dinner on the USS Tripoli: a scoop of meat, 1 tortilla."
          }
        ]
      },
      "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": 0,
      "scoreDisplayMode": "numeric",
      "metricSavings": {
        "LCP": 0
      },
      "details": {
        "type": "list",
        "items": [
          {
            "type": "checklist",
            "items": {
              "priorityHinted": {
                "label": "fetchpriority=high should be applied",
                "value": false
              },
              "requestDiscoverable": {
                "label": "Request is discoverable in initial document",
                "value": true
              },
              "eagerlyLoaded": {
                "label": "lazy load not applied",
                "value": true
              }
            }
          },
          {
            "type": "node",
            "lhId": "page-4-IMG",
            "path": "1,HTML,1,BODY,3,HEADER,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,PICTURE,4,IMG",
            "selector": "a.p12-container-link > div.section-helper-column > picture.p12-photo > img.p12-photo",
            "boundingRect": {
              "top": 56,
              "bottom": 288,
              "left": 0,
              "right": 412,
              "width": 412,
              "height": 232
            },
            "snippet": "<img src=\"https://www.gannett-cdn.com/authoring/authoring-images/2026/04/15/USAT/896…\" alt=\"Dinner on the USS Tripoli: a scoop of meat, 1 tortilla.\" class=\"p12-photo\">",
            "nodeLabel": "Dinner on the USS Tripoli: a scoop of meat, 1 tortilla."
          }
        ]
      },
      "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": {
                "A6A535892288C7C419D402BEB8550105": {
                  "url": "https://eu.usatoday.com/",
                  "navStartToEndTime": 181,
                  "transferSize": 40594,
                  "isLongest": true,
                  "children": {
                    "A6A535892288C7C419D402BEB8550105": {
                      "url": "https://eu.usatoday.com/",
                      "navStartToEndTime": 181,
                      "transferSize": 40594,
                      "isLongest": true,
                      "children": {
                        "A6A535892288C7C419D402BEB8550105": {
                          "url": "https://eu.usatoday.com/",
                          "navStartToEndTime": 181,
                          "transferSize": 40594,
                          "isLongest": true,
                          "children": {
                            "1093899.3": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/gallium.js",
                              "navStartToEndTime": 206,
                              "transferSize": 3755,
                              "isLongest": true,
                              "children": {
                                "1093899.57": {
                                  "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/utils.js",
                                  "navStartToEndTime": 641,
                                  "transferSize": 5545,
                                  "isLongest": true,
                                  "children": {
                                    "1093899.85": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/sports_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 1026,
                                      "transferSize": 3768,
                                      "isLongest": true,
                                      "children": {}
                                    },
                                    "1093899.95": {
                                      "url": "https://api.gannett-cdn.com/thorium/breaking-news/?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&site-code=USAT",
                                      "navStartToEndTime": 891,
                                      "transferSize": 256,
                                      "children": {}
                                    },
                                    "1093899.89": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/tech_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 888,
                                      "transferSize": 2897,
                                      "children": {}
                                    },
                                    "1093899.90": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/travel_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 886,
                                      "transferSize": 3241,
                                      "children": {}
                                    },
                                    "1093899.91": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/opinion_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 885,
                                      "transferSize": 3702,
                                      "children": {}
                                    },
                                    "1093899.88": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/money_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 884,
                                      "transferSize": 3177,
                                      "children": {}
                                    },
                                    "1093899.84": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/news_nation_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 883,
                                      "transferSize": 2983,
                                      "children": {}
                                    },
                                    "1093899.82": {
                                      "url": "https://api.gannett-cdn.com/thorium/popular/USAT/10?apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz&searchtype=socialReferrals",
                                      "navStartToEndTime": 882,
                                      "transferSize": 1114,
                                      "children": {}
                                    },
                                    "1093899.86": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/entertainment_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 881,
                                      "transferSize": 3108,
                                      "children": {}
                                    },
                                    "1093899.87": {
                                      "url": "https://api.gannett-cdn.com/thorium/section/promo/USAT/life_mobile?site-code=USAT&count=10&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 876,
                                      "transferSize": 3055,
                                      "children": {}
                                    },
                                    "1093899.93": {
                                      "url": "https://api.gannett-cdn.com/thorium/popular/USAT/10?assettype=gallery&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 875,
                                      "transferSize": 3469,
                                      "children": {}
                                    },
                                    "1093899.92": {
                                      "url": "https://api.gannett-cdn.com/thorium/popular/USAT/10?assettype=video&searchtype=pageViews&ssts=home&apiKey=TGgXAxAcR3ktiGl6cRsHSGsLS6ySi6yz",
                                      "navStartToEndTime": 875,
                                      "transferSize": 3366,
                                      "children": {}
                                    },
                                    "1093899.83": {
                                      "url": "https://api.gannett-cdn.com/argon/navreimagined/usat/top_nav_primary/?apiKey=f6YYPA1hPnB9Y9chky5GOmrZKmaguLVh",
                                      "navStartToEndTime": 874,
                                      "transferSize": 7485,
                                      "children": {}
                                    },
                                    "1093899.94": {
                                      "url": "https://user.usatoday.com/USAT-GUP/user/",
                                      "navStartToEndTime": 824,
                                      "transferSize": 0,
                                      "children": {}
                                    }
                                  }
                                },
                                "1093899.56": {
                                  "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/scripts/partner.js",
                                  "navStartToEndTime": 642,
                                  "transferSize": 17851,
                                  "children": {}
                                }
                              }
                            },
                            "1093899.72": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_SBd.woff2",
                              "navStartToEndTime": 710,
                              "transferSize": 18065,
                              "children": {}
                            },
                            "1093899.70": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Rg.woff2",
                              "navStartToEndTime": 709,
                              "transferSize": 16795,
                              "children": {}
                            },
                            "1093899.76": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySerif_W_Rg.woff2",
                              "navStartToEndTime": 709,
                              "transferSize": 21256,
                              "children": {}
                            },
                            "1093899.74": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/gallium/themes/assets/universal/fonts/UnifySans_W_Bd.woff2",
                              "navStartToEndTime": 708,
                              "transferSize": 18248,
                              "children": {}
                            },
                            "1093899.2": {
                              "url": "https://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
                              "navStartToEndTime": 606,
                              "transferSize": 354,
                              "children": {}
                            },
                            "1093899.5": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/core/bundles/section.js",
                              "navStartToEndTime": 221,
                              "transferSize": 84378,
                              "children": {}
                            },
                            "1093899.4": {
                              "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
                              "navStartToEndTime": 206,
                              "transferSize": 1108,
                              "children": {}
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "longestChain": {
                "duration": 1026
              }
            }
          },
          {
            "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-30-LINK",
                    "path": "1,HTML,0,HEAD,14,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://cdn.cookielaw.org",
                  "wastedMs": 138.676
                }
              ]
            }
          }
        ]
      },
      "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,
      "scoreDisplayMode": "metricSavings",
      "displayValue": "Est savings of 150 ms",
      "metricSavings": {
        "FCP": 150,
        "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://polyfill-fastly.io/v2/polyfill.min.js?features=default,fetch,Array.prototype.find,IntersectionObserver,IntersectionObserverEntry,Intl,Intl.~locale.en-US",
            "totalBytes": 354,
            "wastedMs": 752
          },
          {
            "url": "https://cpt-static.gannettdigital.com/universal-web-client/master/latest/vendor/components/webcomponentsjs/custom-elements-es5-adapter.js",
            "totalBytes": 1108
          }
        ]
      },
      "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-31-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.47
    },
    "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.89
    },
    "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.92
    },
    "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": "usatoday.com",
      "origins": [
        "https://usatoday.com",
        "https://www.usatoday.com",
        "https://eu.usatoday.com",
        "https://user.usatoday.com",
        "https://atoms.usatoday.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"
    }
  ],
  "fullPageScreenshot": {
    "screenshot": {
      "data": "data:image/webp;base64,UklGRibnAwBXRUJQVlA4WAoAAAAgAAAAmwEAuiIASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZWUDggOOUDAPAuEp0BKpwBuyI/EX62VSw9P7qm8+u78CIJZW7cb7WOMAvSyOm//8cyNKqssvVOsL8R/d8nnGaV07Dvj87/y+Sf2U6c3/e7Pf/Q9HXyr+dG1Z/pnPaafHtnHM6x/096jHP3j/T6O3IfG90ss03qnPj+C713/i9iv9b9G3y7vZl/dvSf+5/7me756mv7n6J/pVetd/lfVx86D1q/9V6a+oTfIf81/i/7v/kP9T/hf3U+s/y3+C/03+L/0P+8/vX7x+3vne+o/xP7zf533Qv+D/T+XPsD/x/7P/e+yX9C/Jn8T/Ff6D9ovmj/bf9n/Mf6j9x/V35rf8f+g/1v7e/Id+g/1b/kf3b/Lf//4R/xP+5/m/93+3Hnwbn/zf/F/sv9X7iPuR9x/8X+X/2H7ie/x9b/0/8l/pP2l+M/17/Q/9r/Lf6v9vvsC/o/93/7/+R9tv+l/+P9h+//rK/k/+d+3vwD/1T/S//L/V+7n/nf/j/cf8L1i/rn/D/b/4D/6p/kf2r9f////Dn9+f/////i2N5E+sZUttpKQjrBWTVXPPeUyrnnvKZVzvAD0uz7NF4v57acHFHgbkSxviLVP4Y7VICq+xf1cH57q4Aguz9SWi+fVwokhFGHpgjIsR/8YvSFvCBxbBtpm96kLFe1A7LJzv1xBU4QqcIVOEKnByRZi01ftLhvJWrR38wR+aDVA2uIoajqpUfWx+I8JPUJ/+aDVF7wrlMDzOE3090Lvz/8yzAvWdf0CLT2aQjXGATa1oWN20kx4vw2duCqB+1vgLif2jLH7t3qd6h1r/RKhPe1O7s1rkQJUeCoYvmkWYUbWj/ZtovITxjJ98k8X2URWg6wVJ8Hftx+X1rMlybQd43sM5zDHSBYAM+v/wPxfeShytSVcoJzDR848U04U6WtNX7paX/xItel2fBS5rCBl7eK1+nzFiswxp6OH5b7iPEfw5ykauYoprqJTsNk/JrAYECXAhXCFMpVzv0wokhDCc/IjUA+Usgb1+NvIWvUe9bhs7QYbRYb2KGnAZpddX+8rAKNf8IJ8oL3qbu3nDieQQhggcZjtjXzs+GN8T8DB4pyhlC30Po3mdtty40TCsIFGx3QgurriYweCWL1L7agFKMC9/H1/TUFr77pRxgYqNoXFeq4MaWtE5ecu67fuoSW2CCwLHRo3QaPxKkgWgz9OWPW7iJiAW2sMdUXdjro/4IHCBvL2SqNtl1voarlI+4kK+bsalBX0KUTL24JAhk4Os5zrrmxAZWzOV6bVDPePKBwnll37E9lZZ1PxiFn31+AESnsQqmMfcxqTPro8Dn7g91CcNlIAROEnCJqt23DFi/M2QNrml+HGY4gORBbkxlGgPRJE2oPT7RgVznq95lcOUnANjw8jzYRt0M4FbvN5pzRZ80XPgseFiB7mjTW1Kk5e7NpG+hAAYRwC/YLgIAjSbQnNYFOfS+PMTh9FjUl3OXLI3iXkF2+5cMBpuEj0TKeM4h09ivZ7kxOl6oybqXcHF6qxI3lKAg2V0t1YfhYzh7h2jbdGjOOqP1HOwf+ERDocBqMODUUw3tdvAfcE0VnJDeb5m8SyAHiBQ2zT7quGMNnZ9JLphlcZP+wCiv4DH0857syktdfQ8WVid0ZDsv4XGdwtiVUAPYQ2nEa6+vUkF7O3iAX95g8x/paB355adWF89P+wJS4Aq/OZXsDU1BFSSIPr34gD1xJwtMFQDmef3wqKa7aSQv2QUIwynWNwEhCDyOy9/XAukrcbHYi2GY+2EWmxfBhzGwF1e+guruJiTkA3qWRVBILVS3qyuZCy1140T56LD+1rs+sXrnnyTucUygOVtx1eITGfbGSJmVfk93d57128arKPKe3Y0T0+GsQNE03PAfmILUmbq2Jpi+Ou31hBwEe9Lxchv4ADj8gYY/w2yHT6VZwStu6l6f+Angi8GWUtFVkbF63kYMVsRnOe8svf2N9FeGDBYZCBCprHhuoK3rZXXj5aiXIbTDm8Lbrs9hd2ToNF1BvhGxv1M3sOztZQF7mV32ny0iTZq3Zfp/JJ5vh2ItIqkYEP+SE6LZcU7BliyHQ/2eYdSyOlbtZ4NivzNbL5jkd0mYQBSISH7im5zU8xW38By+qVnBv34P0gFvaaM0RFVgSokF5bsqeXpXtwpSmG3lS5Ns5LFAQ8crwAiycWkNQ1cuH3lYehLHvKTCc3PZLJoQ0ZV5nJL/DftBAFMaqgFQV5eLENAHYO2Uw1flacBLI4grBPrvpGyvjFDPU3WdRLqfJHp/ItmRTXfO9nvjwu50T8c9PvrZ9Lp99QLIx5tjfPLHxAlEJtyGPsVKcY+QwEyTa8vFrfT0PoZVkhR9gLoNK+efO8Msjycv7HJoquSYILU4tRx/TT7O6zqWjb9CcZCCNu966qXULpoMkfaXtWP/CZAePOyGVLR4YhXuHwnrVebVrzqasw3sCOZJviDzcNpHMxVXUODFvUVThHoQVCSL4sTtJpaz7HowJ5EwmamPmRa7WDfM2GnRgxxale5yniV6Q5ph8GWIwYKpe+lRTE39AOSUickiz0pr+Je3RCOKlTf7gvTP25/7Z4WY9UA9yORYhWpjrMpEPvIhd2uUovOJezwYK1LroM1UePwfCWNFW4N7+qFtjZMpm9Wpiikpvt9TW46shj6pRaY9jdIVPDouIc52KIIr0fe6mE33YQyZOaWnZp6fR15bfUQX8b4g/wTjeOYyLTNm2o4n97kpDMIqbM7CIHmFt+ZE3IKkU3T0zntr8S1XL7+xyqB8TiM7LYFirfG7LUfjmMhATg1lefMIIxyN6OD5sefMg9wqjvycRS5xNpU80NIiCxd128fhZwOgWgQMMVZa/3GgGlAjU3U9TleyLdLDc3EfyqkNazOVPClQ7Hs3jhaeXyud8k3bHzjXdawB3IABNlBZiI7MJ78I+Q9PxJIJeRsPukzUauXhVm5dGyKwaqw3qhO3Rc2vIzoymn+8u9Qjpl++rA+RLg9UuN1Uczr2CGbeAe8CDLVDWbiof3OkZ7qVYm+n7k2wEVWncsYDYjHlZ33+ByTvssIW0A4E18ILxEKJgbWWkIQPP1QxXFC2txgPcUF4PBH+MOgT0p0BkDN1ZTINBkTAMacltQmdq2ibIfTZ8Y4C5U9qh9k6YxBD6HOD34FHJQIy2DlDDGoWUxsE8QTNPUtEbU0T20mdjQLG4oT2DLxD/WMPBL8cOcXQjpl7YSBTG955b/YvrVvojv0EamLvy/Itl5V74aeYUOFX/6JrqeJ+mjuo+72RDLm+u9vgG/Elw42UZp/0mdpDyBDQ/xa1B/8Y/t5UNvOq7Gvr0T6P77R1kZtnXniUKof7q7MH8UTok457SgDNYLfIE9CvY5IFQhWT0g3O3hSC71UlZYPQKScqJbZyYNileM8LwF70na9uAXlBtF2IHbIWfIG0Bvi31rIZ0cAunJJ8CkoaAiYGMDc7KXZB5kDOZbq+nGpCi2ShzuLHxYxeWH5zcUS0VDCjXtNySJZRR0jwsTA6C3alCaYxz8JO7lmskTqBjleeKYq+xkLWJdUL+pbcb7x3ioeXZvLhZthRNoH5o4dGIfWJBKUO/rLHAgA/Jc2SqlLjbN2TKjlyZf8SuhTukeE3S72O+mvex2y3aI4K6ui629DlWRiUuiTG6cBfYsuEdD5YEHMBBsk+JYjgaCFDDohHdruMgrxPcMaB/ZxOnYVKUkzlw+oG7ez4hRHFFx2wH5Sn9NOjeZ9Ffdm4KAaImmm4R8SQHpKAlw9h4QSKcwK5no0A1Mce981sLmQxDUgmgBRh8sXEzUCKCOEQRYHPq5AcE8hvBvIHfFF8+rhRMuT2xilepMw7yNrUSCN1DjtgPYL8bHWLSYlo0n6aysw33vwJPsNakO7AXN4Qju/dz3S02jrQK/8locuGx3ArzYVC0kWClNZIrHukkdvioVjAIzKFVVcsEd8xBa2tfVy/6dwKONSbwQ0bIM71Ioey+pzVY+GMp7E9ZlKji3RBlXv+lF4R45ol/TG5d+Xx76zAgnIy0mfn/b8glfJPvNgAiQDK7ANmvvLa6wGmjubwhlspVYDORFTaUq9dOfEH3dh+mZnOknGwNti6716Gl043TOkODiANhteOH4ZcFQpFnvMHVrhLaPZ5+s9qbx+M7muBjVLnnE1XacYubp45wI1uNv9L5vJFHVF4G2lJ/gpx0Y+IZSp7UqRB1OZeci5+Ij3hqQ0TMyXv/LAUzXEws2iuTx2hzIS/SHlOeaMYPEeJC8o8cDLhmohQBbrAj8WbSnIf7VvyJtmrgZs+/CEcRd9dEOQOwBZHG5L5ABNTtKr5EESUb5lxw0NM7kUBjLyawWJtyAh+CVrGr5DcVj8n9I7bWg4UWLtE5MIxO0Sn8bNQIKrKLw44ahpgqBvYyaFFdFQ0H9Go45Vh+sYp3o9almf1abqOjqsNIWPsaaDz7htXLhkv8IBrICTcDok57BSz9zTgHalnNgKvWC3Gt9kvXoz8hlpoVwNvInx4ClYID73m1rAH7EY27w1BT4/iSFFnye8xW8Bx/nX4SKzSqb+Ej8C/1AP5z9t0a889EV2M+oUIUTlkB3EV/iFXpADKvlKyv4fogn3ET2DCKToomGxulon4+vepbd1ZuswWgeLhE6n5cW9DRUke5AzSnsKbSk3ksLeAA0vJ6iH06zk8YtnDK2YIhq9jKVEXV6mChlJ1+yXgyKcT41Bap+LGvWserj3Q3kvfXvfRMzJjqBGtnn3a34K+5uUd+iiICZhrBmH5Nr1cKEXc5dY6hhA0cvQat6NNP81U01xFbi3PDTlJdUuNlaJy4IRNrNiGclIBqP3f8c8kdybWlJVWld62TjCV3Y26aSrDdp4yXIuojUu24qIbR3FgZVP/7WrcKL1CyO+iRn58nX4FOG/qBqek3jDAxLoBUoAMkZ/xx37eP8enfSGwD7th60F31pbN9Mu999iK/lUjesVuYIbeTUoWTGh29EP44mjZ/8viB0D3LtrRsO5vjdK9bC8yjKHqi8kIaDmUwPqzqKZF3QTVVozyDTE0URNzxmTIvo4/PKvfYiIv8WCiX1zjKmSZXavwRHnVuIJHyPVa7/8tz18Pv7NOlbBHbszexj9ORUnjCO3hcVTbduEu1EbTZpCLff+5F1ydlB1/0Wmhthf+aiVVtxkTZxP+e4YHzz6UN8O6vdUbRMaZBWRWUxanHs5XQGslG0WUOwFTvqMrsO5UedpqXhk+RluweierwIXQlKtSy9K/mBImVAyPvavqaLacSawlxHgnRLq7P1LwhMpDIOQpbsv0/kb5G+UM4PKGaEM0IZoQzQhmhDNCGZ/5iqCl1uYAGA3AV9qQKRQfi2FOUW4DcTip1OqBm69Dcs/vhdtav8E9VLNAQITw72GI+QTXHTrEWKyEAT7A+49+MnUPym3tBBLvxEBEaZ9EUFUKzoTdJhZ9BR+Mc/cybSaDMJad3wQLBKN5H88Iqa3wIbcWy86vyYqSRhgtuzOiw/8GV86t7uZ4ezyeX9u/fKiPfKtAGMEWbO4UCf8pBMTl89Ha3gkNdDHcPYez7CGpdAvjI/ZXySqHC7o2jc2W6bOVDSjz8YnOt5xzqqEB1EZTutAy6HOtZEsn45KqYFwZi04Li0tuwx3IHJp1HC9zaJNfJG9mWkXr8Y9Vh/QIrbLMdA+jPE/wng2UeIQsSnoCGGLoJq7Ik/AdVTZSNVhItOMPj5dofI1v3doUCGcqC2zSQeyhuaySqRN3VDt1IX770/VNL4xdKWgxItJQAttdxffDQpPEqxrFHy1ILerMv3h1QRtJih19tG8BkTUi1IAP9Q0uCKjRWipkGg4e4S9BqykIo86HhYgbjp54LxbLB3neUehOhKo9OOpbwYVBDqHEL1wRI2H83pUuTLM/vMl6iWBndc+61L77LsK4iMZ12Ng/Wtoa5H7gAGBX2teRQi0nb5fN4nOxC0C0VwXn0g3ouxqaY7ytZCsSEjfbxOIeRrG32itWyPrL/kWuxui+6n1kbZecF59XCiZM0uGvXCBPNBvvhdUUeSvMhz+pH5F8sYc9bqor0fC42mCubbDzXqXlGIovn1cKJM9X4jhi7a/or1MWKKwm95s0d188ZYSlgwxa/pRrtrttOGRillvd+JD8b0InntxVd6IHHIOeu9zOhmqKxH7ixGuYUL9TcvxUlaSMCxO7i3xOOzAtkMY6pJYKLwkYqERgxS61UNa+ggEIs76/8NzX5Rv7pZTu4ZNbd56M8qE2NV7V1SDo9ZesTg/WInLVs5bh1NnIx9w/U71iZ/UgwQGkr4nVSkPo7WR1RUa/74MfnbnybxnUungTMHzxppVXUqHcVkpFeJ/YIWSDN2E1bdqF84dw6HdXDKrHdgcfXrnb5gy/QoB0+Tar9ak1w57qE343ZtN0t+bwZFK7QLKNTho31I7tMVI8hzs2JSOydJLLGsFmIKTKEEqeT/qM+JxOjGxcyek5hxIICEzBmPfxpfUVgZHGpsghs7ZneFbKFDYBgx9nyiX575K2oKU6J0XiZw/oK2UgYhSWcxpJGnJC3KikCO/58nxfItOkaqGqTeI3M4BCmdr93cSScXFtSykttglTggef8uz85e+WrHK17/Er1NgAtqspbJ1MDrDy39KVLHxDFNBDcjSg9SuJOV/5HBmpLRfPq4T2+K0/alLPKHf47xQz6/Jw5K8P56MTwlYqCbSIVze8cSvT+Rvkb5G+RvkV8WFu11PW3Z6lvOb5CiYovtt1Pq4UTLdlZUi8nT9SOrDSpD0LY4e/y+d5XmmAHH8BwsKZbw5+XLWwVTjv/tmwgMn21sPHlVptI3i3nug1QVhR9lXpdeV1jaGkSSC2ioOuDgGwzt8K5bQqgymCtCEW5wT1LjmtohWZ4npZBt1nW0wi2gwH3yoU5ggQxyeQCv8QoiiXTKk1c2wCDZPOiMPrt3xQmxsDLa7h+Frp2EFD3paBNHgO5FXG7dxLNWZ4RiXTeSuYT3GpqNyP2fKO5lqBFuRJaQWT7vIg83ZeqZyYkPcVp+Ce/77M+rrEUn8bAd5oBCzaU+tQH4WILJo9T9aMDV02Fll1JwVxVC7CZB+1dsVTG4tY+qbkUIiiGG44JBrj+aZEYzUQfuxkY+GPRBfs27CYkHk6NEThRpd9jtBbBvoIns4jXm3n6fQdGKfQ7jzDFZkzrl0qeyi/jx5O3kKp4f2bAHw0Cy/8jfB/HQeSJflPLeMOzMDGuoXL8hxLWfKlcCB8chuKQuvWAxNxij/YFstEFJEsdyt2LjoUkEbpHKRBe2SlHCJL9m/2MomW61e6fZpXHklFYIopuTWtywTyqHPzGtfYU4aLBGCM3cdnQomW60S0V48xRPz/More8g036+t+bVKhcyjRbNGl6zIbWGe00uHmvUlovn1cGRC7oys0cAaS0DYXNA2JrqpU6TUf6Inbac8FlyoehasYhspEMxjdW2YiFhkaysst82UjKa50aYF3MZoAC160wuOmUhcT7taeCXFQg3rKy7DET50DXsQ4vKmEWrJso/9dB9jp6tWUZBvilLNPvoNj9g7JRdGA1sjcV27i8MxR/GnmFQobk/wm1+kgGJK2WtuzFpd23Jrq6KOU7LlO1O9jgxcxdoByQrRVnMHmQNePc0fZwFqh1xSp8BjYKZ43IYvLsRHfTO0/1Z4UpH/HKyadbtjtAGcmHQeAkLWeDtkRX2suo8pk9u/ulyzKbFvy0FA0Uem21Kr5sO6rkeE2r3cZQcLdIS29m5uy4XcllHsnxZflsz71OXxUujtQY6J6qq3fUNnSUgDTI/OgkfxRQPICWkMXZWVptihly6tBs50PstuDPXhE//O1OtnRu3EtDihiZB9KssDMsicBfqH6SwM0TuD5o///MXxzfNnPtJYy9ACJKz69qYul6MQDMuabAHDVRwBhHzIC9p7hETz4IeLoB6V8umvWpmchxm98BBxXj5mUVisMFKlMrtnmXdlKsWjH3St1avX0oN1tqY0XxlOvJ6bPyrf5ydvoG5vLwOmPKhwTVNY80xVVz6YFLOn4KYzESHAjCcFwCQOo5rDqAzUlovn1cKJB80TrVFzABRXF5CR7t8lqe+bEWnJKmw+N6uG2s8uz9SWi9/inHuN7A2nipU4t6Fz5Gwr0d/gTJNhCvCvPyNWxV5swDfBGG5T5V/rXr+d5h+8PowXpM0BddzB/4uLVjAG+DOiVBzwyoYi5tbRvATOgvK6GIMdcbkYamWlcW2W85hGMkVV6Zz0SO42DBumUUA3NiEN/zhHHKYxjUgNCUw4xzurRbEJZ57pwmSFdI1V5IZ4gvJ2oGB03HyoHyRZmT0zJfWbhs7/NB55bK+vSYbCwe7NH91xp9qw8mC9J7Twi2oIja45uggva7SJi85+YtkJw+wFQj7TnTJX8iRUbgMWovpwITf7KzkC6HNuhSMDbLkgqRtdBroiz0iIZx8bC3yT3GI18dc9AOPKxOk8PS0QRY+cG3kTAldl5gWpo08ljCH+37jfkPVoMuGSkQLDC0mNL8hbQJ5ZsH8s6PqhEOsxD/hnwe4deZqyFtdZupItseuwZI1NdPjaAhB/V5y1Lr9WAEbb8RJXdhFrgsYyQ5LWKPLII+rPBaD5XLd5x0de02ipYkZp1ZjbuLcdB5HEzcZVh0aMjhBxC8ZxS9Pr987i7DLt5IR0ovpkjIxhjzwLg3poSOqkqCeEr1wokEwLNbo8KmLVCe8zweSyszBgI7E3xYN2UkpiobxXLHzqQsLAjGqwp2BmrhRIRHotyek838bL7ldCLBwZZyawqKr/59eQdsKrBwabCLetoL8bsv0/kb5G6yPVriKHp9YZyaaQBjtG8i3kalN/fOjL6otejHgixRGOMCmYoGNdNRv3PhoBrb4ABUZPhGlZIm3ieJLPIg6SMpOUubenBtPcHM56vz7EZhWcix/yB9bQiXgkLMykZU0Fj9F8rbcaETJUid3OUXA8EIjetzYQXku/TZyvtUTPCpW5N66E8rK2h9cDkn/sICzszZRBuqTYWSop3C8IDF+3oJnOsHVHZ4jqgrwPhxR5h8Y+I4HlZ6LUldukRWJ1VFfqoXvaHUNtbzQCyFNZHxN9k3DPmxDXdpmhcPM9YZk0zYgy+uuOcfmixbVrYPbwid9q2IJ+UZm0CfX7MZH0vqvgK6QwOFYwx/uSnb9NpziCsJ6uPuCJ1qf4ufTw8UulkOOuHaMmekzr/ARH9VHrzcQOHbp5lSaReiybwGLBQdZeK5EAoZJUMn+brvXr+yDgx8NEhx3l4cHmfZby5DfFfYQz+EFzTpvVvOd+25cz6uFMETUfE4fSywNPiBwBcRMZwJHORS9sAmQx4m0dDv4kLkjS15rhhRoHHSgpA3rpbstGpZ2qyuJVhl/HL1E95X3AuIAgQw1ORiTDRNL+3AbzIix2wNqvrlVz2SOLaz7ZModxh/y7P0Yrf1bNciKuzVwPWZS2Z6j054/g9xA2td2zQTDMZIT1zNL7S3Zfp/I3yN8jdL3PWMMJiM7KDkQ6rSq9hgly7k8laGfdxA9LfkaLGHRMuHmvUlovn1cFO096E/cudOTj5GzVFqLKFtZvUAM5yE8vXAXnH02aSPrmxXR+byhDVyvDCPHVJ+iYQ5LUgqWTsNgvIJibkETzCOHDOO1h9eCE/GarnXm40uOzSayZJFIfzepVsXUpps6sPdyjK2e+OQWC9LdFO5YoxVgzkKSkH2tSmY/yLtq/qAU74j4EFnZWYMwjpkuWeUwCZWun0bBLd+tv0H2quxQ66DPMT5YLjVbdB0B1lHcf27+25yjpO2fzPmYh37/DY2h7CWdEUsr9TsLCp7ZXeRUfCyvmMomjLCDls3I6PW+9yfrOwi9tpqZTkrROXTqYJWeZtkE1vsNWok8NtaEm0a4i9JSJLHDOMZG4bN4DgxEel1fWHMhcLygm8XFQozqA2APNFca+Bzy5zgxoSssXZGJRZkF3Q1tq1Dw7Gk8+t2jx3G7peqRWOgOLRfPprgBqwb2wHB0LoZppa6NX/auXMDdCYRiffm4uHSo8+dhgbILtN0SHglAiR5FU0vlIJh4E42uz9SU0+1AIsXlEBPH0fnDsaVqNBot59LGz6ZyFlPkc/0Yi2vPq4UTJlOz4tBcp9zAJCKuaAirpX6mlROGFmnarBAKpWQg+7Yakcq8Y0ZedO9SYCv0/kb5G+RYYRsiQ+MjSrv6COCxRU/7UKYLjtv5FVbbOnKpQr7JsIJgtDgVDF2ipo69c3erFAgMpwGGdmaX4RMNcvf5bBszkP5gtRRv+91pH+bJHxd9e6+aHjhuEdfEHkTFJ9n5EITDrsxFbFMOwWG3m67/Cz1Ysm5YbSW8bISjDDQ0A0idv9YyrO64F2D6aAak87ZQ3hshgbT/c4pUKKUoX9+shYIlgHD3JQLgeuo6/JLpjCwnLR4PzkZCIylg/b1t10LN3nnln8vF+NDoFva0r6Ynj3FgkqggbeEGUonZu0hk/0Oh7kb2Lev0VBOtArUo2JGs5yMLoeBAA5ss1rRLQ+Mow8WYpw/4DH9PcpmTz2Gx/g10EdFuq6tVt14nPpFIvk8T1KNPHeNIAHdwEqId3jX0Vw/PVr3rN+foJS6R6Z7W782uKFTImmpdC6yEteIyw6oXq07aTJOKa/lgzhWO5r+xnlz1JcbrOSD8Glqz/DrM1iezSgxSCiF6xeAAa53D+gJkDCT78OXO1Qj+ZACdTFI16Vje8vh0Cu7RYLe132AV+SCNTvUNHWalVo+3cdSuVpRMt1Taup4fDQ3HuLq/gyVNhJa9hHdbI/9xkAHa/HLw6O3gMmKMCUozqKMc8uz85noESzl8/iFv+6HpLg6VgZwN737SXTjC9w4fX41YBlO4m6BjYV1AZqS0Xz6uFEhMHQzx4PaSUhaKwlr6XfMR4vkm2iInVrmC0R22ZSToLs/UlovnrCxPY9WwIggNqqssqrqTe4pLaGf0CPe0NVIT+rWSMZuIbHnYSWYcBYto7GMzrt8F6J/QoWBtfth8U12YEkdE2taA2mxKYp6RXr5xukor7sM2gkzQCijtCSKWWMs5muGbGmCMVf4zO7N7bYnblcMungbRehAyB1XJDlZn56vjq0/vG3r1je6OIRprUlAQLhWAaEeny/gX/35VQaPFYRNc7jzBiu60s0pVnDfTmEwrMdaZLdEf1RWWDdCcBtmOsI3l2GkoHIsqNvi5M39eDqgRK46H4KZ6ODh42td2I/zU26ONuEUbeT+QarxmjfjiAhqQtadMIQM4+nTKRHF7f1wT5upVJUFEST1PMHextlnlobPtpiE01eZqCbtPfUhoNhRvhhd0pvCRGNPhxlqyeEhznMetr9tnF92MQKs70Zrk8HlxtDuViEGPao39B4x5V0Js+YHWpYfsS+n5f+aekzx3Z5FWAKwPAQmdzIUAor2XQyUo6CQJ1Vg8nqUkz1OMX80yNCGZWuk6WI47eSjIYu5/jRlbkRm9kekMmhniCgm2Yo8j3L1JaK+vQyrruOK2RYjROSbiycqkgmrL9gyuvYOWxOXoIKPGrrzXx4Xi35Y2RfQIFA7s/UloveWSsua9TnUVmqAIPgXQgADEpNUvVeTeMwrDMl0fdVO27fPdzyKeP2ZSToLs/UlovnmLPEr440w73FHtKdr87tO59JNXhsjHzCvSt95JQX+RVCU8ikKGamid5L+GCqpqnRB3HMz7DjxkuUji4VdBOUh3RY49BT+hajfKfwkcjuuya7yW5h5lXZYCkdRLuzs364dimKSnoBUz/CJOuFoCzfSJDcen2qLKelz03KQCV5iV5NaGqdhrHMoFK5CCr62E9JaIkC/ThNANbLlZeRY0Yub7As6jeqzJRsFzNyrMeXql/WQWlnxPdMfs+/TD9DQIPgePf1GMnW8C9Gz3Zu4FpEJRgfEco76ByWPvAC3o1xPlhyz7MXkJsEQjPk7ivdCOWPqsFm9bhheG4UXmtRb7uEN3g0YOyqra5a4Mrzf/puKW2g6mun+NqCPRFUNYZja/GexSMoVehap2wTAi7B+F90rt6cWztlnboAbzBFyQYwjzPNVLdd/w86izTUMeXzeNjpUJ6zYYEO88zJ9Z42lnragnsu80OoANvNvXbGb1m4A5cvNaOyA2OlGMDrB1oOCULwBdhrOyi1UCT+S6p+2j6h3ZifO2UTJsUB5HwxoQ5ojbDIcJn1XqAy8z60GUpyMCXgeyig3ZIdU7LwOj6voHyihp/Gajp/IrCb7DGkcXsSFzBjhREOty0QVlnsqiDuc6tAh4vaDibDSSfAmS5lEy4enopLRfPq4I6p3WwjO2yo+h6qsX7uAaOT44EarQoGt8GPraB8rP1JgK/T+Rvkb5Fr8rKi1NNA1HZZVQkO05sMhmBubrMuGooFPYxQOvKSHFFvYN4xMXXYkee6g/f2JD4zBuTpKu5NaZNXwiYj64j+rtzPLrjoXXOej9xr96bQyt7oGEZQlm53q1b8l7igyuZmwhA7GvmH35mCCv0L+SPhuaNMsf9zua01auLZ+Hd/fRpFg3wsw2sPrbdNhb8GbXbeZb3u/nZjbW/Ype9U1cx7QFD9xvVS8ZZxF/aYbUb0DFV7g5KJBbIBsC50rYGziXxEAk5To/eS1SSSOXiYn1nNWxpGhLq6FvWLxh8murFIQ1ZAhB2S3xUy+glqHR6Z8+XDVowViFablNmIox5C4BaAnidtatZdHX8r2oCrVNFTY5jMOXEfGsuAUlLpWhg/ODcs6RdALAsXB10OK6zSg61VZ+7QGPw4Z+76UbHYPMRb3DKQzNYV/5oxU7vvq4UTItPC3J13qBQQPy++eFEXoEZnmM5fTPKQkAnf5k4ifqTAV+n8jfI3yJJZx3P4HQj5zg488umXzyY7lqms8hcImC6LCB9lx8llGtan81GdP5HBmpLRfPq4USEpLigWnQB5cTecWk5jRPheCrCvCTE3L7vETR2lg78Xj43yQmKL59XCiZbtCHWcoYsauSX+k1hJrCTWEmsJNYrMJNYSaPWO4XYs4hu9fyqZFGi+fVwomW7L9P4zDA9z5NOdSkAtx4aQ8hDZuzt9Ylj/U6L59XCiZbsv0/jOoTfRT2+PcbYrCRYyXKU7DDca8TnuhfMf/mfoPj96FilPGjnY6ma2KRIRza14xaotVtVqa66qQRA2SLvdWaIpI7WzQs/yadooBGueMLf8OzzRlieLfW/u9HAkpm5zmzlbuQs5QX2SSAlGXRvxBur4weXSr+C1AV/pYr7AuTxNifRUUzoeHISE5ZkE/1qTQ5pfNjHFm54f8CUdXII3G35ChN6bZ0guUQ8W0M++D0fRJAYOfHxEXdWip8AuSAtRuZGIoIfREPWcVdh1KfxFKIVv3aCLbOrDkRp9SMLF2bj5FKtWLW+njFnu2C+5tQTdGwi82Wshir+eVVUspC2cMcCH1Ehmem6fNb/WKxxBKmyjkqv1cPDe23FC4nnBVY6kxrVCrI2Na3Lrlip0mkowkuV7isHBAOByV182Mez9yOOM8MUAk2vOXvwB8KIlcui+oOQTO3t2z3IUIOqHfom9s9mCAHVVjfa5mRXrQb56YFezQqBsjbcE5td3f+79QCesCmaegMd+mOxjCnPXbZz+w5uc3WP6CnGybPZzBbO+vofY+F2U/i6WsubnF/NDYfst8mDaZGFntSR7HWSyL8/5y0DQtw23WKnXKd+CyojjRwAx++4fjqI0ZSdeVauKLnthlyRiCxwL676vCgo9hNYlCuTbJLXTLvEPD7xW2BzRNL4qQEiQSPjnzg0/2o3oLwqpaiFhk14Xyoq4puCFKXG+MhTwQ/Z82J6cdwevdGDCv4+uktCEjEDOWwrTa2IhgADbc3ZoUtgSvCLUoBb/9YSJl/AvpS8XShrITCNegsIbvoMZlht4/jiiYCNz7WwWZ7ajlSedcPhMsZp+uo7Wqai9GiY6yCCUDS4+clA6t12LuaGfTv0JNTL/P3yK4mGzS3pqb8kxecIwopmIDR+h+k4fFz84ykVXVjqi9335cUD7CvwHL3fFLiaJme1Nx5MGZyZgXlr0FHfuvAQHBoXIHwlP5BgLmb360yQKzheIYUs1sXIozZyrIlmKZ1+ZNmgSvSlq3LuSC0d3IzqC7/Gkn/+6vgpos6DMI6XFwqVsBQ3QwnCZkUqUt5zXtrLS4uz2n2N1w450pi5B60BdFxfm5QAdFbl8bmKqfZx/4pRhHdm6GF6+3GbKuFBBvvj9kzC/1UzW6dRHYsEBzcgBhexIsn5mA/5SOhV90gMPOqLdhElGdlxg22j8a/zmKeb2T5LOfQzPHLeKW3yVmr16pcNo6E1XdxexKX12fE2CeU/8FSS6OsLZnYeLHLx7ItNYx7Onj8DcyDWnr9hzKSODfAMqWot8W/bSNdkKPWhA44eb9LMGUhFlSdRVd2jdkQded9q2/U3mYvhFVZnpNa1QuGbXQbmz729FdOIwmIspX8hWPrw1f+juWGxt8eD7H4eltuGPdnUsWfNTMSzJjcBU22BJfYh71hSfC+O4uON+WTpHKIbgPKFZAT3awu7c4dQR1xT6yVBSFw5Iq9eO/ajEqi8FGjTU/r89k+vvNshDo60bWeX0Ub39kZt27jnmh1Vw2Om0qr0tftBkv3g9x+PwAPkmMnC0e9mdYLgLbkK0r62nCo/7674uYt5V0hSwnVLvfQI5m87xNip2uQ5CXisY5ePJQS9Cu5UeNce1Awy7+oKziMKVGDkxbAaLEXTO5Y5A75nLIbPhwik5OK4Tfs2spv/VUBhthF3IuSs1a89geyknJ8uVdFnlr0q3ANiW+txcpOUZmJTexakYaI3TU9UIOUloy4LVAsN7ezrOHDGKIXfNHYpBccnJnl7F+57Or7hScRb0CkRTjE+b+ggA4ZHGSNXVPgrdtYos7trLfKtO6ZxAiQW6pWMZ5uu9rDyF2MQuWC/sTXINsR7U+BcT3mWSY+Dr0fgYyfI+R2Se3kkbxYuM748CPJFnoG9vz9PlOpNbzYpDibZCqe6pJqUmGcvmF9fxCICq8oYSzhyOvLoBMRJKzWo8iMxk+iHE6NGKEMBFn6Zqn5NK0kHWfchLkCgvRk5mhlcSBRyyNvaQ770xIU8m2z9lhgJ1tjU+ASp4kyp3lhxkgRdXVmj6zD62FJBEnnYmUSSX+Mg09t0GQwEwk/mIqgDkieD047zWIdoYZurWv0L5q/uGNh41fbv+nCGQWB6LulvsHxliKkgguVP2fqy0W5RRxHNOybkmnx29xIQR3t7173xEOKNsSrsz4i5j6BsPQ3WTpKB9p+rmtKj9Aqv+wSkSVYmO4/4hRjBk8z38o3n1wAeOEltDK7MFvlXEaTQJUy43NrMN1Jv8UF9xxxKEkRzzfdBMlDG93LOn/AX2jkDydpxWUXTk2kYmkHwIK915fCJ2sc2BZhdzyLdZpfn4068hgjYXlU8XqAFhR9oopTaYjOygb38GMmM7M19SaOWRsyciNUCXT1UPFAokz3lIBIqUXjmuIfvb78Oery+ZbP+2zsPo8/LCtkhRak2MksBJTpHLgGVb/Pq6uEvuZCzL0bSUgbkS3OHc6gLdA7+Z/Z3gtgBIM9P5HMHmtLIZGXHGbtZRY3CjMzJBFeCB/kb5LQUecGaofc8qczEHqoGkVIZZBm4p1l8pycyJenpoIaguV3ha6Fv7dPx2AQd0QrjKrdEp7WaKZKBSE/eQVwoQ0xOwncVQTuXC7hkA46JFTAY4UxAZpt+hbuF+7zdhavPS9DumHc5/MfLj//fupjd+4rnE8tyAmhc037pOb4jZD4yQRio1b0J9Je6e8mL0k0x874JCdy1yq5S3MVFBmFYMVP9/eJwBuNzbH3yWeHL7Uh/wmbpnyG63oDEbemy3xG7d0iiBU0YiK4aO8XmH0fazDW2YR8byfSi2uht1pOj8bA1Hj+xfa6cULTYZhg+WztmB/nvNEUfMD7Aiv+QCUw43D72qaEyMTl+EKq5F9/43MD2C3pO2RlhnWHUSfHarnSJlZmybJ+bkZ07u+eXxr3tpZ60WkmByNhRLq09QafQSBB7XYqxq3k1HT0viVb1izrOhE5athXSz1e7BsrHDiG1qG3S1xd3+3PmckzsZV9DGTJ8cLQs8P6n/f/xGzoOp7CLhCuCvQclnfpSKrYt59DBaX/Pjs65rotxfaHraluHUlovkhlGwY08uQEvHO5sv0/j/ULiB3Z+oy+xdZfXUlL/AtePHZ+pLRfPq4UTIyCcpb3/q7VFT3s6GVK/sv87PpaCoBU4+nhHpee59VCouZCl/safwbJ4vAR/l0cGgsldn6ktF8+rhRMvUedVLdl+n8jfI36CzgFnALOAWcAs4BZwCzgFm+DSEuNiKG16U50k16N0hBN4W8og7s/Ulovn1cKEU0fbDlxZeMu8C+bpH2U7HYYQJ3GEnhPCDKJCv0/kb5G+RvkY2gongnwicd8nqmhOH95LfyBcKzMbepm0k4ZvR/xRoWcmPuYq824C9/stnRNgDXfj7YPtFfnscPXJBpO1PUb3djHmyE7T59vR0cluGRxzh0V5jbShc2hXMmaJSgg8SwKsJWJWCob2xZgWQHo6tk9ddopnj4FfSmXStBqAo7R+dBy88hYTlOYD/dTQFHsmC8Bdlv43S3dkn92BJDVbtezk3Ys4ZvgzR4aTno1s6EGuv5KMcihYZcTilRCP3kUyQRQibkyx4HavCM8itkVlmVhe5LsZ29wCNjSwXC81rYV43ojMeeapxnn0+6n8WHqbg6vriaQQboMP4sSeMKWDLTKEYZLRyU7pu0lxZ6+zA6RSOADh8JvpCU/R9/U0YOFazWBa8ldyOHBP6qp2I/3Uez4WIj/0aZUHz23p4G2oWMOgwoDzJi89O6vzJemUy0QPJC66dj900VSbXEZ3meYRurtLc0A0T0jvofd6cgeW/sgh5kkJmmp1OBflFNahOkO/mZIhKHxjZWs0w+4ny/G1YCUxBMdi2NUgvfrROZbO96n8Y/6ENRu6fBO99PmG2IHSqZoZhCWe/JyK0Zv4J00LehG7MXO3XGWvULMuOaHS0h1+l/pqKEX+wGv3pnmdW5ftWfQFqVeVsNm4xs0dQj0Do4NHYTKPY8kuIaqP3MDkwff23vtQjAmdOuYcB1Wqq9qQQvdOw5FfyWx3yDcgyeLHMEdGhwMlrRcx/lMGxkMpwY51f/NmWmpdTwLG/QKvhlzcOKxTw/4HJ5ue5MDFrrpgpWjgeaO9TBE2K6P088dd6798OApr1w412hlybts5dlVJL6e0IDrTXuISM/I0Lx8g7B+Q3+SMsSmCI4ZNWmhBm5z9CaFyygHVMc9WztRVd5hKtuIkYATn5DfZsM8/LXDHDukJGutiMoprPimD45LArB/jBWVmDGVVljXLvH73+viwayy21y9R8Pq76GeGkjiUkLvy9Wxi1G6Oo9KaPaKxes293BRLWRARpIN7MlAFzAZvfuu4jX7uiI6PJmZMQcxJhDNvP3tl3W5ojVdz6aj523RZ1bYydBNPoimgPm06oSxr5C2L0Y7BQpPS5euq8qdCxldtoH6HgfCmS0Hb4NQj2wAiJmS7MhGDhEclI8uI8r/TKxik45YSzkkS2GYsAcm9+7QgSjW9YC4ezZHOK/fo7PAKkDaAn1JiLEqGYf4ggkGGSt7UMNbqQmJ2B9nFCKFE9w0Z+yCFn455kmgzabJ7uNiOpbaDNBF1avpWjpogAnuzMRzGFaOn+n+bKlVZ0N1ul5CiJWKJAjdgSjOggy9CyYbLLAkMQB/4pw+CSDRs3+2/23+bkUIr6ldlsivY9WxtCiqS2NtFhfz/868bAQDRJCYuDDtYMJJdje7WXx6xC42nY0GqA+hccjXj7RZh6GYvWZzo9UI4F9/vMQIGKSgqPqxHY0a2SB0Syw/riyhm3CiSciXHXJ9n2DiDV5aH7nZeLAaUO9AYDU7iXDVuVd5+5F5QR02WWdhj4B44wts9xglmy59lLuFuYETz3rolDFUq/Z1r0wQabQsTtbVnnMQEVtPCMFeEBT5moTxzHyBvyqPLQyr6sMNgR1bCaDS4iKevlE4cHcgrNW95zRievPUtGTdVMdi9Pb8omnNFU3Muy/T+RSRmQ3/CTHJsE+sVQ2izP6KzISsluy/T+Rvkbr7Uoc9ZfRC7rRvNdq0N6lBn/Nxop1RAflQIx8fH1JqqLpjiRFJbM/qT6HuF/oTrDNB4eFpkcD+0D/3+sbApJ3G+Io/JSCV+TY57Xnh8oBGsT/Ttkfw0GUSxgOiUPOW8C9Kgmnh2/EH5PPWcK/kedHIDy9r+ldaokLSyqvM7COzO6fLcxdhqNfdYjdUrVcT8GuzCS1WPbfOBqH0ttCV4FCmSB98JqIPeUHtHYyszvNgKMxPHZmM8kGr7pPMQSGCxRWRq7fBx0XYXREhz7hkHhQVRFa8p6JWMEKDIeYxAmejh+1Fs8vnhCYbbSMt7WgS/MqXOad0i9xY7sifvzUUtHwap7JdwauIQE3lMQ8OmewXZy3Awvg1Mgw9RUhyAQNJ1gTiS722hWVi/h8mnBPr3+v7JNWeDWdvfXN3J9InXHhjBOALh0pcw6zdGLkIGCJtXs0wBHfUlGm6wGZF/+xgvogWBcKGR4YFncAbti4bPKmB/Tr69oxVgzN/uRnJmWGzStV1axceV1VpceiotxSCq1rIuDCtkqLZu/DPfymtZ/uk9MjbH+8xYiSt0ZFPJlxDP7goetckyZ+y13Z8v8xamCnMmBkzWOSgNls2K7yHrSO0wljH/ZFTHK5X+XawkMW1VzZ1EzPqyFqriBduuMCqOBSWi+fdLC0Xz76gslozmf1DfVwomiGETLdnVn9P5G+s4GyHZuHFA9u+2dNiFXZXPWD39OlVbj1UbZGCgHCrqnnIQDD2B4sr8apNjO4nCkC8ApMFhW7nClkrTCypAaLKWRlmbKTE1Z8PK55/MSrANezKGzGtsEDULKTT8KPRY3zNNU50EWeysRewWkmTW/g8UgcAID6lu77QAHkDBwjIbCBBgQ/kfYo2OS8P29CiYRuva+ld4EFVW4/XCCHZqqk5/tOdeN44dXF/cWPjvDkRY47BXVw60N9ptBvLAlzK+5J1R6tpuypvso3GKKOz5o5zyM2ZcHTuAF63dRtD+m0W4R+qhi2FzWxKduzPOqSKsoqIMYII8fhzZ/OWskYmTYWBtynnwlsh3/xyA6SUgqlB8jpCA6C7P/9mnJq9JpkjHwCR1Yc1oKfcWeUIYHS+1hY3s9PDPFjBe1HRzOzt0D6Ojj+xbhRziG4zBaqmVROljiX+kWQrIyhlQ8mFdIBS9LSs9ZfO1rdM6zcaUimn86t9Bpy8DbX5DwUmQbj1cIIClA3OS9CBCSE5mP35i6KRz9LYZRMt2X6fyN8jfI3yN8jfI3yN0l/q9HS8+8vAkXTrsAIiSdJeLbZsQTP8fIN1AVn0qWOqt4jJK+KyzLPM5pzpbmUQcEMCC7P1JaL59XCjC9nuCaW7L9P5G+UM4BZwCzgFnALOAWcAs4BZwB9oabqsGcQDuzIAz4cL3je3vBj7FnTniPDgr0ifVwomW7L7/L+U6q3W5IA1Qe1R9gJJ8n6iMvxcsyNFyaLoqd8pXKLLPRWqmb42HEVjUlovn1cKHpzsJ+lkeqezxve3hy9MpxAvQhazNdWUR1nmKp/eDwBlER6wKdEg/EQbuHoQuijBTDU8FnHtkQvv5U2LRfaBfE+fPxEKDlStD88Dan8+HMJzcs1OmL/EVijwBVCRBnRJd1/W9TOcRLrf4hWqnO4wNxJ1jgxmswIq3lsZBDl9ChkFPxvdMXft1N1llx7rDTVuofnOSjBdQ4BASENl05fnLPwVt2VCekUnX+4DKGicgWCprwacz7ymBL1POxcJWFjleb0FS/zJMXapqeAVaJwz69RbpaVikTst9UhS9H8ra5ChZGS7AAqEhkSEuVfgEATAuJo+Paf3shyMyYixc5ilxPvyWrf5hyNVaZ5tPmKnFvJ5UjSKYUDDDmb8ch6t2r7NS8gQ8TkIGQgVJPv+HruoJrYNn07VDUnMkTAJ91EQ6dXuzHuITyHCcD6HlBFH1uq3eRW3PpSq+OcSKeoV6DxFIIwq6ILpZ/cSECVsjcgKyxEGPaayNv+eMK+JmQJ60Biyz3a/yzhdDXUiusgIFYGra9wYwrUPNSokafGngCdP6yCMrUXo8mTzJZ3aPxU7wt2CwLit5cZyemRB2E2HHpFLW4QxUjdb48d/5A4dJH0ARfjHJSAAR01lh0ZHwSljaYF+JzqQ+SgohepHGI/IRN2Q00t+zj0tnn1MEZ1rqYeiijz3OYuWea5W4C5uqdkMVWKPLa6tq7OaoLY3Y8/wSzn7cGPMGu4IXbwT9T4oaG4Ll6Jfp6x7xHvlFtLPyatJoRhafGZMDXTXLaB/yvfjSVVr1uR37Gu8e38yrMLiONOUlosNQsFHZdhUNK9u+h24/N4k3WLFO4/UoJ9B8TyA84nBXnEA5v59/PBioKd0mCrvYKCmg2E5vBYSbKqnjejN1t6SRB+aj9KDTiKnNnUBfkYzaClNirxXXZcPyivDKk8/mv4X3DORKGY7ZJRqIqCjefiUbnjMFb7Xxhi70kPp9K/6G/MxOZOAKlx5qpgTOQ+sykSrMxNK4NGq8febM0ADJqtHO/RjlFdO18bAW6JarcujVU8HbxrSnvUcWbjwpHufrEWYMMysWkvumDuqeXht3iF4iqReOnPVTl/QAlDIPbfVgYraP4pd4K+44BAppm86BCeYzxlWIc+cfmqxL6yFIdBu6hw2VvEC83rHBnH93Atoa1W+VEugjm79mBLWDA/Ruw0RA4dKRXn5hjRB21GtXVsNwSGS/nmqR9hjls7t2+aS5ogDR0pyJ6RnGrkoDjZNVprt3hlHZa5InFxRvPlg0pdonMslExti7CtNuPwc8yeHskG8T8O3Q7JHzi4S5Mp71KQPrMDzHHQ+BI+lgTwwHJZj4oXOrm1dfJritM3y/xIDcw1G2d6HtETAzkUGrh/bez3CuHpWTHZISfvO2Hy5aYK5xBUuQL7iYz5BttExrY4eA3xUdpB51DH0L13YjQFBd/4ojn8yv50RrE1NBIx4/PLUOgsHJgv2k1wv0T/08hdXmrOPH3ZKHY9QpaOoJduCJDKUhXxoMokZ94BpvBhYBFfS9/pMSTRDO4ERd1t+2irCDBZQJY47J7yLr/QLro2zabvljS6uqQ5ThfD8lKivgrSyNgPmieZ3Hda5eNNuefGHr4T5uJlgLKp5rS4ZVoTWrRseiF2BEGiURQhbd/ataptuVt0l/yw7bmvhQYU2e7wsTAHk48PeR24U7ZiavHRC6ntsdyLC19Hbml6buI1iaVVBwdD/5ugiWD6uateOUi/sBcqyi/QE9rrt0Pz9Jvpd/zjGnb9aof6r/V2d/5nj3jhV4vjwGfRQbN4etXy4A/XztHPU+UqN3CrVDZ/jCG3dxFPFvLDBV9O0D+HwxfzhTo8gjK6ctd0yUamKuW6OdvEkqDrn1lecCElxEAe21+TYqQFAiXyPRXVfTUZGv6lI7bVb/lru3ahn9VpvF+QnFLEEfFIVGV2euE1Q++7HLwfwqsHEUAez62cj1FtHF7mn5qYWlxcce0zlGjoT3FsXCaeMm9prFZVmW55mrJ4G/VEosOIYq747szVhOC2Ox3A+k3KFYLRs1W4zbm048ho/g6+mJy2G9WLePhYHnb/BPslg9NE/Tf/RwEjTUfG10K2D4646GxKZYUvAixsbKO2nxdDQvnUZKBYgsqgr0iAp+Bn9osYLEIUswAzsdt7fzVmxroysi2WZCbqGH1ZwMqPTp6qMv0/kcP34hcozDCiulNfXF0atYaWSbTNxi0FYWnl8K7iZ49+8PqWTQh9Ni7P1JaLVfzzvxE48eFzJUscgnZTzPFcJFR++1f/h2Frifd2Rze+tKgfbUPfYlbbZ+7VQDfh2kTy5GYgRnwXVUhaA/Em8vpzYqynoph5m0ueat/0YYAUaRomvbK9MyJTFoWpkXgQ9+P92zSyYjIILEyqdHbjXh0S7SP0aZF4RSzt2vOVekST2MJ2L4aGXWnOrQO1EmddHvUqMy8ysTxQ+8ckEFPf6tpWLGTbEYVc2dfTgG6ri4dkQ+htdArWTxfaQpt/TVjhROxPLN81dJhU1C7rA2+qaIQf4crQ4KQMWpaiYqXYep2n2zZdxScfohYZpZSduXUjFVBa5ycznpJcNGsE0tCuOPKkVdieQwNJkW7+saJ6wQ/8BWBUhwjN5DUP/OsR3X3ScJSKI0YU2cBBEy5UJ1GX48zYvd016ViA9lYq7Lspj7OpBGtKQDx63wd8hfnStVO7fZIaWTcSFd5i0un8daFqLf1cknHKiDZ/E7SwNc3wNYFnG5bnoTPYUeVTtvo8845GL6wYHXhARAJWCcMf4ZP3mJGPyF+RHR2YxOpmdsWMFVLmjERwDydl4z+GKsakbBrWveD4qi/2slRQ3WdK3t+qx872RJgNZ0NVM5fmyPmzom0aemfQf2Nht8XkgnT6qcXEY1uHgQONiUWqx/+ohWElaBsvwySjgutwVyYgmbfw3OsOdM3jzqHDiw1JWWir37+7jV9qt2pV/iMeZLivAzrtkmC67RtQz5ko1CtzPbz//p3A8xYDtcDxD7McDLfIu5nzT/ek0MI29OcYFgLsLrRAch4vVb/bgymkJzaKi8gWY3jQGzW4hY2++5PeMG36Y26uttKjR0M2Xj1nrVhfzGVBexjGhQNdFnl2iHU7P1JprIwB//nXCuV7LQKJogkIvxXr+FIzXbT+oR6NgkuHlfxFHq0iLPuiz21rCL8OWOIupRKLY7+pMCxbHELv0j/AFbIb6wWn7rmw6sbcG+4S2RmyMw+c3Rf0zf/xuni29rc9pmyoiITuCTXTK31nFB8vHjopVCpyMPpa2Q6huauU4/qs3Fc/EckkSC0n0iod6gs20lXdhPpHyYspJ8Izx8caTCtBzCb3YKE/om16qygpwaXB5i3m37oSiKwhB/4IbzDdEPeSPVxoLS8h2hcn4aomPeMLMU/Lxftft7AnXcvHCAxDCNZT3ErgVbpjfxUr4Js50mFsSpSoJLLI/V/X4o+09Vc5WJCxzm4p8s2Vf2q01linWFKfB226lSfEU+xTY7YIf0H8DUgoqSfhUnWiQd1BWvGbbo/MUEgEcPPt2bw5N4BQ9WRijyhZWDWBV6uqNCjfM1+B2n4Qe3mjoRQ97iX/ywMbIRUe+6gHtde4YDL4/wPDF2qDkD+QSXVlb5AQfBzQTe17sCGHfrYIknt0uFc7N4LperhRLJe2KXCiZdc7mUTLcsHwaPT+Rvk38jfI3yb+Rvkb5G/QWQ7iiYYrA4zyxBrNV4C+1XTwVZ4zN5kmJFqzJd9z+qXwF5D7wEQh+aOaEuE+IyvTQPsDqp2kpxN4ecAszl+JBcOAVBsIZ137nnVYXbS8Dm7dE3YCjRBkr5I+fbmLRVTuGkcg6ptvqtn+cLc0fTaBHEOlVUca3i0LNM4QqDV/Lv8d4H6EMz/fR3W16RRyxTIRXaEF2fqS0Xz6uFEy3ZfcboUmN93fQYurN2S9UFNYhqSxn3D9GH+7hj5PxWF1dMxOm6RnefVkjC3OLsq+rhRMt2X6XbvrkTt+SaP4OwijeqTZ6dRf2yY7n18tFGUrFqydDzHIovn1cKJlsSbIjHBvRTmmXNMaJCC7P1JaL59P4guwAFlrxxskw9z8ELdxdLDP4rWC0XccXgl93udKuTITqySxNNDHANK79HWlD1nj2a6fYn/VLygtflupggjWdOak+PUQ56caQlKomUJAovGMgOSCfy7BOQXQiv011c7jytganUsd23lSrq0CBKatEAh2UnOO70SRJl9v4FWEuPeywzxxPlztQuLCnE9J9/D0Qn92k/Zr6z8B/Xa25SDWXN0Yu7t0RI5sX9cBKbLX3hobYb/Gg/Bs2oHn/91KVjk4YypZa/cTJd/NDCy0Bbn2mhcEV+v/W7k1jdKXUu5L5DF7b4uKdXy0p3uLF+SttDY+fNf6j/28unv+4CRWqukZ52jhJ/O+/Lcp9BuvGmkV9Vgonw+WqZ2LUnm9ukKoxMoooBtrDjtpXcFRiVzssAjJyisxhxF0G/WE0RApxO5AW92HwtN91fpy0LGd7pFCQTyR71Zsd3QP01bHWsrMXfMEPxuqqgVr6BxgtS1qO7fjYsQw3qJ2XK/c1/vrN5aXuDkaaKxX8tYKFSnogjXPXmrEkK4zlyyeqM+3ioZkCDdlWV5R37MIx4OWZF/urwTgnEF/Pnr86AHjXb51CFTlrJyua9vPpia1TbeAeK5W3pIE4NQiGAEumZ6V5Ai9mZ0MO8+wvw1M+yV13LNHdDUAT7IJ3fC0STjMclVu9h5ittayJAnzRPClLCbsXwtcdeRe6i4DArg+sPRDpqalqfDWqSbNqn/pwsgiuFKZJ2JpQw9jSlj3yn8Kmkze0rgPcYeeTog97uRG5VkKsM7H2OqFkYAwabo+GS/WaHZMD2zhE8GYtlzOhKQsXYhFTzcNHFBKEKTTyrGxKOESIj+E1uYzBtlCeRI8ETU3eKe6ckxble370xSO0kKDthkjV2pMJAao1WE1tga9NafWYSxaW1omxhpJbmp++1Qtc9PL6I0MvYHoYWGDw06ec+JezEQu8UKqsLGBNFgOErZIDryCQtaFeKm8COJMwd4obnZgN2AWTuYQsg3MBYbmdf+stmKWEvSB9exRMxOyBJbeJ1EFAYgStldAU5qPzxghmX/Lr7n195e9zq5EMs3jeAKjJWEs0UjdkU7tMPi+Y0xx/fNVtt3Y1zF3/TKsXetC1s7S5jGfctpaxdwGKz4HVV/BtGmdQbbvGO0G4jiOGWDcU/5JoNOYOu/pQcOzUF6KTZqVXYtwRMiW75f0aYVN6cictkM0bTJwYbfUCSN8HCcU2kSH6/Kq34oIRnAzfA8ea9cRfEUDSwxjVG5jQ3ZMiCT7AhjZMYsvSeCyF85BLt59l1SNGytOFdPLZlt+Xd1eIsgLaMbikFtLgBEhRvDxtdT0V/emVvCEoQXY75/q/18fMziF+yV6hdFq9488Rg+FY2oIfMZiYdL0P0ntKMZdA60+ZJsBVNb6SEnR0R37nfHviCBOBdQwbyKTPu92FUnHft34nA3iAr5OtJsQ6HxdzozdN5MuGoV9Msjf9nlYgT1vENIDy+ZZjVVNkPT3YnDe01vDeSAkusctOj7bqStf0pefigXX0Lm+iDMqL3I/ITb+tvYvMcBFqgk1mZnWOc33WHYmilpk4C+ObZtRTrWTcYcOuZ/pk8nDbo6LPUFbKsQJDT5s7jz09XbEkKutdt/m3qwBjwFDjVpWh41pcKherhRMt3DB6+2FSWgCLWAtRZ5dn7Y+vqS0Xz6thSOnd5Cx5fhFiCW8xFUtGp7/mSxxyJjZdMIlD5+h7HryYrzGLK7kMNTIOhHQBSn6P70DaDNrIDwc9H9trvJQPtsNGmimJWwB8nMqOzEmBPCTPPyVaeu7gtGJIfV//7NpGf8/V28HgVB4EgBK0UzhhLqD7zPcT9d6L4QK2Mu11Jq1fpFGTHcg6mnj2TixpP3guVqYZxmPVREn80/f6EitNh5z1Bu/FXQdvBNLkTut6/YbVr4CdmSVm+jvwC8Xm+jvL+TLCz4SMw9pspZnpORNZl4pHiHX8Sik/NeG/L8wiAjubJebujkZDSzdYnzu6Y+gAUr5UxriSdGWfK/JTcqWO+EiFLz6lAfFHMW1V2yxNq2WpYo8OZgrM9HC88ZBHchaBvwXL9tCYNtoWqOY5J/v0X93Ad8dUeU0J/i+eOsz329KfFMBNqQ7vBC8rSoZa8MiVl/BHakf4l4jSMGSjrJ7/uKCn6q2dPH9UBP1LYhxgILCuaJhrr8CrQOzogozzVC9FpJY/OIg0WX6cPjHPae1KVgcouF2r02g/+0uljxRwvLjijBA4ftOpQl0KbEIjCF2zK2d7uM0oG7+VWvfp3hcdtEPz9bgI1TLP/FZgshU4YPTpKoGr8HQPmb41PpqEPnes12JfxK5G8kZ7BxxHvbDGQEO8wNAVBnLaPMp6G+HjugX4OBzi6dAdBqiW8LdyOgYhbM/vwNhzf3oo9Wq1aRxNlnv99SW/ei9aH2V1rORCgO4/eNFd7Qv8JDjac8BZKFDHXTdH4I2vfYOXQKB3Z+pLQBGE6hIFRkb/LI0IRC4hw+1ujWxipktF8+rhRKhI+RbswEDYD+N8jfI3yN8WQHm+Y6bcTnuhfMf/mg1QNriNsYujF0YR6rYMVZCTGcHnyOH0ieCHvr2aOIx+3xxUlmqtnUDbIFhMQa3Zu1+Unc8EYTMA72wpBfoPKYNsLopGWIr2mX1jzhlps2/Bz/YY7ZkuUp2GG42xd7mg1QNriNsYuYcYWDyh15Hk2dVxExiYwvQPCEFDTOXw1abQEXYQdy6t7JqXQQz03lh+ZezXXpnCtqXtD1bEbmLqTkOs+Bf9cSkjN/fKvfNHHa/UWujF0YujFbf+jFboujF0YujC8dssOPAMeNDX38uteyal1HpW8WjZw59nCnmNXbDjjIkHqdAomWvQf/SJ+X9wcl0ptuLR9uoycJwSId6qCC7P0b+/CX8M4pIFsf/mg1QNr53qV/MEfm5joeZDP4VAUheYUiGP0IZpDYM2tfS6t7JqXUelbxZdSWXfVorLz41brq8SjxqUJ0x3avNpCVer0xwhUGtK/peJSdfIlvxBPzlhK98o01Q5L7S4VaykyaKJ/WUzs//nGJeU28pt5Tbym3lNAP0H4NEuL6YqmZSjVPMxt6oDMhRXRizlflIEaAZWdAO9RK8CNwhkGL2C3rO5R0lZIFVd3NB1oX+lAjG/9rimEwQEPbv6ZE197u+0u71z45CFVnCMvVrVoaxpkidLO/VSRJqBdLj55w2YNR0p+Rln1mYqv/YfxXAF1hpIQ/XNlj5FjTsliYhqKph5grCTa/lDmSDemCIZj2KlX28gRroks5bM+Ef8MzZonYqaLv1PqVX8Xfn7os+qalz4/lTGnmNtl+n+iwy+DO2KQ1YdNxbCr13N7DMWS5xhrTiQUWFN7rClWrGdTdkedrNBNlzgByEeuFTpegodxzLRYHc2M62voP021UsgQEAyZrntUZZnZqOjKZu0wAKLkNmCAmGjQD1Wj288Y/tJOSk/YVmLVYBF3jhsgshM0rO2hUfldl7oBaqQwmMw27VFkHKpdSrzUY8GsTOoU9+ShQhccjiiXFhZtUfdsBX2T36DOK8d9Ng7HLsvILL/KhUnGkY12IjUCcqxSKtRm9xmeEEdAqIzwRQb9qVsFrwxkPXywjSHhDQZQxBUMkkENAPfRJQvgxppayLsNRNgJ5IbVapV16CMLl/f70AMywojXaXUC42ISa+6K8v4+wD9NIRiouzAPwdn6LNF9CSyMkpqGZx5kkvoNh645jpT95/FJh/dpRYjGbTmRETL1RujpmEflG9akVwO5Z+JFUVvW+nJ+Fje6/2flg/GhTGEf9XZRx+ZVU/5P1NUoY7olSFOqpnBBfpUZFhGYgFRCJW16lUYV8CkTgXOb2lQzebEbL0dxmFJ5fKuCWQ1JPSvMh/psVI8FR0bd889ZxeKn8QbgiphwPUn2tMP/Y16yD/EvLgc0oLaUrK0Lso4Adt7H4OWsrkQArDhO+9gbAJEpG1/vJnBngzdg0BIT+c5aHxIvSikVdld638f8s8+SgXLHsnhvHlZwRk0TsDUnv4tNuVwBiHZO3p4VHR7dBNLJ8Wr3z30O3zF7mmNNGXTouYwUboYPsprXgK9OITXdmZ7/b3B4wr6yanioK/Uwf37/hg/U1QfaMjQh0HG9Yk2fJ3FYW9S1WrEPaqAy84L/IFUg2Yh1f/F5IpIku+2FdLWV+BJepTpMQYoDBapWoaXOIKhphgxGqEZ7AcLOKlcIprfn0NpvrWp8rblqrhGGnsPPckt+/gCIrpDLrPwlE+uabxAGcuwPV3p+sm03CDtlF7pg/5wkQ+mPnqb9rzKwWzUS9rH118LXYCUd4+hvlNTrX0nEM0izrnUXOl6DfhQQ6Ph7FyxQV9q3vMlfsNvs0h1ZpzKVYs1aYeXZ2ZvasasK10Wh+uHvfsQjKFVouTCpd3WsqR7FmAI9zKMUn2kMMd2v0t4vCM8o3ewR3ppoJIxXAljfBNDUrT1qV281aoxhFqLhVi7og4aNIjP4W/Sl1fUAFCPlfr1DPQSAG/3aL28Jfo52cH9EsPAkDe45PuLMEDb0ZrzDL6WhNJep+ph/eP95j/GfOkkN7RrHoRgEM92MTl5oo8H8Leod9cJOqz7fAuRbZf4wjlOPtNfdO/OJ6q9B7MKV9wPqcc+Pr7/9kDoo754baYvfvopEhU63vsLh7fJY+/+01rF0j++6fFZ2CGbyOlikJ6Z20455OumxnveoBY709+8uygujDzHfgWVqeKqPdvXl66pxqvXCIa6gpl2qQItXFXEPjey37eY8RzZYqi0p+Xxa0yBU0qLe9KHi/9sYoR2CRwhGfIfZzQ9dL7nwGw8kjFXBJ55dLDLvyyWmZ4XQ1jj7HU6pceN3UISHHOrfr31aHQxwiZu26K5Kz1GoRwqV7Cv98aNQ/Mx2ZFcYLEAscTkqk5gciIag3tTh0tAl8QELK1r5GWSNFCcZ6tce3zgBYMIiT/O6FEbjp6k86h3lYVjBkL+HQFCnpKvBzbX1ZBk5IIV3dsbuG58ropbLKMMWg1Ly9SWixjo0REVVy8M6bBbdHqvsJp99A8plsbss5tdLgVBFR107MomTL8ZschfTPET3SLYfXGTcV4Cxlwxv8plGxakpV1Aa9fUlovn1cFPF0VStJ+taim+RlhBpggu0DWHT+Rvkbr7U4sx7mwhlUl5rOHD/+8oQNFy5WYXXJCZ57bI+6T68UfNJ0L4DBx37PHhTlLn1aaWvoTljF0YSQhegHaoz61r88KT2566/t1GIOnGr/iPLOfHAFXc5PMYSSVcReJ5kj2Qt+dE/k13ifueaqyKt1dPm30VB/O5axHztU10TR71VmpmTxYYcyZVJC9Fb6ING5+LAAu3uOBExgyXAVbwgf5zCO3cvUf0JLPR09dFxoWLIqeIbBOHX8Buo+WjZ63sa8WE5qDUFmgNlt2/ojJQzlZTl3bR3nsTVMW1j+Croxljc0mVAstDs/2QlMLbzXbS7IeW4O44LLMpqfd/zgF4u3wh4OQWGw+rblThchTsI2IaAbH+L0FTmKj3PXMjO2d2UOKscytcotEOSkhVVfCbcjo+5c567sHqoS4TdpSLWrudAkwKP/TlWpchV/aDfZ1YTJenDR9t55dEcMWc2ExkGdLYeqYIgTuJoqGB6KxBEpeFScSxoLN2XSTV3IVevCRKj1nmV4Ss4yZtXRL5ooPc7twBXFB/n2m2oVQ0qkAlT+CQMB6c2ezOrDJ7j1sVw9UeVkeFAeU/ol2xBiLsnxWkH3Eh1uduVkllmw+lYhPIW0V3RWYT0fLYWN3mvUlrwQP8knrRUa9SWjcYqCwu7KyiX4Yfzlg7yNwsL0TANymItSrnv5QwqQNxh/ZRhuKvOlUC69gPmQelf37bD86Yl36CDCy3K7Vw6ig6eaKXHHMVRwh4yq5ihssoTJvIOHtFJ7wMIUcirt9nAoX6zgds7J6115UDDVswpLBkXuTbkkbC91PiffIQkgDZtsTR8+//R1krXrBPU5O+xDpcRAsS8Ph7J/4+Z5AoseTUX3RWMCUVVOjk/SZgzI9UrUZ9pB8/y6pecNNXAwUOcX2Kxk+IgV2vazep/L08g1XvxSYMTFa2c4ivnPoCmNl8CUpvJcLyieUD7ugwThpnHKSkin2cvjDciof+w7zZO6+htyJJsxUjrlexHR1zrTuF1TI0e2pwKkItw6Xevv4g2vRQAH9qmY1KtvFkHgYdZyrumTFtNxaQUvO3yTuvnKfD3825YWkcLXzfnNpPvrA6456ZaSh5fipeSqf/VLeIrYSJbNj/gDMytkQlSasERHrv0sPTyFwX6hvxFmritqQGcPiSQfPq4VLrPLs/SdQdhlEKS0XI6H8QjRfPq3r8nKB3Z6edE1zyNz2Y2+LvflzVwomW7L9P5FjUgf+6a2qceDA3TDPOR9+BL7FoUyrmtGp9P9gURzAuJWNp26ZEqrGH5wQQoSaErs/Ulovn1cKJluy/dzbmfxvkb5G/QWcAs4BZwCzgFnALOAWcAs3r9WPkvXvyp8u4VgJTlLvEZzuVHp/I3yN8jfI3yMYPZv/mF8bwos4m5b2gfGaB6J9Jc2X6fyN8jfI3yN4s/XFX7for9FZ8RhM9d0XRi6MXRi6MJHVqGGG414nPb7M5abJ76B9A8srkymAdLnHsIutcAIcTf8UxsGjhp0HFYfxF6KqJEZ8Y4bisDx50J/r/Mu4Bfd4cjCRfcf6h1eyOFZg9w4dGHDPjiopQ+1JFVQZfKFyBA6Srg8QXh1oNOUgZtB8R954flyoHsKzOD9eb8ZgRDrrJ0OUtYaFjFt6JMIpN5I0pfoBVitYR6erCwtxeWmGFFNr7edSHutGRuR492B6g3CKPjH6AMNXNOlOZv/UV4PCczoCPSjT7waErYRlh4JtSvCzaT9ltydxNn7KI7UK3alakXIlRi5yNrPGAji+4kw8Xd/XNEr/Uyf+TgwXxXUDX9hP+yyQWhN7dYWDZbjHn+h7c36TqqZ9pGb3OMjSoFOfRvrH3YEAUm6HSlUCWi+GOhIXMsfiu+pbx3BSZb6bxR+kb+8v097nGumUanECuLC9oOMMoFlNByEHNqaVwxn6frnB8NtIhP/yP+lPhKFBMsbK2c02DlrxE7hHRPD63a7IO4ZxRRFhU9yCW2OKptuCYtEPTU3ZSSOOZeNYIas8+GtPpg4nwIg3IirEKK/lLmjfBh5DvGFNT0dqyWDVZhnn7dp31FsefRIe6ii18lTbYKDGCFPm9U+YY5BYT95R6GKOlKewE668tvJHzjm9HAJnCV4VY/7ODI7M5041YlT6nCqfeYpM60xl++wSvHSqGevfs2FtcuXriQNkaqKUENCR2brKgKe/CEjKs4z9SfgpOcuCy+8qs1T8XhgtnMo04I2DcannRcUou123U247W7bsh942qHsnHPU+6fVfWWHlZHyUxF9CdH+rqxq6erHjKgWbNhXYv/awPaBGAA/UGh7S2wcUugBfPtA11o7Vz735xMAKOne3PEVJiciK8FecU2j3LA1FGQ3TroWt1LTIpIqewOCa3agGe+ynZkj5M1/71Jz8WuyElS1FvtOwo8qbf7b/bf7b74YHSqaLVu+8MdTvYLtUwOWD79vE2oAyT2ml8VDvt9yYneVDrw3nixW30K4alLb8AdS6D6oxuYaJTwhjkxEZavziCWFPag0gTrXbnbcQehCnzrnc4f+NsbFwvz//H9qSuFpInxi9TZKlEXBUOUKZ6pHxAt8wB2fqa1vvLB4MyJtl+WDTe+HExXO0i/JXNSV8N8CUcRyvp9GEEbj/88Lz6DpUOMkUrzAWHN28hEzMzRqEWmU48+fPqTgCqB0Iq49B/yPq4M7k4P3leVkefZZVlgoxNpQ8QO3WvCcuqCV8KrqYTPtP5UH3ySeboHPbdJiQn+UabCj+7qeuU5S+sSS7VwtjwLgIrqvvJC385sMdQI4CKZK4Ig60rsQNG1mB8C52YufHT+STyrg46ocZG6fNSQmODLFMAn9Y6BfBP8UHZ+eYVbK0xxQZECePbUvcFc71JaL54lEDA7pu6RDxvln1SbqCwpDk+89UX/zPv4X+lfasf9TOnE3Ibwj76uFEy2V3ddS/ap7AoatPnriLiF6gTO3QBOkEM3DiKOhr4bmWcZSzSacZHitP5a5w3e1Yys5UBCsR4VIUAS1GcVdsCm1EXRP9B9XYO2JmMqIf15iJheGs8eTEVvlz4amtXybXm8b/lCEGaHHdx+cFpWiAiYiBJfGkoh6TP/KJoN51YXJQRMh7H+C3lQZrGbNrktMOw1D78CwW+B7hmVPhRIIbcBB+8vMWdu6f+5WxLoZBz+Yn/vux2UbmsWWIWyAy5nbWYPMBo/5rBOgMDuxsfSv1yhngLok0UgAevDECgN2zevohOdGy3Bqc/99P21QENjX2a5XV9/d4NKURAo7g/gd3v2iJwVgDwj4qAMBIy3ByPgJUMTmfmts3BZvaC5Zakq2ouFy52AoeBUEWPKv3e2ie34RU8FaD2Lx8Dj1emS/ToERVoDbrWjEi3PbzouJ63EjnoUpiNnDAJXZorjLQmZ6fYWDQM9lc5AA/Ha8+X0u2yPcKfB3IRllTk68Xzcmb4Z62T93AuDDHjknqgq2PU7ThEWJ94oAcCJ9vg+OC3kfP/w0n+rpx4ksk1jvjfSee8pOWX5R1ebLzn0pa1toQF68qZrsJobzg01EGEkbAZJM6h3f93748R3Z5+3QF8o2mmxIPdSm0Pk7W7CcNuCFb7HTI31umtQdrQBNzBQ6UjYPIL/+R2WT0nm+UcbBNUAVSgyG6hOlwpKT9vdL1elGmbb45EgEcSQsT7P4LHOiLmlIIQ8rhJQ2Vg8hcZLQUlmoPkcj34XIVczC1kCaMmclOIXnvdVO633bEDBImUA9WZhV3JYyVoknFp/vbl7Q4wEDeGB0wF0+2lqlG97HbL32LxWbVL2e2CCLh/Dhi0N4N4pHXBNVDDLYAD/Gt23AxmCwoPUTK3tYIJg3yEslV4p0oFSYV319M3Fw2ib4F2wFJI1spALVIwDF/HXfXC2nvqPhkYANKjIs5gIth16zriOsK4v6b0CDK+G0S4N5Sixk44OH3CTpAOYrY6C6nCeS1oWvvDTYKcSPvpSZewHhyNqotlSwz5cIz0+6ckq1wsPokWVm6MVxnn6/8WK34Y5F8PpoRHcWMw/MEneHpesNhTCL0enKWrzckGDJ4q2OerCGnDD8jxJ62GDc94/62imk2bnBaIwFQNodVAbTy/SCc62Do0JfmPlgKLZiCTEIIA09zqnjjPq/DLNIlL/uyZ1umgTlUEmzcWmdGbLVu53xSYAGJJB8+rhu9UhA8/7/Jgi2PzHkomXJ7tfkb5G+TfyN8jffL5G+Rufzy01JeRtuA+J24r39WEGj4T0KWZyshvWYZ46ET86vLZVH7mUTLdl+n8jd+GOvA483NFEF2fqS31OWKcsU5YpyxTlinLFOWKcrI4oxLqsH2fqS0Xz6uFEy3Zff5efBFZNYN8BrGHexEBMqjkDij5hAGGZ4HMO0GS12fqS0Xz6uFEynmmYVFzWk4fTvzBFZDlA0y8xrSFukzz4qPf5n3IYM+Zr0cQNdLizQQAyjRUFv9gtAAnEQiiU7jUrXi+7Z9p5tcSAEppj0aJfo75B2jm28MMKPldYdWHDMLiWVIdq3HsK24Mr/4yPy7hixMQCDwr0Pn2/8y4+unPj07TE1D6+h5KU6LNnCwLLIveApVH/E17N/3Wkd1/MHq0GLfY+O0d/QzOMY9HUC1c6yvHZnRpeRBvoeiVHV/Q7L159TX4JosE9vIu/T2k3fO/9DLAYc0n4tCOl2iXeWgriJLoB74R+L/PX5JpbeSXLYgpzU8hMWVp8PVtv1p2NvoJkF8gITORQXGj1/bqbr4gPjV1/sxEkxlOtbGfAA6vGA03pMxxszUzA8odW88vbh+eOFGBhmjl3VKPQLn/VkJ6Hn9oKxbtnmCJlyx/p9hC6VC19H5aeo/3+sjwvNIiCtU2NpLLPovteo4tOBBoCc9+3zq3Cn1gVe8rhRWgCzLvwYHQNALQnzaRoGVxLHTDV9zhT07ZOPQbBZ+MPK3Tb4Iii7vZdLQz7KTTAmA1ofXLjWPrIHraWpwLOYZV8IDZPU3pQgjazUPZMyPx1v3xGuBYBsz+Jh/vQhJsSX4kN1pioSL37+K8Zz02+q0B+BiJOoY1KytsAtd/rH50jPnx23zD1WBqAMXVoP2j4vTVn7khrfmGnLET1HoUW4nQG/Tf71xQxaejZ0NM1VaYuoCbqGyWfY56IgQOGnih6h7Gm4H4TSNmGC43bNDRUsaFpdedTC1x2FU+jzRyBxRSlsAFoPjxugXJhFjXxXZpi3ToamI6b9Cf42VaFw5YRLhhzAqdN1ZGj9ZfwxOwxMaJhGE62RGx4JYRXEo37jNwQeqBChAxfH69TeOXQBaHIosG6dN2xfRwjRQN5d+B57Cz3BTxH3f5A28sl2APYOdSkHA1P5yX2sndMsXA8cyAbuJ1freA3qlkX3pSEkvFwoN7eGDjqnbO8nbkRaNcmvwPfJGnze/p9OEhB1+3Bjb7jfOmw7AXBpWDkw8qtNIC45mzgJibjITxyKoiueZSgdNCWLIrSM7/TdKdNFl2JQgHPaIc6PycxwLbMRFMp/2pZqFeckx2puauIFlXwyRjX/fl+ya88EK0sLXNdRcjkJ9oYTHYtBxDIPORpGPWaZrmaLPLF70vtPMlrnI3z2DIzTWVI3TAIVK6+03KbOvIkeDWSVT2TQhOV8HASRzTCIKFMufFrNT3qmMPSHAKIvq5UBSf5iGX+wM9mOph/CXlhIln5tYm0zSNp3g6dYtU11mNmBbzNZSeSfrvwmX35v1Irm0nTndix0oAXVRJvfGDgscnUzB/BRKVskHxhqLQKOJB5s1+ME1FIT+TPhQrot001X919N0r8bH9XPLYVoBMr/8TCiUYj7/a6FaC3bv1fx6yIUTOhbR2Y0igx7coAh20+dRO0yaeWJtlZTXpsp8YRp2hljEoSMmAhg0mYbMvsXVO7xPHD1KNbj16abgYbG2JRpDVGQX+CkQ58Isppb5x/59Rpl2ZKVRc8jx7Ey1cMyT+EhkSI1PWxelU3X2YS6n7FPOAr+oKPU8pYbLJt8UFmBH7IHRfGTgF2vSKmJ9PQhAVKxWq3X/vYaZwi9oDpfxQvsX9oJMEnVZqFqfhEM0uUagnRbOwjnWVPquFJXuC770tQqYfNITC73occoinfF6Yb40BMaWXkh0OcgqIZPTpRLG+CSJpRY6npeqWtnyeFBCdHaUgBrJqh0/LmRSs0oNrLKcSrLK8M4/cSYezQOdpZ2LOUdfrwGQXCWx5JDicRraYTx+I8vjTW0t7COLRTR3YCVOyaCQQOlq1QV3uKH31r14Qbnjrvup8e/PeSZJVcuPa4AZc7tQcXiHStbV9Z9aW6poOpQ3dkP3/iivywKGHOD2zETxHeDJt5x9TgJUt/j5TcNMQV57MswdIqWToXAsvwVEijoRNBl+0MoQenZNotiN//Lgv9Yzsmsck4h2G5yicm5cvVHOY6B+nup18ICH2CR46PG3tp+IxwN9Rwv9k2ISOXB/3UMHbscRxxULew+ZYKUF2mYWrImqvvSMH04QR4lq+2KY+5Wyg6u0IUkUTgtZQKJodLJaqHHI1LDESpwRrI8ppRa6MM9leaFyLy+eYLzb9SHCnyAQMnu6lmIaw3hYgZjcwZ7jwjMJ2MMXSa9xM5YiTy+Cc6D2FaYKA1c1BWQoUeFIZ/PmiqbTuzPXVMMcrkQ+Xo9M7tMS1UYBc+sV7XT8YEUgcemonS+qUjhvvVsKc6nU6IrU1rq9luY/EygcPG2dMXUskZy5QhbkdovVmkPIZRMt2X6fSkbUQlpBVPvZ/sdLg7nOfFY4KgvPgvN6p5K7L9qJpb0DYJG/8jfI3yKSap81U7qaxvWqGSX7PoNxrYt2X6fyN8jfItaVCYDg4dsCypXhL4gHSNz6Wviex/VEtUwkhH1oQQBechXxrp3vyU0yTTMXtEvVJq0hdkmKfRtiiudhCAoyj5QxpDrWL8x/+aDRU5qXyO92H9gB+zV24Ixh0l1y6nCDWPvUPTDUYYmANESvA9ByyIp4FKm6GgVxxQK+ZYJBXt6wKQcYXsZ6eXHnIfUo8wn+djJbfevr3bkQCZLTz9CsAGjYQfQam9kXUXwTnHGBmqLEi4moM8a7pxQzk437sFZSBAczIM/61dq/FftyQDLpUDgS8/eCcmGOh7DQPyKxeIUTu7NNqXiR4Q3Xqb3iilYg7VPb8Po+tK30E3IZl2uFKAGEr0+JdRof9LhLM4zOzlAjG+UwrIfxXSZP9MgYkNnloEt9ftlke/912T7rHTRYBJJT+oKmLMVlo9q5ZSZi/bD3R8XXKeUi9ooCRA4B1N/1+ZJm1fTRVreFv9jaRVJuZimKbrUf0oNBChztOki7Rm8tzOyEpCDpbReotjmgs4MqfKMSgOjQDleiOfE8rz6zvAaHWHKxIE8gJGj/1/UuHgXFXcsM4Tv6jAlAnbfPCw7SC52+85y9zTfytjq+jLH1ePA9llyQlebGA98gICqe30QIPt5r0/bzHTKs9GKZDMPh1XcmmHevQL3gu5DtFlrsJ6CnGuw7PBJh4XXDKHcX4FwXby4J46hzvFg804En3ASWjcjLRfPuloz0/mjTo71JaL+ob6uFFW15XrPR6IJEwqBYAR2HozjD7jwXmwrrUTNz89b2qrWlQGWG7KfgQlgWYfXAxq+DMv7nl63MPGbvLB+HXwOFEi0y6gqupQA3JsF6uPpPagoHy8/1Kxkw6uUkJYL0NNG1zl6U1EZP5c/4xYXOHqdthdvlttkYfYfFU4m+o0pPbbjOQ1J3698Ufk9TeAo8ksZNzJE5IGQnu8Cpmo6h2TivtFl1HweEoCqdKPHyLsX2xwIEI1U5+FW9474PUlvwcMA/ZuLBFg7BVKeAuLCQpIdHoHj5UVz4vuvCxlFxywgEixsbYQ+pX3LvWiGfQXIOdmYp36XMJCq+yWCT/23QuEQxqQ0xU/AZ2JWtk61OSfd9ygVJWjewTGZsxQBJSXXu+X501SxrmOu1uKVNhBK7HJU1wvd0HLHg/EzXQuFQ4pItYrKwztfm5Le2iy5j7e6HOCX1MQmtiR27xq//9xBY0kN89IZ2hArLyD7sfJ3C2iJzEkTEmJpYPI+40a1BmK70RbhJQXz1m5b1vbSicfLN7aFJfu+C6XfILydcUcd5re+o/M3LVCtbbQ8Q/vD9Zu4UJFcJQFO63EbXQb2YoS/j19POBrjiwQWvXnejOG46fVwQqpPh5KNHlEgSignLs/Ulrr+RviLMAIdVylWIWoLj5ily3+kHyh+Fod+zR7m2xmmxoAiz5gZhj5ijqNpXZ+pLRfPq4UTLdl+otuZ/G+Rvkb9BZwCzgFnALAfmcAs4BZwCzev1T71utEclvzlB6Eu+dXhX/+NYzK82+DVsEF2fqS0Xz6tqEHP8lgfeZTH9nL6++MQlnK+6LnAVgpW2BzTp/I3yN8jfIwMcNQQkhrRAN6NlosWprt4Xg4D9s0TWkcuDB2I1SFzjHTu5oxEt9vpwYwpa3zJczy4r7Qx/HjcXGBTH/wcV/93eG6bXxNGPN2eI0NENBoJinJR0+Svca8Tm4KXQglJ5g4E3YhAZdeXXYJI4wm/Tk16hcC8kK6WnDAusjZWaaDGorE58VclPMLWKOWyn7M2/5FQHH+YtmC+YiF6ZK9TmJWqJ1SIym1uKCCyXTPZ3sVXY9FJ+hPfTZ3dCnk8+YBBf0Dp/MYYFpMzsyBTzfBc+Qmc5IzS6okN4PITzBx9nkeLxIwsMHTHINq4fuduMeLF2/GG75/L0cnbvZA0tT9xFEaLKUvJPUrFSbPpPCaaxoKnmcLC8cejepXT4FWNfQDlyph6GmrO3ujJsQ2NyC7JGXyjN4r3m1eDfPOtAyMApHWr+je0uoGCOhkarooUA2yXORLPCeNigTlORTejgNghdGUEihYJkVvq44BmO1Mslz0q94Dfb0nO/Kxf+O/5VNHDSIq6HY/kq7nNKK5bAUgBP5vFF6hBx39FiFFvCqX4dh/xXWdD4JQO+mA5EgQBBj5LuFTtzeU3i78Sry1K16jfIdizObrghiOHxk/nxD6etW6GuE4yxUxmexS1kJqFc/VD0qXILnZi0d6oBdIdU50GqFuIVby6wyrr0d0fVx0r9T34UdwYBovNv7s6UBMjSgjoojsQPQLHz58cpEmKfzVWTKF1QRRz6TpH+uAkRpMgbwjneXWJ2bDSU11VmQcLJpWPr4qtmvJHpb0p6n9CvSeFDY6VI/yV2x5pX1xLyeTh3zPA/9NCeRB8xjFbdA0Oy6M4Z3q1KmABF7OukkVdNt8eMv1euNiTZsBXjGV+EL9Sckr58Y86WUemsIdrSca53NV6IkUkd2ocqhbSmgCrmezaOLAAhxk+DzDHe9oJ228Iws/SQ3QEkyeHTqDblGUdq4BgPdjkFuZDFJeUHlOe0ZZqaCLKBsAbysXh7gf2zTaO/AJYHTTQ46LQOQy4dBvLmOWP0pzINokhA5M4Szc+dbGjnJF4MFeBh9v4KmU77poMyriFqDnS8N01Pf6b6cCCZhu47DlwVCzSPZPunCLXYV5T0WLeHPXIDxrHqgkrzIBJkPjxZnpdE1/8fb1V0ZzKzH89fLoqijVqaVsh9WTgGTk9D7KSBnFZomoGftIr7OSucgUKcnMR4/BRNsU+SLvbb26+6fOR2p0uthpFKHhSGXL+xb1zKA5gUqyIZpQ8Ig+DqctBoXlgIoanT2bUA2KcriAU9NitkOef3kjS5wP05w1ogrCnXjXYIkiHeXBJJP4RPsBJW2dlfbWW9IHV1htIXTsRbK6/Q7bgz2hWkkYJPWHbsMIb46Ac0Fgyk8cwJdKdnKMGFLYewSzvFf3zoN4S1agd/B36Ogj+KZkD67Wl7CHmW8jFvzNnpBKPw/UiDGuB4/OrZntKvGzpjHZJlM8InbZksjrx7oeYfHaNFvQr3IsdC/GfvD/giF3Z+dEfNDmry7iHqnP7oLUJQhZkYQCozNcnGLZ8QklXXup9WnCwwRlH/HIsNkOFmYobUpkuch2x2o4vYCkRiU9gaUPYVBCBKB/aBxbT6XuQ8rzSc8sSDdCpzEYfFTX9lGRSdbYmRVyZtzBWtNOosi7Pz6hPxxGfQ7Xl24Y05IAHrBMAb6BZfp/I3yOF33p1i5L3DjEYz9aNwE3lKyEMdlpENjWiMSTpnOCAxGporveoH2s2u2TzlluJHfEJmDmeggDfhPhsCpVI4kwsOhbC1o+pOfysnJsGtSoKLi6N2s5/MBDEBf3pdoS4lZ2mE0XDMDFTXzasvHIeaVmYQqx95PV1HoXxE4WKsk13yfFEi4yFKZXHqeHpyEaTeFx0dy70St4PLP/lO858MJ4O6l44saY4B+MwG38EpjpINDrTC0+nqC63zHwQMW6yzAgg24+a50FuJiBVf7wFBS26wOk2rPvJPVnq975YdcmpVD6rQPU/Ffxz/yG1+5YPJoDxcTyi6kQbFCSwYy/kRjPalQrHR5cqun3BLHKbyNtgJz//b6Q3je13B6dDZNI16VWz+q74vmKeLmkeYHpUmHBtM+siWwPBk8iid+AIb5wdHPlBCrGn+sRHxS1ZIb8KOHvT2IsOK0l7uJcoinCo2v0o9M4/OcvQeW66nYOz6SCp4OgRTGhvgIOGa+mTtmEDVoURAo4/CdHPwC+uXZEWNayu+N9iLhnBn8o32cJcsQuLaOSH3aLx5A7OhkFjNUMAwaoVD2wh1P2zHT1TrgBVUTBuLCh7Hq7zIDs6lKVfgsb/0Oc8RH5xJjO6tAfp3hJZIPVtmzazaqIvAXkD/AuRi7S4OtKFaDH9y7zXXrX08Px9nfoIlYvUtgsTCK5u6CaV/P/G1Vg61CAPBFK3cN1DQeCv8GUnP58d9KoN0vpDBmsHSjZEP69fJkaqeMxGkrzB/8q2oFnwa4VwySEAMNl8raBlnv3ygf1+pbLJXZ/0n9JgHe2FSVvj0v7GbWvG3Qs3Fx9UIZoQL/hr4FJaL6JJB9Bzd0tY4BAnnJB871JaNyMtF8+6Wjmp5vks8ZJE5WkSy2tnn86/9YYYbiX2JTzbtTDR8T8ehj5TMEUkXMmzHINesqOGMo2nBo0kgO1F6GiZutF7EFiv+h+kA0xt5nRR4V43LtENR5pZc5/vRs0jVLqR8gH4nRxJ1yYOB+dU06DHc/x1B72RN5i6+3SZK5LsKjUBB50j3palUOjp4PNjvIPAPLlrYPnVPTKskwiRWVVmXavpV5aPQlkRj6uaodkxufmN5UZLq8s0uOI2CyQa7QRg+6sn5LH11+ihmHIWQcKDroazoRayY3YPdP0KpInJCzyikvMUviUwYtmx5Yze2xENvoO7eozPP1FjbXWvmJFsZzSOFnWAISCN5Nq0pbsGfNJYczLZHSvUHx2a2ikEV3q2/XbtRiam9SQDtBCxezX1EGv3jsrFjZsjUnDGF8WanCWOG0Fctsa4zxjZqangUQr5ny0ioulki5BnOtF2sjzWLjv8uYK2F/T+rGO+C0vpejJP4cSRgoldkkliZMtCVRVzmHs98ECadsQhfgP6jx4uDXRfDPLRv9kfR1tp3YbdJh8G6i+SDUA3U1F0DJQRs2m6Pqgc2zZfp/I3yN8jfI3yN8jfI3yN8jdWWOpN0IigXamaiQf2AFX2VAkVW1tENX8EEP7z+18/mUoviGYZZbFJoAig2BPduhMWOZ6ugyN8jfI3yN8jfJv5G+TfyN8jfI3yOuAWcAs4BZwCzgFnALOAWcAsm7HcLsWcQkJuvRmXnJTKD25oI8QjWnr42jG6Qx4rctaHogd2fqS0GCml0rsHzBcOcHHsPq7M0BCZR9BuhaqqzkdduYZpRYmxlkOR6FWo1KXZpe0qaBGSzIYBKAoHdn6kscXHQsuDWL4RCsFuiCttDyiv2Ni8rAtdR0Z0k+sejG8Ge2z3YA+E1V64UJlcFa6g73SyaDGE0MRyyn72gr3Gr/PuAZgGdHRX67QoTMz4G81u0SM4SOlT+0u43wFN3p6eebpRWbwYCg1jWml6UAg2q1Gx1Ct+QWsxpkqYzrjJ/Ef0WyYh0Ajg0ws/IgYpkeGdWlcfPiQV9RyxQy1tJeB8wqVXUqG2LLxPFTASXQsXFYq9jMYrEEzRjOkTFxZmhVffo+937mYKJOAUCL9KODut356H/VP8EkZDTo/U6qRtEpy8wEIv+XS+Ecwy3/5wVT/Iuhz34fFmrhkKGJ/IpIvh+u7ifaT4bNbC5Rsn9Yp6ZGrSf5x6FPdc9rghCjo2Z8EkX0FI0CWR+6LjyRvUkpK91g0bk5Xw2sMG40MF6Bnoj4IhSBQnQZ3drdJYJE1QT2W4Wm45U1M8vpCgWLs4dxaZZ7lJLqGOYZyrLSW3zjpJUJvu6aW1XU4sW7aqzIcr6INwbUDe1p620HujUYwVE8zqcAHXk/edQuLnM1EjA0Nm+14UIH6HV4rzj1Fx0M+/wcwOMu37Kz9h3yzotxFBni4IPgFCDkC77kRqvcSegnhhAZXqWRiXOgGI2vq2nsko7FDf9iX7o7+QYgvIziyZD9Yz30nvpvL7y1QS5FRm469nWLfFP9F0dvtWUdCUgvTLsMcMGJ8M2e3MvPwGk1xQb3t/9Ps5IkRXQwdzt7Ai9J7BNiOffexfhmQ45keVaFasskaGyujAljw0t/SnJGwe+CvYly9rIqMvbkt3WCzOZXNZ0l/mPd+827nafRjfLRcDsxb1LTtpl22kE6G/nTPQ+wbuOHpRG7NCRKtAkPatJU71qLt8Cul0jqEOlUpXxOJW7XYayF5AwNfu0LWTESszpU5i5LWe2HuNNiDYYeU+8QLj2AlR1Hhw+Ln0cuSdRTxYMhF6WJf0yO6MjBL8kO7nhXPmqUi01eo6QeTlSQdLKcwssZjIN21TkBCuy9/r1IgGODgxuEZ8sDLMCJeLPiLSRRiVrW/0WKqwNWUZoDo4ai3I1oViGxsPGILL3Z6wd9p5Rgw7iBAzhqqmL9gcm4o/mU1I4QqG7H4+Too47WiDq8wm1/yIPYL5XYQXacey3WcqTskYfbwqa1yfpxtQwGQM+3tywlPedY1X1wiUzmt+uSQrh/FfUUxJx6zCgkotIo/hKNp+4fxIt/SBBvTlmLoz8utd5wBQZ5WyvNxoVMZCyQTb1nx2l584GD2+g8eh9ADDZ0eFY1o8vwiTWfa8cP0KvK3/ul7evo5VzT88MRCj7fL6ScjS/b8h0TKiExVCNa0C9hMLlZNGm8h76rocUEUgRlG3wF32LzT8lqAAcAEbk0XiWlvcTRJmUwkAkVlX8bJQTD/HTkcbhCS+P6Ejr/o047Zd6XkjzpAEFtDjt3aeMe2+eMCYeyuo0n7A/sWhfSZTybXbzOqahbhdgFhvVMQDgIqXZhZcRT3bULUsvVF6XSANYgEL4El/L+qHqpkQKqqrxiU68XgWLePmr5en3ZboyDz53Gnke7Vwobr1VVJozUbyQRNuap/SiUuHYiw0B03NnuFI3j9tNSz+6CCAlPZc/yW6aKJehTGzzJ+Mggd35xkNF7xLlhSSyulyXlaOr32kh6WsIQCYrVfG+Z5OUSsW3hgjULYC+hkzgNe4UMr26YCDnDWysg7zVcfrlpR4iLKT44vRqp4U1GQM3Gh+goHMgIWjbfRCFlcfLAqrnvJy3JQ33nSrE3zMwu0LbBI53lWIHFtFLvRDDlnxGAgaJh/bbEkEW4hoxzKHFvWkxJM0jKcuQ0ILO0JnktnFXSN2JMIWMQAqJIwTYXg/GTbnScbm+rHcl/GL9C19gu8nBJTdPYKmMOe8CTrvQursiWEZFzyNTIOpV9GbMfU0sVmKgdl+YkazeNcq6QsjJD4a0qaCnqhhIGiNJEG1CTdyQhIOV95EDTnVYsrRvxC3+UtJv3y6T/N1+0N+cJxbzm/rpUJoelBjTqapCjSAy6lwWZITKjz+HhX4JB9d5ozhKbqFANQ86qdB5TS3ZftkbLrjBIf+Rvkb5G+RvkWtHrHka4yQkl73DC3K334xJ65qkDk5vISSkw2eRqmVJR/xBiYyFBQuBEujl7oMUbwDr++2eRYyVJIprYQ2PovfSnQXq0kubTHxMaJUdhiD4jWmLRcAaD2SGBPTA2hLvQsibG67YnBvWPvdr5xhhcCtN5F0aTL2ifeswxARgzZdsaZgR798+Onl2LJ3wRebzSobgjYusUIPGVq4zNlR5M+giqiGuBLaAib8Kf9+RBtyOEiNVpbIf3gqPuSiHeKXAE6Y38IuTS3jKyV87DO1kX/9ANe+9lA51iw+sQGXDUEPk1hj/+NSt18CCFh/kPqHY0DUBaW2KoAbzEHMsJaYnGQS+HszdkDblcGUde88WJ33L7HDam6bcmCl1B5Jva0bUgmUq7C3z5XHyRClYSXLbaw2VVP/wbhUJnfMEPAzQQRZw5sATZzU3tKJNh3nj8FlT4anJhp9FQ2JbA/EHUbRobcAlsnl121RZSJWYmxibTFwSIJRaOwUZBZcOFzmtifunnYsOvrGDL0NnAdCuxlBsSQYDKtdePrgvaRNI4YTba8kuuZLKXetfVuwO5r4Ko6AIxQUhv02vOa+7V310EsVrmR7lw9uRtCDz2IjdCM/raqSKWu/Q9YxTGPP3U+sOEB60D5+aG+a4W32/L/gQtewWvQDmFjKuS9K0zKwbs3yaa9cBGp1aVBj+wG3HCHVEQyxBLbL5KotALBBigRhNsrqS0bjFsWmyeMmM8lRFBR51xBkUziBNpkh9QXb8BZ2AqPg1/U0B3rwf1PaowxzDWwyZue27sSM1mVMnBb0vUG+A/WmzLmdQ9GA5joKGgrUVUJE8aIQ+/XNdAkFCK7kC3BKnCQuMkPtXkty7XL8e0p9Ie+rqtFvfvOmyPYcHE45I6G6h7+04GOhMhOZqKfMDYiCRLnHqWZXAxdLsNYfVyDlf5xMIs6+/kn9whrgAfaWCai5O82+BK+lucnXHPw3J09DgHCXov3ZZtQ+mPatTpIg0qMOHuACCXpERNrrxI1zIc4e+5vjrjNLjUU3iBjQ3Vh/+p6oH36eVv6v2Due+Ae10X7m11yPCfVxbYSsGDXdwh5sIQ1aJYKdJLhN53MeoUyv/vZmySyCUtroEW3hKPGeUDmUaijsrl+8Yd1SMPdwuatOrR09NuBJRsm9HPkBU2Ofbe9rNUqb8YBIHnjEOeu21AmeRsVH1MeA39wIApgQ/mmORc4uTSyA0WKDw7BRi1zpaglTyJXUZaWZEhZq2sx3rCktF8jo+4ImW7LxvYwBfp/I3yN8jfI3yN8jfI3yN8PbcEzruU2FAAVnOjFUh8DjMP6C2lx1AyVrbQAkQPksykCD9C2tg4lV23teJQu0SCFWkyR3TqE8UkcMN7bDOtlrxF9XCiZbUPrwPAofXgcgGOvDv8uz9Wt0qcsU5YpyxTlinLFOWKcsTa/iwfL8M+Rvkb5G+Rvkb5G+MwuOAismh2POjhw24MqUET+rqJsendTNG9KWEsXrTpPlN9kzDCW5ryLCJU44X3v757FZwSNiTzwR/CTUUShAgHpVIK8Hv8FLKS1qaiUUILs/UlbCeIJsU9iaEetNV5BLgoMEHX9eG1vuafMkTlb7mqQo6DPxOpT5LXzYgnZwSiTFjiA9nsfG37Q48rzHFrBWUd6zAA/AWzkHZHqe+RPoxgvR/sgIhNm/i/mwc3u4mI8NVmdhy3nqAADvxrhIxpiFGs3hx3msUeReJzzwXzJdbwPS3vhAWJIgLodumP2V0irwuFpm+9koh5fbVnFd5qWuJ+vs+HBT3UyeScHg1lVlsjKQsAX4ZYGVy89GxS1F7HuymF0ff447cgz1h5aoJUTeRI36ZBs/iDYkJC1lXm6hQ0yzOetg1xEthyMyZ31cqBeTJ8BZ9xwjVR+CyfSbn0p4CWAnnmmRQ7kMn5Z1shQtNpljgTwa9qn7LKV58Kxr8m7QszbnITx65/OX6p4qdbgSL0BXhgYvcsSt8fxHNwSGHI9WbdrEgvtCIn3TjHT71pqskGBATpImTofbFYHOc4z4ztHtIRCD+LkuliiAwVwAECyQNBtDB63GsdwT+NCMmkIP9v+QoOCy69+DM6hQ8JAoNlAF3cmIOUCDsoBB403sWZp9wZBjFdhD6DzEQch+1BoP1WY0gvocq840sOnEeMQRGnasdcZc/pDGcu7wEg4Uw8HD+LHVC4YFPMQEWxSt7wqUWvTLIgz/Xvy7TQc0kibMJPp9/FIBPAEjhKbIV4hjVVJrBvj6ziMnAj5DjjbSogvxfSVANKGey15tc0s3FyE2rjXKYsUmJ1Q2mKDy3XrVIdnJLcHJBguXuPc6TcGMTKK9w8RO62TM97WUHp1ww+2iUqVoPwHvx7v5XVahDQrg8OoFmhXlYlo1rt7AGCQDRPC7nq/4vUJKqfBLWcNW8ejQfn+Bk2TD74ZpVOAPfNIxTz+4RN5HmYCLWk75vAi6eV25kTHEXuhxBMOS9kD+16SUFBxk9NaO0Ljc+Dj7DK5d7oH826Ze8FgiN/pn7aJVXhfe0rhuSrwCHD/ITY2ZR4B17AeuooTU/4h3RJpoX4Yc8QE8PTvVJ+aqO1WDrITf9T9MFvgbj0oUMrRxYnspXfEga4/At/DS/OCC5ZTyDFStMCh75rY6esn0N9t7sPDB4tPq+v3o0hWezJwQ0Qbi1y7vSIqEPbucCFC7aFg+5GOn/k76JV4qst0wozFQnSsOl8rXC/gmgmD++qqE7vyB4SsQEjL1FfbIddr7xb/orAATKsBz8jLGoroS9Xw82esiwip5KvbyOjcDY7bD5PHD4T+lF7CDN92C8t187VyTfhXtPexFAQv6ruvKTIPDKiBMPKjpRtFRFIq6upE9ccjqCF/wqLmhsUYasyLhAyrMHi3roeHBVTFKlIO3IGzW+k1CeYgkLz+2NYv6ECz8ywJLMKS239T+qlEu8G2Hysj2bpo2wMSAGzZTbIKPRZmkI9M4CQQ5RTm1ViCGIsyTInReIaeHwyCuhZz8Qafr8NG6rmwlH0XooYbHYb2iFrXKyIF8ZKuBr8F1g7KbD4NZwpNaKrsIKRvaxdwVjD/9aMlTRwovvsfu5wKkqqgZTUrjwXqGyOuT/BHx57uSKbLkuR5c3/BS5LkUC3CBBwknMPQiTu+xxPYpoH5T9YeCaWHMazoxTvrMeEJ3RKLBE/6QD9yGqbfi6EMGqNOe/bhKayr8E0BH4axAD7w1l6vnDPBvlcoKliNZre4klgpsbmZdVWIhw+EzHlFTzBl0jI8Tc6yyiL7cEkaH5/XBKzu2CLLlXBALp5mvd3NSQQo629JjbcKSqC7TPHPOEb11lfocY2/0jbJQEAKx++flZknzmzPCLNNc5BwKPqKyf+V92xIlOkUA0Nm1og++9DOWkLO4lJfFRHBQmAGuNXAQZVghF4uYIZy8TGJqa9NpEbyRQjYL2wf6zURisVpgBlTOSFes0jevP/DofnR9rMuAa9HlE6zamPUh622YnkVQwO9KPR9IHe6VYogpGVukK9mW9pVz6470Zp5zDweRR3lesOPwlR0+vLwRo418DR70lHnAroOaPbaEMScEj+DTyQhl2uC3oepgLQo9DwjX8DAn/Zk+4p+2IJrSXlPdCYVmh6N5GPfI84dTme4ZPooAnNN+fC0krIYbXTutDco9Jca0F7GNn2FJ0Vez9AaIkD8xubckAQZkN1i7jtL+cJdYl1oV62YRdiuVZkTMTcuVglffNKobNSKCTkjinAFD6TKutgh5KMtDJFziyUBN3AUzPvUMaYNpAormwzZuvm6on0RLT/HNuhI/Sr/0rjR+rvMjxavafFL8sWEnpQgWg8eq+XU+JVmRJZS5TZHxLc8iEDgB4SlFEpjpNyhsFjKrtaMZAcEqxui7byall3VC579/hjHQJGJnmCH6jvrb6XaW20BdYliaUY/t5xVvr3Fariu82NO9OIymyjkyPYWeDN3M9jTkjdnN8h6u3TqUInM98WGkXqDBntmNCB7yoAXnKeh6+q0HiGz6rArLtdVOwedHOpfTz1rtiTGoxFjoTUrZDXH78TuNKtrw+HnM/4h74C5u38NKW/KX0dRV3Sd0k72fyUW2B0VrqKrzFBWr1npCasOJ5M2hretrsuvEfjsB4G1b4b8gt4MCJhU322bOtUN7ypVeQfEWnmoID3/+mtjPNo1dRGpORWcisWVcRa4SATUN4wY9N+Rfm7m5aArm6/lB+H876/Lyq09DHC7fTE/ETYp2sm3KIUqYwfwPIjsbTcSjZ9B/dWq1ccGlfidxPoaqp+iloptLjR2/l2fqSjwiq/+gVH0V+Ydr/l01JSW8/LZC2GGHyVAY1ShONYetkFok5aRPbUjpEUz1rz2gx+4S2ekd96g2iFy0vDHolP31oJ/FBBdn6ja2nWMgCfV4qPxhFzS+DQBV7mGnWH38aZtd3ePatcPTUBSV5tYW+T3/W+sbF3x4GSP8Pt9oOqf+Ar7gyEFMaJluy/T+RSMkOTomKnc+gHZtY8nT8ldn6ktF8+rhQHNOKrk0N99hyn8QhqAWSerSA7lCPeA70vOxQW0JBP7NxuGs/y89zquv7CaVpoZO57CiuuzoxcnnZEUiGqTq1lfmRSbPEJGDvG9cS2GWjFy80HPk9/AbDq1nuSD6kvlB0/zy7JYkY/C+VUr36E+CgOju6QMDfJQluB+FQE4z33oXwpPGBXBg8ULQMhddWtK8hUOwIpxN97hYCQqCCN1KjJvY49XBcje58XY7YwYZ+h55e7sibsLGRI7aE5vMvbnbvdgc+XTg/xYJIncV39tDh3H9G5bdDQ85/27v4zzyNYZBBnICFOB9jN9hvhTadGgUB+FvNCCFq/b7qdLKpxg8dojLgU4WaZYrVjdfSCqCFkwgHIIxrS/f7xtq7goGVS1guv7+PQygK+6wNAQNfEhyzHXxKBqZPIh6lVRv1GGAbfnRYJvLhrVrGhqCaUMWdzvpB4BBhsjBJBx9I+yOKinbfjaaFUcTPr8diOL+MiTBlDmDwgA16LDKpij+ByXZm7FuBx0r73/pi6RNshP8D/D0ImXC4y1N84Kb8lf0OSigOh+ZFdMIdgf2hm/SsSuthwC2nQCCa8JG6DL8ME39z8nyvucjAIQ4pW3gynmotYmUH6DEuEoXNwtbFqfpGgKN7sBGV9keLUdfoPWjF8PmQjSCeWmlp2lYUIMiDXdWICW1aG+tcUP5ceRJ2d8FW+XaioKF8y2HFuFnTAPx/Q94EVp2G1bQYtv6OHE460GdxP88zhyIpEANW5cCEZnib7towAfy0qILk/P4E73uMTQdJlJaw+HKz7jktq2+V3J5d53VnzhAoqw5N5V6U902B0HOPA260p2fR76a6NFK7tLsV2GTXTddhBluw39my/n9z5Vtxtj7myva8ExIBj+m2vf3y937jonqT96+0dEp6omVgix/X976JHdz8HibRVo2bfaiA37YQ+J0FycN8wh/Itt/dcsN14mT1YuJh8IqyEwX4/Ahv4kD9RtAmgDQUhdJI+JyGtng1iar4fTa89knSsvT6Z0B3WrS0IJaQvDBRmnP4Ek0P13xq22MEmA3ryW4ftrOTV8TLEd35JY89ZwryaoXI6k6M6MfLDxukt2GpeGNlewzf0c+6hG/7NX1xaGWv+MIT60OvoAAOsQ94eQaDMzk2qji3WebtD5sYHs9j/aubjU7tKKwYxVG4zD21tYSCQW+NQLI0qhr8m7H/rVzdCU1VGFBdBufJXOebQ7thUrjceCPerD2dj1TgFHorm3JrYvwO5ECx989Zcbew/49OoCNL+nDbsuM0AljlWo0SW6evukHhnE8PFvuPVZT/+M1NLmCznri2fz/yN8Z74Jgsvv54XQagH0hJq5kA+nuXZ+pLRfPq4UTUppbsv0/kbgwNFKlZiTZZFwB8bpc9/bI9sAS5WG5464cFc69DQEmY/ZUat7uA0fLKgzIIvzEM1mKJa5eS+b6slnA31KPTRsl0PQzNVtBzAxTOq3esHR4bLZZs0htxuINSwVOvn2NyvIharsaoyaaW7L9Q/nED6IHmgfP79D+N8jfKGcAs4BZwCzgFnALOAWcAs4BTkb5G+Rvkb5G+Rvkb5G+Rvkb5G+Rvkb5G+Rvkb5G+H50OFfclfRdzg9AwWxi4gWRpql+LrH7Q9qedKzZcJP60hksX4kg6uHUOW3tDQaDxeC/1UKt7tOz9SWi+fVouzCayYSRyDu4LhIfoRyT2pP9fg6V9Oa9RvlPGvrZjoX4CVTbpVzqxeTt2Xs64JCytXhp3QSC1h2rKLUYsoE2IpFFHmwbbugbzI62tFA4x5qiujWM7SeKeoLqyLqcaZrJr1Tj6DHr76vrERbZPSl3FfxaJJpS0ANuMspEn7L55bIwOldwLTqZMcowX/DAt/ghBIrb95+qeCx0qAB6o+2ppLUHEnqxKVUNil4p2IsEZflEeuK3a2cxYs/l6lnPbCvk03pel+1ArBbX2ifPhAHm4j9byM6PNTOzyW1/x/2x4SSEe3/v4tMv5MHbt4V3OLpkhZF7s2l/yKylVAzfAn+nI4kgyLpFrzr4UqsDUW4j27SwRIvo1psWVfewK/Uke42kywcOZfMwkFq+HQpVKZp1j0qO+/6Kvl2D+AU12twr+lRdJdqVu+2xssQgdHZ/tI0aOPND7K6PsCEQKokXwWNDXviAM7jwwd2fqsWlTlinLD++rhRbgmlusQ4J+rrrusG2xiN5ZMy0+M0SdqI1b2L1jexl2jmWWVv/vQRO/lNSG/nhM2nKzytOPR29SdcKJlsMGTeyuBYaNwgoj6P1iTEugSMTMWdw37hbUpcOdIRj8RqeOhoIYxbDb1DEyC+vXCiZbsv1WV1WFWpIFIr1nl2fqSz33byotps5BnLIebabvSrYQULAmCllxW8w40SahEaB2foQZDsKXgfsATS7L9P5G+Rvkc/jfI5/N/I3yN8jfI3yNoWHltISrfUekJNYSawk1hJrCTWEbgAD+8sgGcgJZvgUXOI8U6qW1GzgLORT3Q8a81SW6aChqvK1Fg39l1kU5Uey6yKcqPZdZDKdJTBWy76uMt0Sr0w1wwUpGRnAxvrCirM8tZmgY20yRTMeGPIVH6MJ8uFLzPFE9ZNIOxNQY1wBcYzAsGYNLOTi+7N04fcK5MX2tTMA0J1cvcgKiQxOSrVOcGiJLhCi+OnIc9KKXj5LXwBJvV6Jjm/oTfb5zyZ9QLMaTl52m1VUuVbiBsbdO2etTFvSZDcZaBJYaWzGKu5iM+u4u6YWrFeln9QKcHys4qPWG6CKzBv9GN+GXMXu+B+H9VLTzppVsDeUyY6OgRI9EXqsJukxXgVbssP3dm+QLic+lXhXPyJYbMGV/6ub13fGVu/11I9dHBUqnuWQC8gGo9CBgJfw6lv/AAAASL8hi0k5aErYkMV10M7A3nEAE1OEaUyCaAuBELulNbfPZW3GuKU12EKp2Icfvcvs1V+lvRnKY2QrKxxdrABAx62KPSUfFkRMlSzaFbGf35vE2JCJW5gndHagAQcZVDsCSh3sQRwGUJtyWxqv7Gh+GudMVBId7yiamnezq2zvgzFBt+Ioq9Ti+dW9we8KcV+MiR36UKKtWgUYzMSRw3HDqUjFwYGxSf3jBmG/vEoZR9oN3NmFFo98AKCZfft7/qf3LPdnTroIPKLeX6uB4z2AjvG1DKzYeBnhoPzt9FpEwEtBIZ5UBIrBtoJhn8D2MqZkAZx015GVFDDqE2GyL3J68w7TkT+/WWYX7EG1OnAgxT+zzTo7F4jZITzfPN7eHh+POX58OWm6LCvhUxyArGbx65XE4kTkYNYxrwFQzEL17RtBfOlbUsv1JVGMjkMLQIivyEx3bYSP9xsositxLoYyp0h6O/ift3QNdBAjE1eMS+72hfDVmk6TQ05w2J01/2kY3RiGQhAx23P8a4y+y+P8pxY+nMsovRWlUyIwB87nPbATJ1a6E590AEdLS4PvrhuYT1LupuT8qhjfUES41ngrzMsu5zIkWYWCL+BVbo6IJz1y6ujot5Nri6SIVyTiF3ObPPgp5tl4Ucm36GKM930OhFJXIBE8ngiF/VoshYKgX3eKkf5GHyfDgQFYZhI8wkedaFQfmeE75qZ4NV9beJnD1eYe/2kfLILJNasq+vFcPhoBirOs8WXNt4lWfbfzG9Ga1ykaCSC0KCvTC2aVvj4QHfADh3fugxIQQyWPDtzziGpYr8/lTeUTmOf6LfPP+4w756MlVhPVgbwq5lWitZK/sL9iHtnb5m9abUdQr+9NmjZrXehPB0KU5ROFtMhaCC/TelBjG5n5HCGijCxL5Ubu6LWdeKztUSfCvQAzo522KdTlHauTcHiEw3FmDfGbzeubyIF7SvLPX3SYU04YaHbe7lZQwZ41sDfcF+tK7R6ni42eeql0Wloc2Eb+TEHT0aEq82C2T0uHB72TfepXmChXgaNViIKVOTxpPqYew+TcJ2WyKdIBvT8dny0+uZ12l0zUlbTsZ0NVzVHjyro5dC4dI1u2aI3FPotbu0laQcmTyXGB7F/EyWSemiNZDZP9wyZVYwLpLcrNvyTgqDXb2zUonoFFgbkXT4t09NTaZOa9vTLRa88GA6zFnJkoxY5OTg6Ts62/l0HmW4TxdZzuArL9lnp66MFQm8uIuPZFNVn76jpvqX1zo6ad2Vok+mszaoKL4xdGIltIvG20Igb/mV5SUWLDMyVoBAYfo3QGRoopPP7JjsPYzlFrw4mfslEu9lRAkRY3q5Yyh1eQBoPKxpbpSRA6F1pp5LQtN1RuEQrwXojo03krH3r4Xh07XDGaztfN0z5b9DRgSSarziwIGPUwQ8IzG8hLX7d2fsFb5yytk/y/lLBFE7Nto4bOdiEfJpRY4dgq0/AKrekXRsyVDJJ6+9CNdmTMZugc4PnSDc4GTzZetP5Ik06KrQQ0BM3xsi8NWvTIoddotOXHcJtstfrx3AneUchQrULQReFGw9GugRROrckgLBrzOeVgTtA0AyDs3qLTOIDd1P5dlGrNFjrZSAUKms0OuG+ohk5iRsgXyqRd7uhUoKRC9d7Qs61fS803NPaeStOfK86+A/0rnBneZerRGyeCX9LQNq2ey53Upn3mLuJ02ZZrJUn8CY4EizGMJwEqUtP6P8ugcGmooxOXoUlkM8bj4HAf0Bf4P2/dHq7wxY4FBqDCl/BynYaFDKdn69qcASo4b26mELO1oMTfawNEEiY4P2lBAJ3smJHaxeifzekt4CZBsvdAIYTyobnEvecmfsqdr22K6t6a8TkYE5tgz1a+mLmu8d0WKovNEs50hewW9aJZJsHLZuhddo/7LDZLZ7c4rZCru+iYmrh/WrnY90MEv1P1oerq8Wd/79dQScldHTONwgC7BPG3Xlbpx4jsVjAAvJ0YyrvotR4t4QIu6FSBPkysNzYPrp+VtctjDWOGqYHq5z1MvlNCLgtvRX+DjBgid4ZZUkiMoSumhM0BQI4Kg8RUagXS1HysDwT3I+EUK6pxrWQiz0v5EKDjI0jBcuQFEuHtuYrEEAmtkvmR691RBJ5LLrSyR051m7+sipIxj/cwVa7bitiInAhq2eizrAKMJ7xMiwgi+ajFHVIZYFyhbzbAeL0V46GWliEyyLxprM4240zIoxGINshK7fmTEUgS6GF5jy1lbf5gk5ExfJmM0ZVRxrO+1gw+LFyjb5cZY8I4pM67IL6K2dTzoO1R9L6qIochVC/tGiDpROlT9Lm6xqYxOB4WMJ86YDHGX762whb84nA5ai9ageO5KPPuUR1oixxUQLHEgUAbCBRxDE22QGnMaLMKDyQe/0K3rM5C+xAvOwllPjhlwwp02p9lUpLDtXwOmZOJ00MjSULsTfRguh7ZznJYbc6wkGxCHWgV/5GPeWBmj1Rwt41fCo7mHelXmOaejkzbIDsqqwhNxj7tsZZ2LD5vn5y/3KD/tAxHFsEp89g0bGYwrwa5veZhcDWTAVC+w9DY24prpjlVB3rIETJAZ3HY2mygI31VMxi9qDCM9oTAyZsWAIAHQyE54PpxwuRTdExpN/SXJJspUS4q7jkXRgUKW6Qt2+bAV9UOIrKzOJ/9hj2qz9k5xjbHw2pkStOc9zc2UlPxquVrGoMJ+vgObqBhKNLLyCIgObqctbWYeRW+fMMLhsfLhe3tzmM9AAZEV/0MNKVoQ+rz5hfvN7LhUiwbFO7kGZ7UGolAaIm2/7WOFI1MHhp/ve45wRJ7+26cXHJU6IrqSE/dQQXY8yeof7glQQMPXEQw8ZKhCKGbvq4jc1SD/2l4I/vcqtJn94xWAyD3H9BqOKVmWJ8zviCCPP3LAO2SOpw+HPfTSmoBCL3HABwstVl9wmhdas/JInJizP85YasgzX/ixyjAaryrzsSR0RjAkaMJwlHM8JDGPqnSmyOfu0kFUnRQIX4gmUEPakQVw3t6+H/lyg2wC7W+fNgcKppLLha2HIOgiPeXKfUPWz1LX9V5ot9V9EinAERHTFWy3x8pDRJkEcElL5RlxIC/iQj4l9uC0ulpOqLHOwKuW+GBETHQeF4eG9xzMgtm7IKWsD4Nq/OkhCblbdUXkEIQtzA51szu89fSnl4Q1LzViVJ8LT05CQMrKiX7xyp0RFnw5Y2cKyVAbaQ9rsdmZ/A0nEukhZ0qufCd5PNdkSLZJINGqFbvoIdFDL7jeCSkJG2R9g3Zs4hBJKAOE5+7AptQxSheh4cRjxKvztmDR+WbpQAB0OHr0wEJGRx/aKmtqTBgEx94VwBCNzG1OB+G0JPtB7oZdIFhseVjwscHAWKATj2siav4DCSuFu8JcY2XWIP766J6XeBfRzRcgiQyUwWSry8DRRGhpHUd/omncBbqsEUOjd1bxs0TyfDn/+kOh1svxrToafrpQDqfE3haX/lxtTfGSEynPmLxvRK/FjG/prIi7u2SvSFYVn0g0/m5TAVigR4Q+rZjsJJHhGPNTfdEV7CnjemleBJIxYHodZN4G65m6eflq+alY8Efs4aQOfEAI+TSvNGAoeEsSRQlUQqLNrEXYLbh+QACcAATC3FRisXdVx5hDMmdjhuXoYIEGamHIzyLv9rZPjIgysIyGyNQe3PjM7opsgE7d9FTLRWBSlJPRZ0tJOwAE1qpC1ZtgckHCjW5Om0dCQsmIb0syWiyo1ynKCjdY7SJp0c7zseXCkTK9u9Ip13zv+y7RzNDra5hgkbwqRLT6ZiWvWpGvx0SHjSqVuyAuy5QM5Q96b21Ssr4CJGfEvXQxbj7jQnIgGHGBkDVDcQzgoAGoPKB6PivAiJnLmIQ5xjt0uCdxzXVgZOoQHUq6w3kom5oWK2RMaodQLxquZgQ8cVtLvyi+ABxueE+OjAqYMtBw0qxsQwXYbmAQw5nWFQCiFCZ+Qkdkch3V6IYJJZi2uAYX+6yLdzleVZNDSjiwSiE+t9bossaSH5U9Ti+OH+wjn1M0U4akHz5PkvDp1gmEfjquRxo+fAqk4I9hLUD7ncCuX73OVTiRT3uOGnltaYGJwR3aBBWcDr5SY0P+9Zwf92vG5kwb9NPzhpUN/SIxFsYj2Y5ZO8ESKPzsfN3ojthy0LBvNM/aj4DLDC8dAWibSKmQq5l2GWF3sVkblR/lF95qzfRKw5yOUhYD9FqKyrvQlTlsZ0Y+AR3DeItZayw0IqTP2iGwjky77kqeODj0GkmB4qYSxl3SJAiE5KUKJJnXlrbBaRs0XFjAELSWzg6b38ap1cTe44Fa2FpDCrS6suQ9JAmIP/L5jdPEo+KejqVbbQPbnnru2zqRws9AfGlC9uyl4doGSwN6cwjIXeSxH+xrTuuMrRbYqlK/VW2fXwn2yg2rZEGPZlcldmMwPjhXLfWVe4BHwYAfxZ2nS2mtDYfE4b90l2XSbKjZxFvLLiDShE/oOsWrrlchp8zH/WSM60tseMWGLcgeM8D4iHh4OFi+9x7/u1B7uPENsBiBIT3O+7qsisFWXVhSGatK59hDoe0YLorf23ELH5ZlgHITBiRUcHLpN99Lm1pTi3tGzXl/Qm41RorrmAONcrCv+ydsgdgeZavSKPVzUtfcRVELlRDNpZ8QYtdwWsHtPoqZEm4SHGuz3mZtdXJsk3+HZuEABpEhW7bVs0VzH9ODNVGRkWCENZsKmVRx1jWJidhee0H1GIZDnoQGNKgWXCj/HwPJHMxkZNtHfUd1OtQKyD8XX5h1trZi2k2SUGcCc+fzAqvmYjSH/YwYqccYuVEZPiUEbya5QEcuGTavrLSZJDMuPTBpmkk4YSfgYXRujC30TPEkndhbHT85hDuoe8cHths/FkxUMMoOaEfdn1RoQASDTR06K8UWkRR0YSX9ETl0FwAOw/XY6wTLpeUgH23Uc6ea4C9pfSNSdl4o7yzgIW99gmMPyWdwsrEwZhe+DzjbEnaMffIWkB5lSBey0dziVOvk1LO3s199RLm4VnwHu98qjebb4nzly4/IalSxBIppED0/1ISmqNEhmEYZQLeT9gDFLMyGO69ocFTbsOLGkK/YkpmpTWxhKUWgdyoxBXvKkikFeW6AFYpO4nJJoHcpyKaVJMwMeiskmPZcvuVxXsdyeRJ1pmkgT4/tOoElPwQy/DByj3qMwQk7b/MIZgHflBkfrYo5FGrcx+eMRKF9RjNsSvMppi9fKUxakCCQglc589iFIY4eOq4MLxrNjy8z+fg+Ep784tOkASnb6vNyBc7usPC2F/mD8H3ZSIRXc7ep9g75zVrnGMqC7Zbq/zK9xxIRnr29FLwaz3gtB/9sOHAq1ZhEV1tt3HqdqzPw1JQcWW5IXsTLud5HQ3VCSuEh+FMwFgmYT5FsHBGmRIix/S0D+F6HYrGLaIntXS+VaPHzGp7OS3a9GTfLCb5aFXH6l14oAaXvvFp2bILp4qlvK+Rut7XSSTVrj2VheqyilNuTvaSIcvBzSdR/y40wXgZAr+OMzUn5LucuOGmLiiPh1o+02cLJ0KcOK3ltJo6p2v6/n7kOk8kMpBeOjjdGZb/IlTJJu+yN7wwfC68GnEnUqvgsUFPQq/RgAclGaWLIY7EMW2BFY7KOdbr6Yq5wUsD4ignOosQV84NwimVEoKdX3dtcuI6lpxBLamssoVT2R5V2eS4uBpSCIPieRJb3sSakKYxstWQkoZVT7xNwcMMZnA410nMFZFkLaTR0PsHZal7UsQS1NoV5gCVqgHbOFmbLBX3pWQnPKlgKJAL0fpDAZKey2TPYSRHXtHA7pMMDu0XbTyjKJqIW7yyY7ThcUEHXcc+XOSuFwuFSWc4drvwPllMxfvY89IYqfNtAFrNYyQMv8EuTde7y420GJfnr5UZE7g6bs5Yg7p4QrRT5WMNIE41s/2nBaWvSt3r5d4riq3/5usw7ZxNuisKoEn99BcSOdYna5ptg8BHtAJhq5FYC3HSdCgiJuEcGqSbLW79DfXTMGGYfqn6qkP3Nsl6ZmM62RYrkjGPoi0XenP0QLvs9HYKFBHwkgpbnypMCQoZqExQAAWIzADuRPZVYADd0cFyKr68vxsfH05cWi91GLXLYPR6WsGNpAwzmlsqg7HlUseF0FhJMMRidmbeeQWGoGi51h8vTR91KjYX24MsoTXc21Pb2p1OjTP5qndx+q4jvGS00G6FK8fhO4AoGvCSybU9126ToP1WpCEfy8CM4MSbF0SzQe2v1nd7kHCBhAMmbeeAde0lPZfTmpUwcfErRLAgQhOgHjALzrwTh3JpeF5bRNZHy4BXT6EsvAAftg/dqkmWEMZf/TOgbVnGqmq/0zppfIWnluVXWX+uKuLJ27HW2ZJXNiaACHTB/377pBo3zMc0rSAltg6wkZjwrgBlRT0640x66TTClWVx1gE7MgwexM3qyh0w4KRU4QQUN+G/RE8VPTgWJk6nHjOTWNghNgZf+QPMslIYBtvmKvhtmz+BtlhfLg7dJCy2YiZsZ38QET+L4pM1cZ9pny1j16GbtG/xpW6bl9MxGVh25bTGpeisK5wheqYE9rncVSjnfZE+ggwPOzCP8SBkQCzQ3jJlvx9NL7++UaGA99Y001hkNxsjBTyE9RgPnn+pGs1YhFmQDQ7UecCqp10ogXQS+m5jsk2rDGBqkSTyplYzX5lV+WFB1valnKlxZRaZERp6ZIqFdYkCsyr4K0599qPScEzi2Dsuylk1DFU2uKW56Ya6k+10Fz7qw1sKHqh7I4IFxEIxfW6ryF9ti3yCVMghzxtox7pprrcvJLaJT6fLYlo2h+tIWaQYULLh6uGG8DBPAsKTpUbQKSBvl3iazIvA+moirQYrnACYbM7ozePrr8fXAirxVe6AAhuGWmncHd3KnQRlII6xXRlufMmd5/vwNqRengX4cyZo9l5llKthYfe6JemqJxVw7vSkxdPXvi2NtdCulsIsR8rAU1/e09dGp/SB+R/hRJ2DTpwhpangOVnshL/zB1mRMVKYjERhKucXJWjNTPa26b0s+DRcZ8H0iE5ftzyeJxl3hzj2Ses9w99bcLIl4nSSmD7Jd/39sr5su6yVeV0bgROlsTtwFdANFPpbBneKwTHqZsv36Uuhz8OxGwIQspLyRbxn/ASd2uK5HF15L+PpXOoiHmDCBC8uoblv+04HmamYOtfUfiPy9DleGFllf0dMFzE9o1du2QIx+7wtNhY1j4SAK/iR8+IMuKDR33OwXhesWbry3Soc8BSKlVuEAOpOsxUEvEAhnTUSrXcgkPMqcRc50YfpwkE9GubnfPdv8ir4rS8wwqKxq3nNftepZv3OHuCqiER9PUt76o+XsYYnAsTBSkB/oWpr2OhWPk7gkvhvaA5Xj5bFs9yAXsdNZrW3oaNqHt7qRn13lR/fCkVKrcIAdSQEKdtDbvk1wErMoE9ibKl/h/v3BkVrmbL2Gayc2czfZSJ+/O4kCOfOIAMI65nx7YGKIhymRmFOjp9y4BxJ0uqK4G2zPxw5e4EYdwIuw6rDGm0M+DgytmO4ij62s3TjRzUaiZN44lyY23eQCWD7mSYqpeTKYK3EjH0g/ZWACiXa8G2/KuS3jTUQpIJuJRzPk+vv/ktO8Zr9t50sVKOnpREIxp5xQnnjRX5y9TzbdQjzTVE5rpvRc7B6jFmOXkm+PpA4hgk2mI976nqXKHfX8lo6l63HCFu3z9vGx+WORcG9Tjq6EES4hdxMmdIHakkP2BoNov6nXwMvRWIGgnpNtYcsJIIHLsjeumPtMWudDTt0jHWwf80PpHtuNXhbVahIMjTtOu4Us49P65PAZbIk8PTllPeBilANhD3TJNBH+bocIN2ynL8EU/km/4mS2cmc+oeqYtLCuCGqkytSXG7LQK+E9vm1jSRipb7MAL6kXiaKOjRLt5c7Oe6A3rJAlo5blf5jALzKQcILfChbp0Gx7abslS04jLhBzGFgqZ79Bt6ULyEKzFfdW9G3RIKe1cwA2Q/RCdVMt1khugMFtySiNbefuo9FwsoYLE0Sc8NJV/WFOFU/NzhAnpT1PW/2SKgjVSzW/qrEzKaxAWFhIwmDbH8b0VaYwLKczD/SAUdmEWRavux62IPCzf6dSqBxK2/XcMuzThPjarnxgbhbe8xie4VKFFi1+6LGgpMeLSXH3unY1Hq1R3KN23NpnX9Jjv8H9/zh56KSJ0VZ1CKvI3yEVk4rcO0GF6ZPeFBtiHNCFssjABcuVq12NBkYVRxSyZPVihN6+XD0BJ2MoiLGaoM5cG8EbptQY1an9vogePaSN+IfJRd4NMY6e17f2al0JocrIf+aL/ki1EVIkmjVqFE/uLxoiZCRDaypMoeY3mNXB9PX2OVUsBFh57//Gke1dC+NOghTIip5JDPvIy4XBYQuo20ZYaGdVSUK5RdlpYNkMs9T7Zjj0+jf27fz5TwJiZTmczTjPekrdSx89TGC3WNkDAd8K0mS65WeGkG3tWOyKPfUS0TlBDSUnLKtlFKbuhsG79LP+w+/6jIvlaNTRI/f65TnpZhdvdOxVA1L+bIMxjj6gUX17hPGbQ8zaT7ZLkJkfSsxL98UT4PHxu8PdRaKFnS88zN4syTH2UvwMeOoHODK9FnzoEa555Xa63PbY6xd568/EuBasc+gIUqUMjd1BRsKRoNTARjoHyekbsw54zF7DXWZ5uELOtGnDixKYYJgyLq5icVPn9U/qJfQzUy/4wZZxPO2DM9JtYefFRZoEhcRQltGwfXL5B4htoPldvP7KoDUglhw1JdKxP3iknEICqoKIwIgiD/MkndGyer2fuXdFwOAudFJJ23uOlXo8BRGD0DMj8uUKN9gbD7svQEF4v/dLYj+oINGGSWnjzxDqTwrpFW3Vk38sjSeHFTQFhKX/DNxvkWG8/v+CXUDL896uBGYFZo1AwZaGantZvdrpeOnOHnpoMAMDR484X/sBoJ1bCCjLPDe9ixembBm8bgE56qfLqdPBzhWlD8ypb/Zm7AMIX2QPC7Z3TCD+AZ/7aj61Mqfd1NB3f4sSL/2SoxZhdUDWds5qclNeD3BQHZ7UTACvsyo4TyISRn/8jpMfFrZc2D5EtzkvXGZxsDa0tQ9wfmACkCUnqRdX3GQHm6bODh6YNBbBK+rQbJZhEcbotY+C4SVHF17JyBg0kNbPbkY/5npm9ED62w4YZW+4AdGpDyOXck112yXZhovnh6cABG65x0kxD48zEz8LlBtCLHGB1CD6kJjIhIdktBgQzZT3vNfG+KF/ypvb/68fzPPGxwJQZt5XeWUgH1rLp6+8E4anXzJbXmOFxRseWvOFy9xGRSbgMRJi93DxTGFOBir5BGw/+n17rB6DvYwKEQVR9oXJazGHBuj6/Ccpwdw7GaeaP6pF0ovfxK1wCPyydH1Th5QBh70DONQkCKIpWqdKi70CBeF9kk7rU1yXzN6ieYisIeAPXdl/f7f9Vv6gzEa81Oj0DRhzkRiG/TXeNj573bxQaDLTbQd2t//f1TKTTg8Q/WI9YoDAtHLZP4P0Dx+T8WtGS2/ze1GlK/21ktD0kxwmFIrvEZix5Ee/YFE3cDhKNbLoG97+uyJ1hQBL9Uw/FJiIo23m7oAClfT30N2ntjx4gZoKdKXLJEszn9CI/qEcJptwko4ilTBw3fef7obZgOUPFpkLNHyG3lZFlKNTqWrKbcU1ZfVcFxjKk8UoavXwwbLZtKh0pl67AG2nCJH3eUWCb1qw8jUBEU89zjMvCCy5lJH8yyNdLAlefK/SVAfiTrIXAAhAgc3PSvoSnNVHKVHSs38iGdBYzKuP2kKNcUc9ghiezS+0aLzgV7jvOG18vt/j1dmS0G4YgEOjXUk6GQQNuH2evxn9/WyUtpGtrGN/ltueUW1hM3NDWfmKY9Mox2U0S30JFyqYic0oAKddMgbvSIjzt3kXPDv7rfVm3DjhwMuwm0Kx/ZY8nO6v4LgOZiEVSFJwqNgnQPWF1z8aNaqTOq3Z67JH/r/TVZkk+JXn0skEbGHTJ/SFtqnpqF6LvtprXz7Z8n2oKCmj5NOlUUpGA3wFJ6cXt3s3xhAyx9dXNVN5mJcBfEnVVBOCXuhaMYC+w5ZpVrityc9a5Tfv5wYeMmLaTKKHrSlLi3yNGMUbTDG6sJa7gf0kGxu3/BZCXTfjKdicrYIYyNjsWMOlaMIoxTSL6HpydpT258J73IwOMUcrBzE/3jaYaOb40VOLYOV1vHdsXR8Ww1z7dAqYflVPAVq5QK4QGA0QUkJjTfbrj27fbpdycYNpBo3rkU2s2jW30pfbMUramLpYZLSSOtOEaw/GU8XHPDXLUUMsDO5V0VFqlgONSM6FRN2P0+CWTci673rUxbNwiX+rAZHOvkroL087UpnMxFjeBTtqhuqcduQdlbcBpLJlBa6EX+Dc4MgnXPLp15uPhm+tNY4fDHGbQujBsaPsSmWVpMYj+At7YsncnzQW0GlE01UfB/IKqA110NyB4stNi0dxO2mNLSb20UxFdGDaQaN6Wc0efhzkkZt3yAWCtTWDZIv2M0OuXdpg+cWx4Hn9VzcsoQvKpnTSioGyTC4rbYic+USf8KtLUHJkbXf6uDNag+OFMD1k9w/UYanULSy0fRENcGK6z+N+kDE40rs58rDTj/Pnsh1R8978qKx3IoD6UAzZcHb4EXG5XVgo+TEmfQ//NkQcNDql1kF3+xhKFLvnV/KR1f7u1Pw43leDgCsOvjHraaX9FxCCrDKrpITFnxqm/hOqM1Ea2AhFtLuiciWqV12HJ7IhsshmPQsJb1CYeo+wENHzvf/WHQQQPYcyrPAHBk9iI9lHyFk3fkrb1ZC5Qm1UBRGLPhCLshivmMQ+vm9uiZsJ7ZM9g+A1GUpCRr+obfFtKFENJ7NaCDq3KpWeakUO07a09b7uAQwKUbtuRviMsmhoj3B1lR7b+MslYaMGgXDUK2Ji3xaVgyEKxP8I4+5CObuoTGlWio/oW04wRuCGf1q2PlGepi8D1SZo7Wz+9uF4261NpjRkYiGN2S0u1tma+fDxrTW0jbiRD1TTEb7hH2RgSWDVpVMnVhOUCnNeNmz2znSd7GYvyRqYhcHmwSrF/Q6vtUlULgz/3rH9JwTSyR+F6IxKC0CRFrz4YXCjUg632szKsw5iWxiGZ0W6tZ4jRViT63lQQTaR3av8yyVAb9OtfZAPkdNRH+CAUYoUDk1PwC5vpdVHk5FUHAOckyGSVcAH9Bxwhpgz/vwCZkg6AGubIESQ9ioIkEWFjrhpMBmkMF/0kpFzuWNtimpwTeSm6j0qrEiucaY87BFPmdhww4gLJQ7Z6hsrGupD9qfdl6WVakvbO/kwTSNb2BIpU4R6868kGYJGnU35ZUM2gQyDlWfiVt6UJCwYiSTJgmnhW6wK5NPayr6TQW8TFvkG2aYNvAhqoPlmEFBprfjb25r5l6tUrRj8ujGjGISqkBotLrQfSqfZMp6KJeI4x6CYiD5VXDp/+fQjh4DopUaLqPPimcimSrNH1DSCfbmkDQIsMp2gj5TnXBUU5OLys3AGxq0dlOhWunDdzgKdlbP79CaPKYvL23/BqxlBF4lZkji+RQ+NTpfDAPybDmUu4SGhAn+SILiFA1qQ9xdx8cIpG68LvWnsfDrG01wjW6bJ/GiE0fyBtkN5qb6Sv7Xc9WkbW4rnMa01XlTAMxRjt4GSoYmVlyU0hce361KBz47TqYJZRJjCPw2CemhR22GPzc8K6TyBMzTcWAAGfsZckST3Mm7bOBoXMcxjfmNEr5fvfyVl3B/0MrH6AwfaoaJwsKqviPuCTODfTEaXH/dPrt1os0jVPb8upiOLbZygzPBtH0iJXVpyD+F1soQHXQmEmib6aVmg+Iyt7+OOCzS6eACwiyQlYPaLC4xdFoGgNpGR+WEieykZ3WVID1XmVcwhYHl8aom3sfHikO/UpqsiauVm6U57ygdgZgOtV9gvpUr0VUtjjUjZxeSmACRYs/6/AP92KBfsw70kfIFzYr1Tj3JhXyn6oQPEM48w5mv6FjICmdzTTIkcpNXc1iwtCTEBPrlYfEeMOfcnbQogHh5fnqL2pv8B0w4K5a0FPVNUuIw9s8hi3qnHSIy0jojGGaAiHBvfkJwq4+UBXdLHmrf7kMX7wmVPM9YCdMufxpwSIYZnGeESZX+8Bds5sY+28fioV2sI5vkipVg0IgaH3XoCuHl8pUcKlKF9MtAUeqrT4DCUdZxrnQpymPcK60AK9fxYtikqW6B2MeZTUFId6tqWVJ6fZPhfOcGl3BqGbvcLK9rCMarAhuhZx8IqQx+Sit14lNEB5tCkQhcFUYlndfpwkMiPm6UsHtNLoZHZB6hTu0i7gudg8a/okW682h3Bk3E8uHpoVu9zg8M2Ubwm9MKo3pwWsF8h0ZZ35bdutdcEwj1Hk/FQU5SMIBLKt2XWo5KWmCNZP9JaQj6CuAr+oqgUk+ND7l02LdLLVCoX4s++IvLdd8yHM4bjvUkZpsFuh8CCteXI8VqJR4NPpWVY8tp/rYNmfRAVTCACMgP2yKfjVJrkqMsEfBTjfxyIsovQka3vTYqG9OrGo8f2lNZX879Px9SGXVZsGONBP9Jywy1P5KyCU9JpRzw7HaAx4YbwVuyV+vLmH2JOEwd2wD0ze0EGruPYJ6N3FLIgWgCofuPpTQT+TE5dIQh0fYyAYMqvtf+uIC++X2YNcIQrhQ3/KEovA5gDuNqopzkglZ1udniBzhexQsyenXlxmsfPEs57coUkXuqatZd1Mv+yWuIgzWGUNGYhAHjcLTVzzKB0y5nCql4HufLWeV/3hK5TY3pACLrdD3gQ9krvikFWixrxXeY71+sD3CL1cu7vM4tsflq5FhGKryby/nHmyyKvfNwJ3nqHHuvYtpUefhoYlxXZ0xCps5idOTCR96yVBqHKXcpk5r8ZIBVh4OH9z37ZUGw56v7n2oTAMdHEb58sj3SMpJ/kDn7rAXJh1gjCRH1oXAuL1pTCmhnQXtr72a4rOotyhkfm6+eg1zAiFRCU+KF3viSdpSGcdPRxawDN5n//OB4b0HSHKSLfut2RZDZReSgdMhqSqOFi0sbGUvM5ddNseoj1pYtrgBLwn47GtbUx4YqHjh9b0NFFJY0urmvL3vqMOzKrZAIqEDj4dxk7zGaR5YRTM18w70Ro+qLKQoVSndw30jWsxT1fnzRyLTPUiD35Tz3JKrKwiRU0vXIfV9T28kSfJuSbsQ/pCnSPiUMPo8KE016c81EG78t97wZVs/oGEDfmEeGh7dm5thcvT+z27ljTqFIt7aF9g8UR34nnhPYBTyfNIQLgGL48w0OH0W6XlK688w91NwgWufrLsf+5wXctHwyB4IFfKkNmQ8AP0Y599Yk0hJGmSCVCr6h9jRDa+K/Zv1ityqeVT7Sk/R6cu5SPdSrL3GJsEEZLrJJInpEw6uJ4z6ZEvEeJVmby2xIIpUO9gZXmLRUUscKQHPX1lyY2HiEdRfdirW73EU93NwD+bknoaf8jJdhGg62+Lt0trtQa6MZlWa8/AcECCK9DsIsRgxoQpD4MkHgQ/N0J49z4bmqlhZoAiaclAfq6IBp44HxjtISxpbPJhr2va45zAVxqfm98IzIrDrU0sLxjA0gf9VfzCPVC/9I6dMYQr2GbtxGlLACA05u3K8qp12GDi1YNnyZNHFWJHK7hLPksroFBf0lndSy31CZfnxJw7nyW4szrNxd8RGsQw5TKd3bpUk0YzJyZqgwL26wLqERFeyhuzuAAY5Sv6EbZENKBZeLdIYPCheJijzaTpMi1XmWD8EDE4VZI0uZYw/qgbM2YiTMiQyG6GoQDGf/ednANIeLcvgj6gYpVyRwGKp6w8boNq0L37nFKAEWJmHSD/VLB/eQoRbbVAnMErLtW1Q4UnJojqfCjC8k8cwmQv2JzhEgFNEWJRYLR0nHupuZolF21lQLgF9PJKh7zscqWEIiub70XdL5ha8+UAkNRVTu+VEzD5Z7IMRKjDvgtYqp0wKOneSQmiYX8IYkeB2sesIMI3PXxe5J6qW0cRL4HfsC+yHlal2hkmKyBUsbNIgx1B2mxmCUMKpnNhBXfo/cAyB1k5Y2tSvONRP6ybSKl6k6dtGYSkofaAxD8VVUMBNtao+8L+TgKe8UTArxQa6v0nG2fI3XZPrnaEwwK/piAc77aIJAuiQ8x6HsYSsswbHh4KwgyzfrMll8ftDvvp0dtJvvn8jFBiCtvB6aqw2dFzFANNLIAsimYuJR1ScBnVY/080wsrZnsCmCDiHkLEfUg2pzk7qCoqPnhdviKbllorLx55UmwTmzfgMAcoCOEeI5veL9VSrEyr2qLv+zlUON3hbRaK5KncqaPS5WlqCcx76kfBqBpqFC2bdTbIeonY0CdUIYKy9tZzTNRanU77ejpm4+kEaaY/6mh2Xam5CGOgYghjqJoPEkQ9uBSntSzyRVWRcGoZYJAg0CI/DdolNt+6sj9IaG4Mr0mBPw7hXKJ5+vmTQ5qzJaw6bpxy5WeNM3eGHp/7LrI2w+mxH4DKnoN358gBi0nYdyGU4IshqiSXgGY580WQg95gGRQ75O0IEzXdragHoEVl+p/WFfswTugejgewJ7tMFEWx1rUtag1YwPLrffnKn5t1GuRkSom9DZE7p8NvixgikRq6LmIEM/PUiIBAaqiuSXUFcs2Ts72fAMVJB8wpt9YFpHWfgEiF4dsOOMQ44psWkp6QLue1iQ6Q3nFivbLbfPziGH9ot6cJqvAo+dhDStQcfiktIE1cwi3AP85j+XuxQgmlkMdFcCE3pYEVP3/m3ILM/uey/AZY2EOq7gEmj4RE1XC1isknIw5ZLUygwgT3gEfsz5iEGjNFZycDOptIR7Ywdv+04UqljPGQ0r1UaJGB2Aen1GQhRaG7iXQLOYaG3KIG5EYmK/nVQ5RElkvQ4zRif7CI87b5Y1X2/XXQQLdnjEM6G/QO2Ke576pz998ywYSE78XRQkv3YBUHPz1AtGch4YM3RgSlXgTQzHc9rw/YNW1lGba3MToZjosY5tkwOUQbSY6xlzL6hd+e6DfMv3rDC9gKJUarnitX5l9mIMQN9QhYn/8OzQlVuDn5UKoYsS1u3i6QAfrWRxZDpEIzJ49fL63/kuSxHLmH4cJKQ0PO4kN+04KiVwsSH/JSLONkwmxZF63yKR2IcTVfqT0yqcqL4TZrtVOLIaokl4gufP3ZmqMCezhYdRuJEucOopz4KViL7auqUZ7b7AygFzOxzpEiF/iywnBHgxebznXIym49U/ogleRcwOqgquZJaZr/0rY8lKk9qVPuJohOAg+sEPTy1Qjw3CHjE6gX75g8A+Aw1T+Jn2awtd9MqYyt0/wtCG54RDddMkdYk04ha6tGrqasBxi9VejY/MrY025mB9bnlYkGd7KAocEMrazkHS+nBZYbodYo/DN5ubXi72vU81obE3AvTXLrwgF1USBNLHbtYxMiprMRTmjywNTabydlKeQ0aeFFFE/n5RjFPRD26OcIFPMNe5EI7YovK87vizAqm+Z2P2Y4DFS+jC+i20qpKD+NR9195dlUmgTSe2CxSnJ5RIbflmM8QvXfNo3lgdYXYExP0BGrfZ2Yf4yA9SbSIyRW5uR4GzZCzntGSPqvKWWc+9erx9VcgvJo6FXrYkhjE13wuJAZRab9bG+cR/5eaBxkd96P1g1pIX8KHVT6s8nvRPTgHL/Yy0DTJ8aVFKqno5R1EuFdIJI6X+7KQAX+jXVMtZU2FwQPmSjpGmuJUS1CN9dOR40IrRrF4OarK9f55Opvg6zw6P9e4nWbnWYjUqFLhSY4csxJYn9wkrWEWp5gdmfT/zj49nXAer9W5bLmQ5Z5RPlRWQ04W+yPwW/eE5XWOMIQ7kta9FoQ0PjtCQulSG0fmg51Nx33gssMbSWGluTRox8C7EaSZAOcWGxmHb4/A9Iwl20wLcHxPNFXoMzE6Y1TIDBF3QYMeIXjkWbRwx2SWpfQFu+cOHSa/duX2KKxGyDiJxyOzLvBPWhROHijqRl2gA+adi6wBooDSyPMkOxgGyAK2M2m6sRM/C2AlnZO3XnAuBWWgxEsYI/pIboeAG8qNhbsqzRJxsotBmmRSCqQ5xngs/LKpE8UExmz/48E638v9x1a5yXerbOXpKnk9BSfiAlArD5WLsdu1NJanjtr/rzvA9mJv5tITYwz3vR4exM2clHKlcRot1pV3Oc5N1J4KObK8Fv1L/AeVC2UxvRo3hskP+wQ9Sf+HF1awjxhkBiWRu++6JBSXrMQ0/rVV6bhqWwIKEct/DvIHCBlsKh6wzG47EOiCybAwdVCzPCbeLfbh8zxVel6AneHNciF7yXK/NcK6YJJw5YIjrNna1wYr5vV83HpWQdHXpA0vswddJqA1+Qx3FsshtdjBcKDeV/RCR30Uv7neEGEWPd3wKnaCMUAoJLRWigarhcH7ZEBK3Dc+fMQDU+al/V64lz4AfZHcj0wmcQHYGijRJBBgGwwqUTqngQQ8A3UfwxIbE498a/RHdBSOZ8X36pGmQQNb0oYWbHvO0NgOQvfimsw64LWreQTpWcTFQH/BoGPrsYA6qKDuVUxhRlkWZyU00Z6xMRoNoxtAii7XSjYPpxq2HD6pS7jAh0ZiZDb3R5kkFFaq7mEOQTHuCUfjGIhHM8aD9T86PRX4tfn3H72sCCt6vvyacuPUFI0mk511eiXphy93fAx9TwfjU8kCCe6igGfB97PFoGeXe2ljZF9rtWuYraxf5TXMsk03rDnnlWf3spiHkCnP5CaQkyCGU5jJ5IDaLQ+LtaEIiZixNQxq397PUTjwfL9idb9ucHQ4qm/gPG8tXofA9rr2xOXS7EBUEdf5EAzqJy2IdgZsU5la83PstersTCnDrghd7NIIjYVqCuYUyjiv+zhTUzUE7I5AmpNFI3ut+0EHbURhGZPDNhL+B4Sor36p8OsaVakuQZMOJ+e8nAd/NIXtkwReg2iBU/nTWTi6QcCutu0GYmFVjfcfWd6L8/1xmXq2VWMACSJ+nYZeUVaPougAEzmXAAAAAAPyu1Cg2qmIdvdInKOa5iUgCcLvxf5GIbLDkYp/wyh8M5cD50yHdL31eKe8cE0g0XVrFJxh2u4Gq6fY91GWhMeHBOEKmQU+m3jL51IbldSnZeZOjYTYDxo0jTMbsSq7lnc+l7CtV2aVLyh5SJ345BV/WlSJxcac7qxPrC+qvl8jHAQSq8yFE78xPPORnN3q+LPeol0eMv6gGRgyxWoqRf1JOFzhAIR9puI1WtgfEW6zZBht7JY6XeOO9rNx0frgYAHDAUaEgJ+dgJQB4yGNEoAOighVd+R8IDqojMNhDxNdVfcy00+u/kDt+bV9yMHNTxyIwsr78yzxr6fqQxUIDZTUaJtBGC7WXWf2A96I/jx/De8SXaHKldv9+Lv8cR36sE9MynBx1qHg5Txmk+4epdIiBihBs5NjrRJlhFZk6AeQ3hItVQ+NrrdFsGIizm8H96GTBmCBZV1hcI+qwhRrWEPiBnwrC0/BRFG99p/T99hiybeF45nAKImnybkQwyBKOEQ5okynQlRKbAmbG2aJRvBSGivQp2UMc79tRBfDex+3r4JBm5PydGAoiDOw4g+GSvwgrldV7a8k89kxDg7p/Y49raK4MElw8rOWdBGvI+MUB4K98ZlJhVe4FT3mhUBhFtZb8IOFlAo71DPZxReUdMlyrxeQ+rufgDHVs8lFzqZDQxmbR8lrfE5BAyFzgz21hfD6OBJUQqLrA1EthjmSUKc119vr4mTnL+rrwGscv58DOHS0kRdiyHkgDKB9C/7OGEdNQsEDDsjh/02VZ/q0c5k5W/snEngJTD0E52h6mg1rp9mBVZxOGHCaykm6UL3TK94u0gi1fXJVNtzV8TkO6tOen+U3nsxr3Wg4A0+vmZUrLRffNq4h/tSf62Ligj4qi4U/vIbVjsryqXjcxgvQzFXlYzmQi6dVOEPkdEIZFErK4PopaP76MRBj/hUYmajON0OlZky9Zq6EfMMnTaLYf9VLVy+6Y98BzKAQXZNeI2ZjQDFJzJRIZ431KARvenSRcOzGp5TNNLGElGSd5di0OxDlEu74IZlLYJybLYh2NxYHg9RE9cX379drYoqOkzL62Z1Gj82LawFEJK8HZHnOsu1crwagTaSQL4IhB5k/L+EDU1ETFjs/PAK6gKaTdf9r+EstdxbVWEybw0NMRxwlKgq++kutgzR7oZWvJ6kyDwsAUtpl7Ub6boPCM0XUAAJejToKaZeIhLqPMAJRmHchkiE1xWn+XGikXwf6EtdU4Q1qRqSojpey9B4DAK9w2ygxZmJbo0zRuEMAqr5I1Vmyl9cuJfenBvViFrKE/5kP45xIWzxmpsygrgK4a9ev5lHZDs3RLBvEMq01/SXpyWZ3qbE4z2IKlgVI+4fL7lIxM6WMln0uhTNqDLHth7rd52LeiZLgmHVqGpzMICSHuWyPsq0yVIJpznoR6xqx2JmQ8kBJHBgErryyVzKKmi283bhgXpBtvBRlvPv19XO+RPPr1a2Cv9WVv/51dtrEQJuSuCjUEauLM3MnKHFnoWKoYfvfySy+EcfmdOfza4ibYr6U2ZMzG2vOiMuRcB+RPPNOI89rVABL2rgK9IrsQxYit5T4BRL6bfmBJd9bLMsnSwYshvMyLcOs8OY+SpHHbo6Axbc7c+o5eBgy+xpR2Dc+PHA7w/AVY+y8SPlHxPCrakMFHL78p0x9eYs/1cJbDsHU5y8V2BcnFD5qMcUrzgUAUF4E2SrN1H1tXuIENLHttj3CehiQd5rSQyDzBIHo7mCJZls94fi1ODYDYRJuI/9H1zbO43P3bfcQv25ygJ4b5ujbQzLYZwbw2PT3Mdqezi2yjtRHDJOmaWIEpM8OXtHN1Cu9lkISLyMZX8siusE/t5zR1Yh6TsZk2jHYl+18Nzp/daBnylKktQm+Ffa+1pcRC0veNOto3zCAocZRE7hagkGTjhzn3mUkYdVkfzotqmhn+qFhrofbB9Zqs4Biv7yw3CZh0QKRoWuF8Mcxs1weg6y7hQ7qRzFAUJ6oyy+TloMPYv9yQEKG+1bDFmRg4jZBxvgucvea9+HhryiPDX/suz82+QoVOLvNfAs2GwJFVepf5mZKeCaRC9XEQK6NuaZpvPUClU3SWcgDQTPrB/bg3kEx3IaRJuP/Ac/XHii02P3w6AGu6OsY5rdxmUkRg3rRl29/wHNbdjRjwBu4bVvgK9+Z4rWOsTV90dLGVF3tamw/4k6FZI8Q1KTHxDquLwwPd/bVuC+Hm3X+N5HIKo6VG457wwxIlf/SxdhBjMCRCt3/FNJL0B6VZxBXUBrNU0dKQEHI3ByEL0P5pAPepiqW9y/Nm6yuUBLTMaoZFatB1unCzDVpU3PJmhoyOz1LQ/oggzRaZOumVJidfu+b8AE1qO+f/3NGISiLg0Bpgsbt779s8FOFieLn/OAR1xSwQelURb9QONmZT592MlEYync5TwRWgvVByGYckZUU1AcmECr4JUFN2a7rDotdiDdB7nqlAHScyilKaOsLugOCn695gl3uy28/z7sHC4kMM43XxIVB406qcL4vmyzCVX3OZCvNTudn+UxDZu6dZl+lX0j0xK3M4eev+bwJ88VVqf1xLhgPX7Y6bJUdurxhIP6gYAyMQhJ/q23WigvkReZWsTecpqVSBb/r5DWgszCLyrl6lAgskAvMJ4RSIGL/Y60EffiuwQNnwQEgeGQ0XZ/TiBmI8WU7i1/Jl2RLdUBAYMEtkz8Gf+/KUDGoI1IRPaJL07IzaeGcAgG7RhQKIXpeTMwKQQVNbhz3CQN9WIXrPbVEoqRJxJlM5CZjxA6XVrKeGzif/C2zhvPX7Vm8ZfS4LQveuhCV6+C1nStodVQ+xdYo4Bv//OCsXFzvtyXgq61WImlFLkKou3wRtY0pvhDj05v3oJdw5xi8pcusqnNwGnf53b3rXbKQAEF0rnpclv20ez6L5Rx54jtbrHS3Wy4JYfw13wWPDLCDevM6SMCBRlyicArT5XjPmCkpWm8/7tNUaCqOkrt2CuffnVw5Iu05MXEGG05NMrrys/YmIv5pdJSAgm1xoza7saIDCuTGGTBMyvODk0E+2MfPTzkVwvEbPcJNGRWTGTV956B5aLYQfUuXDJvZOInqdA8gMF/tt9ganXk3pAOy/XgdBlhMmSDVccdKREVk7YSU3sdneBJkMQuMItC4eLEOKENogTwULx/r2c5TECwpRxeBDluZZyIZxb99pXavYzas6bU9HsxfOSO1vo3fKUk/icutJh3pSDgn+WXDZ+GHBLmDO7+kfH/OZB6FkXOvIIR75cGZb+O0gHjHSJXyL+x6x84vFZBMem6oZzbND2YqfcSyTVAubUbr2bvWhUHeW7skemIOFLtZ+JsSG9D7Pk6vmvQAEU3I/TElg9xe/qxtXD3a3DApe7c6a6OwlrbA60cUp1Rek30xZ/KZ5lsNr4ait5hDuhdY2DRJNjIOyQpx7STz9nq5QQXwLWcPYuzGP+Wb3byrolRoT54k4Mkf3imokpOq/xoZy++l0gPts0r9YcBrGBlXhdEzKiPJNTnUVDYSseW2M4wdA8cvaVmPVJcRpvAM4joauMTgfZyYeA66snoy02gAR4lOzZom0dhxc9fux/qJHIoC1d1QMtKGl44rzutweHH2dn4sLfLMpIgyf4RFrXS3zYVQg0T3dMkAeVvR3JayovVeJdn/pIHrjfRiKpjeKMDF2fl50OK68S1sb5129V79e5JmraNPEey3u6DFDsjx+k9jXJLMYadH2um8magu8LAnxqwd0F1UXSEkl45onEcjBvBLyEIJ1GqISnLQOynqqo+LjWvzB4uXXBo4ycSnfRh3tZQMxvM4JhIIKS7j+jaB6xmVbo055i0i6euw5FRZ3IlijkODtWtfbVPMQ6ndsuw5X2H3i4Mn1LQKdXI/7Decst5NflDdzfSZ/j24igwP4BNF18Y1Ecf0CMrrPP9jFms/7WrksC2o7lsJFjBptNjQiNaQOYypePr3OhXknzL8ryEsUNhKvYvJtvNjv/xgCqJu4HAK0dIKSLLL+XWjB7mSpRRZukI9SfhWbImlmSz5S8HL0o0F28Y/RqXR+rgdAU6B7RVULFaQSu2Dc8JB0yntBk2XSpczp+VBGeIyMS4vwZwoWz6ILqxEcxAPUgHzp8ZzURIwetwDr2RKtx41CSGAIFavwY8S4jwro/lXgwQ0KYx4Hkd9noGtzvN3qjmrWSzFF59eYT+gWrLHgsq8xuYnJSaTrMGQS4O1EhrK4GRDfvPDnnQmNIV7rf893sH94vihkSCr47KAWACIEH3A2cnLe1CS9kjHxqWw78lW+AacgfmWn3BHyJP8RRZGAaNiH+VNvOtRmuJ9HaR5KtFyI9bcsH6QFeUW7BKL6CDhkKscF8yrjXsEQ9S4zdOLHNP4erpYedhAFBcUXrIoHaFQgE1pm+ff0C4Xd8bml5Hi3yOdSelmOcbIgzr6IIhVlJpadF0DypI2s1VVxxxBKwdy5hAUH6uc1PR3mMFn5GXlF66T9vXPvAUx+NVd0lIwX9T+M4v+ERS30gZtpvRpsFTq8Kp96IVyp1Z3CdPaNclThRc4k5/PudAIEenmtAEO5Y2YTDD94VjJaDsLcT4WTS8R8/49FqNgdWBmJKrVzNuoy6N4hS4YgxynCIFFi5PwXqehoiCw+OB90k/zB7cAm37f2D6lxz8dyXB3coq8ln8isJCw/2TQr09lLWXaFUgZ+szpAb7HIHaxTBskGLzPIXAV5UPqAvrm07KWWH4OXT9fQCBTNlJu+LOtNMDWmhv3pA/7KKTaFdr85Pole+pAPgM8HEghrK92XWl7o+We9D1GHu8YdU54SyZ2/foeNfYa4R8/w4zoqTZH0T5/7p8adZ2NX8PXSH/TweP2ehX8wOKgJ4yCPBuxA+1GNjsH+as4TRmOl2183WURrbePtJIyw2seadJ4rHgTjQlnK61hsjzr2ERkMo7LcxexdYcDMztR/tVc4QR/Jqk9m9T0uaHfgjlTyg8Cu20QSQq5FVcjh2zcdGXzVZESY2GqvQMXSrVvyGV6RqIj/CHdoRrE6l801iXVMjVKGbuGaKYsKN0ppxvEVF1c8J0DG/KxdeUUteTtqx9sTzyR/tzGHNmq+Xk6Gbrqh9tlbuBgIkbbffkX/lZ0hiIU6zjpTuNhVNUrfJa6rH/8uZRbAlKochsQst29wEgfT+cNmEptF3Rfua5U8iZSlOlT6ys/rkf9eOgoHzpgUBLqk234L9fAajtrt2m2jjl7NLyRNq04E6qbDmRff5ficxxKZ8lwt0GNNz/CAAAFjJzlonAAAlbGG4vcHXAAI3KHY2CWNUl9Tw/1Lzdkz654kASjMmSOuwcZvF1Jza1X5Sh+sUn76/JlLl8ByT0IrBcM/z0hip7WYpzlJr8lLKD6zD28oxXF2cT1kThduLiOZCfnaUaVI2gaDZRQJuS+KuNI5zjZJhghnOJEAaFbwu+avGV7Py6299DYTmL/BFBf5Cn0ADGC8exV8yCHGj7exuFn++P/eFSL2PsZONLyHbWsAajNGEV5P/6ELu3J6MBAS30czU8JVXfEixSAwGw/i2ddW3W7nS0ihsJp7YEGx/0SN1Cf6By1eeZDF7abnvn918WJDW86IXL1qtk1e8ywhALGbw81E+lwbzm53RHdHietQkNsYb59gtJIWqEe+2XSyuOhNm5+mh6BV+AdKgDqPebxHU06BCtssN8FThhkvBJbnIuRTav2RDF0qzr8Txb86hlDTH9Noy+JraY9btzztwr3P84K9PB38wda/QhGauWtid7WGSk5kiUjJtTJEhqTiASpVrUxIpJ8+5zLiAp8tE8VjkNFgmhLf8EbrJrgkTSy2U0LL10o/AE2meXO/AYG6jjYAaYI0F2iAjhEtluX9IpLLy5HZeFvykzKMzhwPI+LclZK+bmuXv2PooEdCqrxkY5JRweZrPf2j2dTLHuRejmojbp9oLDITwptGMq6cygA2DWmn0A8ForpIaYzVs4TjGuS8xRbN6OXAiHw3DwVpL2Q1nJffKWOxdS9CfscZi6YhW3aq8yfgjjPBbDul3CtM5T4TOp+tRjSmVViJwjHl9RmMDd/1K9H0DTT6lTKZB1IHnD/6ywju08egADauLWhHnIdCrdgCxLVAd3fhAPpfioA+n3UAm1WvHRGFVRugdDE6ouKRrqsH1fn2v472n0QAEMVaVp2j7rBnL4AI051sg1HpJXHpOAeFwGKQ6221Qrw+dW4dSKBTRK5CWBg6vfrAEA19CSLc5vifvGD0hJm/qh7LFaiN8t8LSqhGHuPULfCQJ2USST4HD9fr6yJQCYQBOOgKJjIhLGJgWi0ctgD7kEe06Zj8fnIM4Ry4bMYEDOYxtGPkC9zroK5wgWX8rHaKXgOHk8hNbsbMcYfb5wkVHgRAJs3f3JJVO5vTjmGLTbs6fvP55KqAOKvXePE6wtDYhQ4A5ksl/NTDVp+EUvNrlckynBLslD5W9ydiTDvyAEfvD591VrAPbyVeUCJRd5lu7ReO2U6YZveyPlpt26OoIWT9HdqXXVgaQJ9Y8MfvAEfhV22ykQzCyQaFSvc/oM6Yk7C/OoWOu9PViJil74idOIRCYBwfIORm5Fh6fKmBzBE2Ll6v8RkwWni3GBrwSvm1KmzB9hpYNcEyQ61B83fLbf5Q2a0vpHxosjLpPY9JC1S1OtXKM/+WVrQuxRMwu9bJG9BU+SDV8BgvpWkRCerPQU7K6taxrETGo6frd6faUm+Tyd94tPOIcalYkETuoBK3iPcBEPrHilaa5AbD7i4keKB+N504bp+Ml9rttOF2kxpHzQ9xA8pA9I3ToNBowH+J/kepPdW6YpLinFDKoswytWyJm/QCpZve4XuyfDWDA3fIkYKOH5v/gvkIeFAUltWxy4QCRvA+iC83r6PR9e91aC1+sRKBeLN3pj6K0Ab2k9XfQ2eeiETIqIzVz0oN2qoPwpTS8IZDCMqE/6MF+KJnmklXNV+9K8ZUM1uV+/6pOlucNjTXP5fLRMIglm07vfLBB/YE67ZMp2oJVrkEacEeTmJnHLf3Gi6zf4x7duJyowE6dQy79x0LPcSBJjSkXio1StAH+YVpU0K3yHoqQL/kWowlVSDLdPJaRt5ds79DRewiHhOD8IMMAlZV+B+GOG7ZClu0gQoHpSvzjk1yqB5YhOq4gXuqnp/ffnZ0dG2iqfyCmKA0VMDhG/FuTnwnw3qt4O9PtJjDBGq9FlLuFjws47MsN7tcLzXxhpkkIF1Q2QYL8GYKM8oo2cuiOCCFl5QWJp1dZdS5ID1GC5o9qa5d6L5gBYKKve1nV07/yZvo3WbbnmXYDc9u3mvEYL5/cqvwaiNGeR40J6NGsMzhnVwbjwhtUv4dUorrT0Y3j97AgD4pEvfmXPBlx75CMbXVpJaMQbmhaf5ReHFB+WKyT0rkP5whrbVET8LrKg9DSZF7vHd5Lx4N+M3wbMsVZsq1xpBz6JfDCVuM7AYthCjajRnt3DhXxFlASuUjuDBK1nB1oNCVfO5lc6V6I+50QQgTuYtBKQ4d9UmuVWZYr8KoDvCUJS+gZzOsv11CXHS0jRhbCwu0PiwbByWt2rJBkKqkiruJJCWgZk5Bv9VTB5tGrrvKgbn9h5UY/4nMFIaWOTQxUKoizYdH1t/J+SMN8KCg8yF2crywSBA4b6Y0EsAtFs2yoVpY1slVchTjrUVGBaU0+U3Dm/+DBw4HKyCf42CVGgKkEVGEJ3dmrfkN7H8bsyOV7dtXsnlrIa/SWT9h7tkrsvncw8he+x1z+p1Vs4ldgdzLi1yvJq4h5OxLGYMJmjUkc3mVytZP2doqj4/9e+jT0mnufKsdVhvyR09cpJWOxzHgrVDrQu48yVqikt5wO0yIQpgX3VclKjWLP3w1KkX/SCjORdXKzTxPQ26111aI1TE/75KqNfUt4RuYERqBq9qBOMFu4enIp/O7Q27lLTCNQAYDngCOhuH0hVurjv6qaq56DfRBExAcB/8bQF/1usjJ2DsgPKFQRPvL1uH+Tq2muh3LhSCBzR+FwmMU9i7Fe3Y5dNvcpvqCuvWOYEk5dDf5I8sHgZAcbv0JksQy5QsYcSHZWpD9ZA0YSsVu5aksrh6PkGbiLiGJk/npbAbCZ2o2kgdjDReyFTmh5vwwiS2mNQGJhOPZHSjoQfQED0tXR97b+QCtuvWRuu4G4uvcBcgMlovmaz3XyFrwh8ca2ucoPTFcbl+6/UjpqKFTwjcwUVZ5mCuZd4YKmmfA0nPZ/bERobTw+TjbsNSUKJccXbHzow0V9vjC2D9kKze2NVIq58ZMiWT0uCnKY54wJ54uqONN8/TGHAHoD1gCa+aeEpjwbyHX6lJBIVif3rzJj9976NBrvRlD6RZAcYBrtzb9uwo5VqJHDtSuQ3jUQae269hIu8D0ae0d1QP2jE1z7ZavuagVzqDXg7sLyImaWV/1pM7uS8Q0UNS8dsV8s4VTcj27Nk7t9MxTPf+OWrdlwOIujwfWvvH1UhOURWYnRc1JiZdG5jzmkDE+6BjVgW9vFtGI5Fo7Oal3jsgx3XziYomwWbT1oBpOFnyIRUamv7YI6u1XB+k/uTymyw1wEs0AMDLt4wG9eNr+vE3cO3MOya2OkcBcl4lt6ArPIAnofRFTD67jugSZt8M/Aqvae4+qlK5kIDiicKWvGZGto9eM+fJx7i4A0QhQ10x7/IdedDewBaLmAD3SjLw7udFpYSDzIycD7xMADC4j7GxYqrzOOj4SqdvLyo5OHM+ir8y6HcCHr1/XlRfwVcSU5VaLPaTdgmqMQJzl/wNGCzlBmE3hFL5+StcQ3grUUvpSs0AO5JLMRAhoChFAmCCxKzsU6zUuup8CX3wFZGIYiM23HIiW8btxYkl0mdG0V/vpoMe0wZBrMvT/rnn+q2xHCaRhOE8sVgcQLCZw94lO8Wp6xYqFEDffdzsZ8pJRfZNkRyY+G+L6elBTbo/5Ti4lLSZMVEuOUPsCg4bxBxMRJiN5jK+YxAAZb9OGWF7ot9wis8e+Dv4V+zKatzZ4avfZY7IazpF0mJMpG7C84DHeA4w/UY3muWpH2GrlGJwCe7faiBV4eGS+FKEvVs/8qnwNBSaQECqfWFRmzR/HVbn9Z2gJSClDKKhI5HFCVBYoHwx04C7HCLUoRIcEU81Y5fNEdfCtRXSTL6Y//IHm6EjY3sryLvY/kpHrWx6rmWYRuS0+yvxe4aK07qlAaB/vtZQL7nS5qgAVxoILwIitu5r6oTdI9FTuOe+GB+sLoMHZ2e2zmgGN6r0DD/NFN0lNocLQmLregi5arL3s5+WLBLa+C263Hj4McS6IFwH9/4eAXD4yDt49ko9ORfXNM6II2qafIof1JQ6k2MQjYOui+JVHsf0BFaRj7Ee9cJFxvjWp6SsAiw3g2w1cws9+bIJZqdf7I2nbS7cGnF6wcTzBWBnylQYQwZcYaEctg1fEt5yveMQvFbgG+f8G2YuMlK7SoYyFc2WcEq+emTQIziCBSOYK+7Lqm9VJhy/q3wGy0hTvs1Qsla7rE4LUmRItwnyZzCrp7TfBTZIi7uzFd2itDsIPeHtHk1aIZ1FgmZx/+udo3S2JNIZUN65gJegErkSaqH8HpKPfkR2yhwIJlAnpjZuF05Dn1hzXyup9R4lVQ9pXt8uhHWAX3/liASOhdkeq8zxWSjjilM8c2DZdGirKlkmyvSaPgO3K7fPE04/BJzKRnia16R93KlLUdtpubfia9AAtEnSmAmsByaMEYtgsYgMu1g8TLfwgjvRoP4kWnnvvbMQSh92/pH67feprD1PmIvWWAphi69fQ4OyqSXwrAuTBRZSDNrDSpxmDFiM6RhDCmgxQaJIK7JV2YUtdT56BDopmpcV3E4rWqvuMXIXGqj6WyC3oraZX+CPPYZ+sGEhbT9T4/ICI7K0hyMJMfvVWaTrSMeuThsVv5WikFelx3fM6FfjpuXYjY59CgSCQ7XXOc9o6/AipZZbwO+eQQinBwPtofqoDplVIRPh0uralkqXJW+onMZFWPRwmejLgkTOCEcS9B4ATRFeV0JgxidIcGbn/lq7rLOKjLh7PDYCZ5R1EtZInJhgJK5t1QVc3fmnRFzaWSGcvYr+bevpUWhwT+X6FO3FGVAOrjOOBAQhg9TqMsZ2otkWR4upvTjtyLs5PhQ9p6DsAWDNT4fWfTPNyopFhDNGyDKOVIC8B8qyTr/zK21XNw5qs8/YbweWb4gUFSxmJrAdBWH2VUke+vM+whoL5PZRN+0HtXW/l1Nbjc2BaL6zOg9lH4id4AZzw4kWI/jYgulaAJR2hy0iLUfyxD94gJ2dLv3F6y/BhU4LfwFodt6AsWj7p07sAC155CxIJC03hw4mQ/d8iRhbEhfp/F3SeglNRLYevvSRdgsZjZ/lVuohCmmhsba7V89kMPFbKRy03ULNMBmQVXXpYDTJgrLmZbAETqMPRL2lNrOxgMynFMl5RsfNt8b/i2uf5KeGAwn2XPzFU3ug/70XJ8FSTjiLQJf2kueH02Yr/t5mSy4cJRLD+iuTKxcJ8Yhbo7DmY9cvOZca3es23nMD3CnSR8nj+cQz9npbSYfnoa+P+Qt5SqoXaGwtiyaFrX6WTtFne3M/9RgPE65B8YHV4hQrv3TiDMmSiYtUUPP88n2bmzNYhJGN4KYwS4o2ZW1z2FWX2MxS3jHJh3DSq99Q+9zBS2KxlLgIFY8p7aDmGlRdC1CHv+gr67wFqGCk32ngFZ5VZ7Y1QmLJvngedD/cKcxN5tJArvvqygiOw5nr4cS+kkLT/EgqQQ3HH5Zjo/oQ0gqwgdwtUSzCSKP5gYLZznY7SR9BfchcTD9p5ryGRNyJAT3p3+MCiG+rf6b52M5t+RxqkYMKxSFu+Er54PknbRKVwRY9E4hgKLRAJLCRCYIJasbSRhNa0vPe8PnDDvqyCnybAR29N4GO4jR/YGgh2dfZ6FWn7/zpyaGM+uvcIyL5t9vn/RS8FqrCtGVlYF3rU6sq6n3JT4YYmEerUjvDO663NfOJYzccDFfWlYdbwyN+GhFP6HK6VK3oPq4MlthtwxkmEIt1YKUbgbsVBATCQQrD/q99tVwP13sQfjMLm6kcIlmQHhm7LmdsPgeEsqzQw98gmIpb25nxhIJ5k6oOsb/bx1RXNS4Z0sYr/GrHMEayAH/xWIqGGfxDGVmCugbib+9Lm4htXio/RF7aSCAptYo7zvacnW77/O4l1uId9DkfyW/0P6XqxB+ThhdtJUxdhY1MAsmjHLaJLC6SXej5y4cf+oxHTiABjak1DksnRkqUgd/y1Y5a3lmlVtWIXx3Q70hcknu9K/Gw0BnvrZJPtbkdhxelNhSagdBbnkhmelbdwHq/XKIVpeQoysTU/lZMu9vObB+5/JpNF5S0SeOliVBM0x/l8mxchsJMq2YbmB1mhei81J/hUGNgsAW2VBcy/P6Obhnu6BhH4NQS1fTpVW1p/Zj23e9Q2Qjp8EZ76v5HVuBFB0JWvsagDdzBfNmINGO8NluRvvm1jy+rXRIlMM3EXZ/muBWdFwjZ/mfCcnBXnFbNrL4/4eoENaxaMhD8xDqkdSXDkHGtwuXai0D0b9hO5GO8UCmoz982T/YXhz3ywYNhzj6ouo7GkfEg0IK5vaoABoxDIP7x7FcAGuNFVk7bG/ge4dtxJotFUup/kNBpxng8iv9AfpxHo1ouRB4Zw9e+AxYWYr+xANIaT6Ybw8Rnb9/Jqebj8N4bb8eY+5tK3OFPk4UGbe0ZQIUAo6seDR1jtMSdnk7hmLKbJb8kgJrdy2eT8EE1fjh4NohWWn9eyzQ0IKPv2jhSuOvyMuwCGBcksiHmjSjNS0QnVsFOqnf4RtUHwhpk9BEn+IokzsH+pXrhwYSdfni9QQgDBbvmO7Isw4ifKGDvNwZCHqYvlCrWOv7JervmZWjB6X7T9N2NJ7YxHNfQprfmwGpf39/ZCtqrOYDKDg1Op1LmoP6l79wZJfUqhxR44hG0kOHXLK4UgDqAlW2h28xGJgbIRzSLdn2pM8jzAkGHQnPpmNaw9abAFuF88Sk1D1qJCZ/iCAbDp3lhe+vaA0xfg2Sl/spp4hiMG+pI4wKW4zJDOP0m37zBfr452VYs8IV3Lr9dpVKIjbAgn9rp18om7Gm6EnLYu2XvVFNoSzB2gXCn0MHIi5m6BPeV65q5BCi9k4IlfbYPJU6Jsrbrj8RJo3ExG4kvybU4kqcZRNLDfG0qb8Fac0o1skKbPa607Okhk5XSuTWSe39NfPLMZuRDaO5E/sA8AEVn4k00qeucyKd2Hv2fPR4IewAk4EkeoJYtcxD/CUVFlML2bJQvOkDbuE3FFpM3ityYSCqlQI/bLE5PdndxvafuMnvJFkNeC/iuH6CkCqr/cGw+uCPAzjx5fL7k/+20m1vp33SLL9o0vNTP8mkRJAAr9ysHAOjtyWJPDjgpmZ5AYT16EPo1jbEilSnRdUOBD1buywDOLhurDJu1CJ+uVkk56vlROh+SOct+7C+WyrFz6ocUNCZv3eWqm8G6x0SKQ+XWZ34f754i8N0EV7EaFx0Ak7XD5cd73KV1SEqaYRqDXQIr4vz+0jC2lX3Ko2qVvRMn72YLc0mTBMBM4l1+TR/7D6opbxL2RQLZfTCTwZOVeRnlYZ+vuAvdWG9QrM5/PndMdECE7Bof9n6RIDatsSKb/ORB6q0kQ9TUlhxiIUrSL0hYpe2HF9Rb9Ze7ncmoUfFRZeBaaD1KkBlTWPp/g0ofnOXLd+FxxHpJVN4uFVHoLvE6u1nfRqnuiRIbM88a6LPAcdVAVjRmITvJmRFM61kwtFOfgKzjUB7ZSNPZy2r6mnPh+JK6V4nWxgAzIFeOD2iAXf6BV9fLk2BcTjT/sxrLVsEQoRvIn659gEtu+6tDlSzn5hFmuoXuSi+N+IlpdJ/TvHT4qz2sLQjFK9nggZ8ULF3jWARHOR8CdEI+daAWWlR/RY2I0ntaIVsAUIaybrcajWVhHns7o3WK6H0yv3wpEZD1ljuYscDKAYl5JGn5FqPaXIOBIAjeUJjuIKE6lb1Mu1HBh3h3qpTP1jXBQSHMNfDH8xy4R1IKVB+3iUWBOJFK4tOID+KISokMgiX79BRdYKbMBc5IMcrK4z2BxFPUX2NyjW1+FYUAjWhLGKMXyk8YTE/LE/ZNc7UA6B4IL05jBck0APqab/thzBU9995ktSg4awKlLSl1ibDqF3sg6fqm4/W46qAhtEGmE9cCiERPHsqOKz3q0vZzjCekWhqvT+LPT0pCrqC0a4iEQH29O5qZ8F+Go3TRFCy0BHzBMaIrVoufuiNwAY7YC31NqeqMXC3FAtEzB8n7T2Ke49srX1mFtjVEKH/0llAvwUQadim0MUwOUnMDzT1DVnlHD3bIwYW0whY1gQfkPNBUkH1Qwmo5NPdY9F9no2yBP0eusdZmcK02rIbbvvbMu2xclFMHNgmGb8vT+G1MOFJC8EPqreSgJS2WeQszHsRdjzTFkbR8NuFXtMDzEIM/m3b3vVGiZdS45xScgD7f6574jGT8vOvHNzSePg0U6zz9nYLrbM/6TklABugcc+pyGZC4RH9iKAvZ82ASH4F6iD8jyFpEHBpQYTl5rRVgs/tGgvCxC/NPoULlv6TKnlJQ+eHR7jt9j96VU+F2+Lb93pmK25zxUTbgDwZn1lrrJM8kQGOgMMLegCX38iDCf5RX6BzLENNsD6oXVaSV8I1t0eHjerzfe44RkfAI6QT9mYldRhEFqJ8NB/MZfDoLiM0foyp6DW/cGRjD1kmL38UfBUG13fl5m42GWfs4AF6jSHI0Kc8+Ms03cW1Fug3wpdd/OueQVvu1qZ1k5olqpv2CpEVtDzdHqzKhk7r2Eww2GIJt6Ov0x9iCaEvCf2SuAInoMfaQp3oD4lq4V2IsOREz3yrE83orzt3wgwXlSHc4pZV1GGwhynNnamxB7EWfOf6XbJm+uGC+SeUd6aKV4w1w2lSJR9E0hyqoN9u4kiNQM3d6uoi7NtbNh0zDiW0C0MLb3wpEm26aM/dNFfpTq5dGKW1368+rMfSBfkiQGpsbJknBU7gF8gh5qH4FvYinnLQ9YaQY7PF4U8iyfuACgmMRyvSlH08hP4RrpIXDkaeT5XWuWbKOncquZk7uVLTtAzCFFJciylgVhNGNFcn6e2ZB0qZ1Ab6ceReaFYQfIymBUtTIs+Ebpk/mkN7VXXr+ejgBNME4VmvkYlsZs8lZYh1nPefv2Zn6E4tICkT3n8An9o2B8O/2a+6Vq1f4ge3EBNAOtB50W/sGgTSEppyFRjrLvNkgLI+pY2UftJcWnAASWaf1kLd9X9s+4NA7DgKx3+GBV3Wol0szO8/enyE1at9Ykh/+KuS86hMa0RKYXe4rvOUtAtkNP7ATAvd3xVyu7VDA+Yi7u0+XzLhpmkGrHyRBNmICnoqDekn8EHpDjmIm+Jw/zTYxoZYeesxnhy/LmZvI8ArQOGqGhA8/Yc2ovvGgNxjNBjc04MWUjXEWydePee++dQjwQI33KELhO9l4W+XMGA5id9/dbZ3hXKydaWI3avWaGx+LlWHoU7TW9BGAhafREIJ3jAOFVAbAvS604Rp7EckCXJlNvAWgWww2FhvsHmqSL5tv2oU7+9g34He+WUcp0J33gTy4GVfHvtvKnG6qrb8S/syrVUbaqz3QNHUCkrbbJWAtZTE8nMnMUvicuuKlR2LdE1HBwPC5ux/uzZt7LJLHMoSo42Uhnu+J0fqcD1tT3NXWzpZ5iRkhH/j0N85Y6bRmTlEzQ7mTWMbpXMi0w0+7xjVAopgDDPVGzzPzum/nZQTeipJqJiTwDt7n/Rvhom68taF2ZblBoC2BpbhhcGc96mrLAF/SSNvw+Z8ovuO83wStDROwj0HwUDFQyoQruD4AGFs2ZxeNsSXJCT92FXtXr13TwHSJofCTSEDtbmfIbRgQ2OU/dHQspZv7pDeQQsNAUQGhIj5R3TZz6PcPzMuiDissp97fvn6VZcUWPXRp5GuNYg0P4aPNE/eenNBZcXP0mXNweuLxcPZsKV/IZvKjiAHJ9uHv45hmloOmxVNz1zP4h9prFjYK1G4P/f0+EZE2x2DiBo6B6C8A1T4Qw/JNqmihf+SposZRCZXrqn45hASNcfNz2Vg8Us7j3bXL0UpU9CQXdEsJxX+wfwLDI6ICl594RuJUE+x2ofYC+Xq7aBS5BN/2uX7m7jWzRBkg3+l0Hr0TaoJvtiM8Ah/P5lTAmY7BnGjGZhWoTIAn8vE3sbuM09/v6MLHIwhWO5oMz6lNKRylZCdT3veR/KsNpV/ONXnGR3g/oCS6hYGfiM/1S/xy0xHF4UXecG4hLnx3sJcmRTXOvOTdTwZV2jvze7Qd4r6fbp4l+G3bjE/DoBUFPJcBz/MWJFe+dhFqBYHBpliy6KWLFJlCNI7wXMDDvjO8yTXEG9ApO9FgwA0JGSjvoWvEaB/jfioN/R04N8RaCGm4lgVH5JdCLa7XanAw37EPs9AJ6j/mgX2Y4Oz54EqlouYBvbQz4AVNu4Ayn+0XIodOR071f6B11X3lQEEPsemF/BRzXgLnstxXgHqPpkKBW9cSRrVCoRruB68LhseQ3Weu0KE3lct7az09srhi1WQhwo/X4582WP6mqIgcskiyAvoqCT7GWyGZbOu+HjvLwZh5vio/SzmQRWmUO+IMWmscnS7M9PNo/fMTbu2QWTk8TOs8ncMBEp7JMqEZ+z9z3CUt0U68JsifW4hM65NrOvHCiOjAFThbamotULqfffXZjzr6/iq2dKRl+U98vXv7leGgN/2ttRplga7CrE5apOzPMr/pC1VBWbJeG2ftEAiUvqr9y8opsAadPIBtjqbg45t0JXIlamI2Oatsr1R1eGY3h1FdLpYkz3Bhn89KcoLPKoDJ3dqhwfZe9l/FJytvc7hM203nNePcky1BbnAZP/AlhUlOdS0JuCNMLHu4TfR8OIi+YsiZZ8ANo+8j32Mh/XPb8oXuupLnrSsrxE7DQEV4YAU9ryXPHMB9TXN2x9doVqtdmpcaSSbGDX9yuC8Epp2mwLA1iJHohm5CGefk9AU8JSKZPt6w/c47wIjS4OHAtgUToAZpXSfs6kyN/Uoc8FqiljTXndRsy6IbK5/XEoybd6mUAEq5QRqnX4wmvaYajPa7qJ+r+kI+rXwHNN2z3UnA619qmB3q9m1q81mzeekeUFvy46Fi80v/X4zNurEKgolylKnQQ6hWORa+F4SXsA08VrMKJEW+yYgu4kwyeF7Y3VdYh+e7my1orxYBxyD+DZtbnXBi2ngJ8OBLvEWqxbmLiVleOYk/fECYp8uL34uzWRbE+vc0tElv4AOnhCChMT8vUFdTieT5eQTtiBOj9HFOcOikYdPUrNSgDU4aZSqgG1oXAfYFh6ojx/Io6o4xcHJ0/Edoh8Y5lBYHR70VOzdnhsTvXZ/rTvP9owMjCzfp5TGOpv5AD0fXHWI2fYCfew446d7VybyXCHOgxRu0Yg2pKRGpWH6jxmROlY77Soitm0BRGlrOuYZsQruCi9EKEYq3MSB7y2Jb7fPYRgN1sOmesbfnogJprv08QSug2pZMetHikR0/2X2B1fcTmc5HI9TiRsAHeucRrl8zG+WiZfJDBrkNAdnKcJI4sPINu+7UAXJ7961v74P5sCsdMmkezhpKMQCB0EpMRd1QRcio/Gm4Q/gqawrwamF23V3Vb4O6gUbs/t4eim/FDu6v7CeyOxOSW+HHsy0VQ0ypgNqyBDnL4Ype0AMnQ7XdvTU2sOqoPm51bXZ6si/KhiIYWNq4RLrwd1GHA25xby1uE861quuxk5kTYkbQMXVBTXleVkR7U0UzneMztJpAwmps9DuXA3W7la9oxdWDUo9wPt0C8+KEZ1+k+Oj5U6+STR+JgJItiac1bgZEEso1iyGgE3wBHSAHrJELTBtn+YAUrH6b+qbsBn6Iud9fzZ8y631Daz8wsCiczOEy1FTT8f5l5dJ/NM52BJO/q0Ba4QVlacDxskMuA+TYaCIT0vBMY1GJI2E0gv1xGbztwVqbxcVXvaiXtItOWCa7ec1Yplkrq8D4DIihoX0mIiiG5aYnG1cJ8Czovb2K19aXYp2AlnZYZUXACtxeseuofitwkkMmEhjNGUc5AppZcwiyebHNWCbv05c4GpvRy/A8AAnG0ralxkUldJABPGrByYqd2J6yPOgBGHkgZk91XdRvMaHuAbHnCrwOBm+upPTL/O1k2ou2JnxcjiS+sH5SgxKyhTsxtsNv+Fq3jRbQdgrtB5d3UAWDR1zGi+6Kpgqy+kTXohAHQzhipz4W5VWsNQNwFoV8q3nMdO+CgvkwIpAAYXSJ5ZVRSO4MOBj26aF0UTaym6a/50HfuVXrJTlWzYlffrXGj726aIvRKZYUPK91NnCMBzpWRSL4jP6FFIefC3ubIm5MVY9Blu+IqbJDZQKKr+sd0FCFRg0m0+G+cgsl7wWb91MjuZl78qs8IrdUu/uEt5UbsFgY1HclQiLQzTLGSUT+KWQNPCFez0CzV5mxSHMEwos2m1XcptnfyTB0W8HBHZCAgYdMmKsbnornG4+f9aNaJA26ve4jxCFNVMB0F8/V0G1wsG+GQTji8ld2fQxoRm6usyWUsRZZlRxHT4M7b4e824CZbhbxx/5j+JEjxMSh2oS9wFeAqFRM0yfCSvEKntiedw2nzXqJEfbPiJpfFKeyGkiM6BRKn2yAH7TBPgBkwXC+AV9jXG/OH8I3LjVZ1ic5u5PKUroMLk2Quk6XfQ/Y/HxHxO0TD9iDI5cUw6pcM9pal21aBqlwOt/cAZ9bZmF4s2irDOuSCvm8PoLaL3k9iVWxLzguwIQwtQEZrp7hYklzqgnlgKiCDcuxeqcJK+xfFG3dJrrkueBLC9LFMAvx99GO9lGnRmEQlEd1vWGNicZkZCwe4jDBY2lKQoHDAGtmXwomniu4QxAbwfNm75At+kdMqbgaxOeJJnjndkcHLfSxjX9FW5ipgpKwfeQbNh3jlEYaYt3sjq0esr6tHmdWdOE9dsglGgGNIOWs2cSZnJFwXSVN5jsIK6kDivzHok4Ng46OfqZRDhcejrqs7GpFKxMq2Xs6Azk61WdSMKZNVYRkbMrZ56Evp9KmUz7UI3wRv5kHX+fvxGHzMk88rJSim3ohRKq3o3jSdERMiWWvdKg/x9RZkBUkooUFWUxvRZ51Evk8XTOIYQbKgPVsCAUXzIGIniXmNQboyB9Bx4LgEC63BaTbuMZ+rKcEHM1t2VXjHvZSwFV00MeVn60vY5uLUlmv4u/4QAc7hegTpVmuGYfhXWq59FzD5HTsFwKM54VijFnRjrpbIa7mYZ+g4mdDSr3LuZRCA7bmhK4N84KH92rpSwKsQ6w4YLJRoTb2OhcPFMGiHGTBWz44jXzNzwhttpS2P7wDEC/vF/82bn9wZM0iL1YJdbND15HX7n1MS5+p0+ABA0dInbqN0lIvWGMdTt99QaIHfkZdluW8O/rUIOiZ/Eu0T1YFG3SKUv1vshKbhwI3xLb0XgwNF33jo9vj4ZL9QBNIob3plRYuVT+lfFwdIG6TTqgUaQ5mUBEdiZ+TErUxt1DH3jYULz0hB8k+fw8XvpzEGYz/FygOpm00s4OoAhVojfJWZ19O4f88kJP6EhtSuzK6CWy/G+nCXg33VRXrHYe1Bg2TQgyqhkN/+5Ih8RieP697p7wZkWmGto/NTWsVIm2AAR+Fl4d5wL97ViE+NcZ9r15f7+zKdkyjo7mVe36JAVoqSwZygjEffcfEFF3QI1AiaUtFDVLptCErLBr/P1mTzqxrzLyuAe4l/v1V9Q3bHC4MzfkgJm+nVYsTnbNjwrXo/aps/CwGxUYqJCuKlsQGivkBGGbqpUVr555B/Xgi5hlerrZf5+YAgJFffGnCKH0cBrPt1jIr3zFfB2pgVMyKUYcxh7MnSK1pOqxlH4AFq2i2dpSk/EgEL+wSLtA6JdLeoP0/N4yJarj2rpn5trmxOHdgZXezV8xDdTBO9Pd344Ipchasnbp4H1tLpp+g8wX6v9gnCq14rL3/+WzE0doZICyd7PEYSEC+VEoJiZLKr4sMjE3JbFsMBXNc2BQ/tgiMUq/MK8in6ZCZTKNoK1O7TzhoydQ+Yj534DKSe05h3mozAsZp1nAS7ZMI2WMkGWRHC6ntrKmYLmKT3nfpYiOSlBAr4jDRnGY1sZrMawSMhvclA6sL72VCtnox4dWKFucQWlZUFX0qVVRE0wSl0Soo6TOr/Hx+PxJ2OhMV2U4carKFXi7s0MGjJS1z6mYy7kgrKiKdNtL+m2uVbFEo+8KDCyd0amyXAMDyf5yl+1/PNdOHXk9vUdwn2wH06Tzce7fkPva+JjJdY09i25qzIrbiDzlWOPyX7ju6E0aETiROCg7zRufI+TiDYTxJaTtYCU16jX/+O+bkAyfd6joKHpzCDmVunsueqwlsNnIB/pB1rRWzmCxvozhKaFiIVD2+EyfmZ3+YnHlav4Giwc1ahqb7fS0seykG66XJcLv8nvTYdXmNw59Y/apr3G7HZx64KmxSjEchPp3WNa5xrI8n4ONmwZT1L7x3l5AM+Hd98Vckwr4HpAy/XRgD/IOcoDVOLvNbF0KBm8Vif7LoZl5H0jhKoIWdtN5GRm2en28igL4FshO8u+Y/9w2pX1Hh/nfYm47kAlHfw+qvI3YZUSOCIkvvd1wzE/Tj2hQGEIAK2t7RTwTYmH6iuIRsmwjIr3G7C/GlAZF/JjuWNJxV1GwCtcD77NJIQHJ4X4euJT1uzcuWm2bu7NrKLXQsThMXxLDqt21yl80QpCGz4D2sXOvdirNJzDMfAvBlJBPbR5t2qqOMGRpVboHHVRmGAr9gh3c6vYk4OxXc9U7hsYxH3TR8GVpsJdlOvd4pZ4iF7lslZAQEvxnVQcjgIewURcO/E5gGXFni2RxV2R4gikkzazPFMBGP50Uw00DF/Z+m6njN1QUifjHJO8Yfj1GKzXuha7xUELHeMH6K+j9m0Q8gMwpvBfJCbJlzI99lg8/Qe8293boU5mt6R229U/JotqXw0hj3hE6qgAd+khAMBvh0fAf0Q+wl8Rsr0yQm7oCbsTh2rBPk080x5RhOF4a3lF4NIO5hyVSfISGO+dP5Jg0ZyosiMLEPUqykDLujC2/AbvlRuY2wTtCaymx1wgoB034MtYAAj99pGhlLuSeVkGjc9BUZK8bdTirEyMQu8XdyTpA651kEl56+wMXFJSHTEeLqgq72ZIgkAX4I8N0+JyVG2uA1e6p7jDe+GOTe6oZ67ZWK4xlvN/a75AThv3J/++BNxEo5ycYx67YPhnme0oYi9JgQl8NulP9G/tyeR9chx/27CEvmIE+iYlLxCmxouFj6H/GLAwNP7PH7oq62Zr4XskA3nDQ0b62uvuCqPnCbSgtI2WziIrJvGxa/vPRuy0vIpCCm3rO3rENYMQHvuFecB4054p16lm4yZCtSFtZXLwCzJgZXdJkCAxhDUh5J5W8Ax6cekNoARJivT9jDZow0Zg6wSYFcMXetos94Eru8xrAgO2RIqwaNvsuS9s4gzjpZMHW/JmHWuIttefSMBm9SVPq/1oe4F++xC3ZBIMVKoMDtmgkPoqsTADv0S+Hms0wca9f2UbJQgCCFfH9X+vFmL9kvPFGCVMzzcm/GxkE4RzdoAPJZYsTqZOIjwceazi4Dz8rOoKsK5L+35ahspnopd3J8vVhPWMS/PU/diFna9k5E19XIshJ2JBTK49A9T+vjhuo7Wvp99NbW0sQ37YdqsfMdfdv841+Ihkg1o1DSXNmD1PWNzeRa9TfwsdS9FBITjZ2tlxWIzD0iXVXvvGjRf8RWsofbnFrOoKybgFyN4O/QPANfr/N48h+Zevhg9xvyZ2hovnIeoOxIh514OHDhuX7Z2of2L/Z/vDRUMncdJNHnO3bsFDambTkwD/fgh4sX7XUCtPpgNoMQYa0wJWRZeEVAr6BQtTXxhJBv36545pjMyZ3xH2hhjIgVxCypGvdc9TqG6j7M7kSydo+JwtZzRjphnB7HeaXFpfGufga75u/8REUP2mtN2NF0Nu3jwa8suFPsOWLRYxwLQvgZD9EnJGBvXA2+4b+BahLYc4MPD10NNcYv8VYtPNNbeKO6DRZE/HFw38aqTPEOFvzYDUv71Zvt0UrYsrVklX55nzWd29avI6rjjTGZAcvwfoHWWz3Le3VXBAaHQa/3R8/wYUDdeHtM/dYPtWGT6f9j3bAo/N7LS78wAhfmGOb2CPqE0bpwdFiYtrxn/I+/x47qlbo/hnfKNLeoejgE7Kx+NDsZG7TjWPyaJahf24HJYhdCBw4VEeIaxtAfxizMau9S7x99Mfs3YXuCIhx46mbKW0dgKeP/98WFPOyV+fiz4wEXQzjf+5IyteWPgsKnriTbpij1Xf0DfT21kVOB12wjtSBXwkd9fK7E616i61q+Ktz7ddAtTtHKJOQ8JtHqU0QEitNlJW4J2ADYG5xrE+FkG8SQ+xJAxCK+MxQOkXNpuro8LLmEiD3QCJ34etJmBmdNCQUONk65XCRIOdmM9vfxmcAnTwXzwOyheVRyZJYGe/zJ2kL0qSshT+tInPJ556Gn2CtJkNwyoIkbwdPNW1HHc6BI7QCxBKiEyJVbrlDlfkJa74AET4dOjXXwx5voSDs976VmobuguPGQThj0zvOMKP91NBlZt50IaH1kUqDsbyQLiKhvJhC3ZNYCbpzaDfq2Swc5Q6+46t2iXN5Wufv2fdteyoBR3nNrDTriJ9npZjcrHp4x5OOIZ6XxJjg8m8KcSWOD1uudr8OfPDTMCsrWXx5Rvn1/C5NV+vgE2P5Jf25jBrRxzKx/JbJoY+VkY4uMLOaV70Zyofo832bc6/rI7gbKXOIgsnO7DkJ4ND/1H72ilMnbbHPHQDYbjJjezfbQS+ehuvg7ei2GsdZHUxiUs0kZpykVURQoDV56J+UV1NdBhv1BdeAutMVSu6q7VU+JJw9J68N2YJjQ8DnNMdx4jtuNn6Q44YYocUE9/QpZs5RTkemLe1v9N7OZhHFF8MxPIyvQPZRa8MoSlWA1OwiiDOXUUU3eFxh38l101ndXdSfZ2MzNcXr/pc//2mcd4wL05qdASkll2kkHrVc7WzylBNjGvDc/AJfJz5Woy6NFsAe9mhkBidVjalDfbSGF20LjD6ZQoW9h7iAyU8BHkSz+/RO34t318MVh60oK9pEcqk8Sbppcpnl15iKGoZY6cP0OX0EDV62adOOylaqrBPN+qM9XE7nVYssP10tdWuyRI1wrLXNkqEGiiwEGIpH1m/oag315QBjLV+GnHtx+gvRuGtW/FXWEA908ueYA4+EzswzoXGohUIFcBO724rxD76156FgsE5snPUCPCCMVm2/PQJ1NeeuYWtTOuGFTN3ojn9f26XkaAJKyC4dlA0WPVQA/IhgKlBKKCXUZNdzrGR3UAogMV34NKj1nd9aJWBzVcYopCTPAVCllAR4bg3zdkqHMh3gD704hJAUlGwMyJkfyoxCzqmbJ2/PtsvBxpfpQho5fxaP3caDfDlJKNy3gC0NWFwEzzEJJ1+gT5LBoF6L/iGAPWfApxLPsMSsNj9YUuYMTQPQt5j7F4l31sTqJlZVJE53cMvQS6URKarAEsbpaMGXBb3plGz36kdBr6U7gdiWuqucmUN5V1+44pdgZ8CQATb/tvu+bbkBMchKUZOhT0mrQQzCw8CX2klSOuA1H6DOs7zYvEuHe3nlVzLDOuDimkb3lvLVsFf+FFP1a3Si5WMQ4yjMmOVd81qj70rqkIff6GbiTU9jIhckY/8s7KCu7Cd39FqvxP63l6zNbOfk1ZMArXnqo+E93aOr6C8U+iOUcPmb4TZYhZQTkMUSUZfEwlUbpsAG39fLVb/9PXIBvNc0VwKmqHmdm2zXgPiLTvYyv9H0BMyJ4rS3M2bNtPhlmdfjxjaj8gd29/1j/Qvm3g9VN9TY2P8NidXMa8K8ilIHvG93nRc6U67o4lpsTUd2eHnCMJz7KcB71ZO+x3f5enMazTf4SxP6Gi9ShHjR//0IzNp1e4pB3Tes77xKn6s77bj4BN4p8hTkSj6IjmCAlXeHb4WImvj5NcoKsz9OZMuXsDITg9iSLbtdxpQpknbcMmSVqe+3dmR6bx0Meg+W7StZngM/HEr5pDqNgsSSSMzqP52bfNIBXo9dfb7fYBu9P78SMVrLykNtsZTdRjsSmLPMkxq31SaD7cBiD+WwJLRHSYginkV5xrosWxgvGRcvs4g/OSX5OlmgiEEMU+cZRN2CarRC0hsr+5KuXzhPAWYIwcBsUVd4rFWxwBX6w5ZrfDmJdn9woaWR8IRzKMeQAAAAABDJ22Kz9olcG1mFDAxK5xjmF+GsYsvVN2vglScXk6ee0b39rlLPLovnbJ2Sa6cGlc3L74px7xvnFxOZkKtVrTUFmSUMl91KxajeOqnsDAbt/7oIz0zvkWO5dUkSQralLOevvxFIWIYy+H+iwCiAAAy0hw6kGWAt5rka01Mphpg1stItRQsKt/Pl83eHCrDa3jXcazWYGf6jy03hZKAMmRC7KRyTRehFWDu49jt+ugi2jYX9asivRGjFDpZmveI3W/QDGAd+x5cM+3ACovGpTkcAAAJK9XOx2Oge/MHOBXIOGpqZEQ6uVYFfwtUDknPIGPL0p7tOyNCHYEwSLgFUmgx/DG27NS8DKvQT5cZg0PX7BVp8YgCnWiTHz2LiJ5HtEOrvIw/7mryA7q+oqt9vHCYa2vtcOk9IpfpMh8FTFM/LqfVN4U4ZLSeARpEMA6dhd5/rY1dCLu7TS81enLxL430P3SPP57sq0Zl0LFlVCBTzkmByt/AJg1A3ylyf1xJWFdssb2euUPjSxficEbwoHwphbT37mNBnm9oWDdgMBCNtdY/rfeHrZzY6wXrDvY+y7A2PrbbE4A1NOP1X3BzpYQ+m8X+kPNysYxNHjTyI0Ey9zh/X5PLf5VlozhE+hk35eaISSLSO3w0kdeYNknkduRBhwYfaoJBpDINES+l11BJoN3anba23hMoPCxXIwm58h4uC7Nz4TY4Wdu/NFLkHkVKAS/RxK/d6PQo0wznf90jEE4ra72ia9mDHMvp2upn7RY/vHOJlDFdo13Z/EwYJPsWP4oGtWmkxK+HCTucjE6qsgzAQyWKSUWfrAQkPc+lez7oYaYH0q+srPcnLfeQkX3mC/8ly1nnT+N5xdhtngI6AGURcS6KgHat45wegWex6olsu+fM4gf3HWWS+rFWYh3TxwBarmPy/Alt94np+KBGbAfLmgXgdyCuFmDMf6hPeJnGsX3pGnx9BRIaDd5BT+ca4mfkAhIlal/lDt9h5m+v4gr4JPfrr+gnaEnEAsUhOy6Lu/IV8FctWVHH7HLA9bjlnm9z9Dog1qKVrOgmsOjFnQ26xdoPHbGUhpCJJLWe1iq4a+LKwPtSSr36V6SUY85/vbVQW7WsfDJpQWM+99X7j4Y+VHMzbrN9wRFJzqT8vKRtAOy3FntCM/7OvDk4x7T9FrTdniN0hZbaNDS7TkTpCLYBDR2guwenFI7SKSSW9yv4/67+HTfL3zH+gZTrxRmjfHCUyLH3ieC/EdtvmpJ56UbG01tl9Sys/uBppvAbPrOTbOuGizjMoE/mUuU8yGfOaqrR32PEa6H7pHn892Vbr2/js7dfoFfFv8kO6xYtITFM+reQkaxPaPnW4usnnMn98ewNnqQsQ9Q5T51mmfQD3kDbkR4j/gmqdailaZ52jLY3PtX0yTyrmXEdkVuQs1TLIoX0vHuTv4paWd8VvWv7JPu+14SiiFhBqyeGp+H+nrtpKKcWKpGfpnA3dB+iszgTz4XnGWdgklYKqnwvir2EXgzGB7Wk1MzxMd3Mj+SlZohmx0v5VHRtaJE6ektnZaiE9ZKMkjBiyPhRbtRAd4seK+ZN0tTDSVnpCCK8F3GGMK3wzsy+ecevmSCQvXum3aFef54VAw8Vf6UVhKeZMc3kZP7dswqIa3IzOKaXCGfO08Jf0Rqy+IfFkRl0/MQk1rIjjB/BZKSzcgPExwjcu2bOUncm7DxtD3p987vysTG6VkMgGAxBAqgcXDIy73VEB971sifTuZ6Lrcts2Fp+GbNbNJfmei0iyQ8eLV6f+pXVAjGT6sTJCCDeFZ4boSIQHdsURJJl6B560/J/+pmmz2FAFQpDp1us1GIquoqXdGYMBCiY/xtMCcGV3I+Z0cwISf3dgdhZpY+PZt3eAew9HwW6JSPn5F9GPu7RZTQP+08/xSUKOfRIS1jerfxe/JCIoyyn9LZyxaYcPD1Oxe3YltpNDryCj+oVJmbPnfvT6Ftl34hhLjch+ZOMKQhvWbb0ciCbkQy9XL/a3eLRIxmS7v+28VbW5LisLGDkCp2gYBuGSJASa/e/CUqrCYN9jLcDE1zArsKgpJGZXiaoSOwSliX9UFLhrMkdVMz/B5Un3IQiboxbCkGD+nQVpxqg0ztb6+2w0wMZxlFwlb9AAYlwvsrD/WY+M1CWg5GXQsv0h7m4lMx2/FGFayfFrFbuC2fOnzYzBfBmQJGWMN0ysHrRN5khmPbv+/Oegc6kiyrhddW3AwIyG6gI7uvKuvKtxNZq6LXEbQxKuAu/o1y0ybVsbRkEZ5pAFI1NP2aHuSAbjGBnIVB4ppaVxPLBod2bNrX7jRQ9AAEf8jqC1C1cLdIknVrIgINAiuyzmp78XW8RgCm95IbAL8OxWPLjlTWSjyboxP6OVrW8rCNazAv6bYVW8If5haPQme7H1OBJLipE83LfFY+cLOfB0mzfqhNmaG8ibsPcOcFV+DBb6PxbHutvh16A0LGVQIm+bTywrOSBMx3/e7RQL30/y5SvB1cb9RM8qi/ZRzRYCGyzq7aiVZBUswHM9m1uN324I7dO4CdAvfEo9CqwWNgEUXyjGkEIf1Ro/bgjHPHuLOZN0CFM0ePZGzlN55XomLH9QY4W9zhgeuVMJVlbtAIxnRY8EIKrGNlkr7oSns+M8kfcyfIl1zsUagB33oOUurF9o4kkWFPO0o62Fb7eLvPliJNjTtHAuMAmvKVEsdBObYr86N4Z3cvlBCsO3XfSR3+JE1LD3qHE+ESidqVUAicPSv7MklqggbW1R0LDIuWLVlnwnXBdRhPs5ZYh71pCYWVUchpFxiR37THbSE4gce28kIjqMDM0OP83pyMgRtnvIQsbK7LaEdY37hoNkly4og0o3nn1rcMTHMF+y9By1woEKdlXYAOxyHralx8Nk1g+6c3BY7rOB2vgG5nJ8pQKWenC7OrqeftNsvJzzBIlgi3CMywoMRUbPE+ZPSBjUAWfrrCbrctDiLAGLva5JJ1CWiD5Ni9rFrHZeVZq0sY3Yo43Ai+FlnetK3D/svE1n3uZS6//a8x+CJYIdkbvvyw3oW80c0u33S/ItJd0H4z9tROeq/gXO7tR1NJqq942LjcEXxAbdy9yN9YL/6rqpEx6lq0uj5l4q88bfwQiwPuc0/yqFK7RDBUrSeKw1mx5u+nuC/mL8tKadfCsYbcAto4ywXk6Q3FHGgLWGin03g+avyQvj34a8QZ2BqLBtyliteBh2ZHN0sBPi4tmxr96F78jDO3e/CXhiDS79+9YyDFRbSjMl/H8ahgqDFwcFM3MweusEXLfzNbd1yhu9l5qHMxdZ3DJCW2cGoL6cPTGTahE2bU9DEymtXXd607+9AUcvHpVak5llix2REecArEnu56iEAvaXSU2wNRD9edZ4t1YvuwmHynbJSADtS4JihJHE/fNC7YDlgWZAMihWnCH5jkpgAWosTENLvgIS5Fcp6SnLHAn96+Tqu/emdSkbcIHCwWYYOeUfxMrYIoRA3RFCr2EhLqC5lPyNzPjmkRB83x/f6wobjErFPE2YJUQGPeoUkwp638WRyptCeTlKNjZ8CAdrkGNX/9n7uU2ZKz/rhdwQCLtrjWoxPR1H9sKtfFiMARebe0cz3xU0Y7OsZ1IdZMyKTybC6LVGrOicacet2hlO7K2nq6sUS2MdiIwF76e+r2V37QS1EgkdY5eJmESc9nWzE3nWF9pDyI0Y1bk1kudHM1Avjo9hwn04Oi2Jji4yIDkPDZJJd9yQZYlCY7iChLQ8u0EEuasmqDcdvBv6AmVnp5c9G+Mx5zypy6ZlCAzKFsNG5pwqiLtitEB9cxrMhV74WrWzxzDb9n0YcgXy8j1rIvjsxJqs0jG3Xg6Y5UxF0kC5oKBdvm1RiN0IRtXNaeuW2oSc+HXRL9uGj2i2Xz55BVITINd6w/e/dADzCc0KkbVRGMRZOr3nHBl2iKSCHCuRCR1IATd93pUo1LWcNITYJq6reG96BHd7A617o26wRGmmiEjCFYP7RsYQR8UOfGHnWZJWdP99noVr/Y2cSUd1dk4cer5P4WO48MFWv0VTru25xKM+HharPLoMYiQH9zGFNrDKWk+fZc9Ut6Kyj5QXy7rhg10IoH0q4e0IAfuzx1mLFZfLeKIKuONVNC0XWLwTuOWuimNKeqHqecGJT1EHhUV3jjdIaEAVTar2FDJLpY3YxVnWe8th4zoWdfSwHA/9V7g+O6olPhdDK2T2UAyRjFGhx7kCf5CtZ6IfHbmNV4/qocF9oX41GQsqIXClmiAEJ9uSIMXmGSbOuA4ANSQo3wCCfiJa9QxIkO0F0ZZTnoBAU2kUmJ0RVd9AMrTM4uoT6fa9sKMCTrRmt+qH66qxqEaNf44WNqxri7GIryGMX4nCWZsyt8P48JF3qEcjcXNeXhsL3ayI8s9t+hqGL5tR9rILnhJ3So2d6YSUP+VGukF7Fd/0RLxHD4Ii/P8KlD97u8/tORWmxUNk0xf0WuKPyIodrp8ikj5BCbX+dO55xQg8kzTgGkcWnIe+VSLTyr/P427loEl88lbcI186i3WJ336JvB4vb4TjV849f0CbOVw9yvt1/RZr4XwY2CImL0OkSj2VW5SvjMuJlwHh4/rJ8CDbY2c9nBeZeZThbI5r+q4RjvHIrRHxrZMwqWZnB9UHCmGRpubhVBa9I86/zDcCMq6ToUF/6X0qGKkCMb+MILlAtF2uWlOh0QGQ6XNBBp5rEFuJo/cHIVRVdnR24gB5nWNuYbk91yFNzU5nczAuxXawE4YlciJrkgb2G9BT48b0J16KG4Y8KB4ep8+Bw7V5Bz+CKWzxx1E+JR6oZLe2essKcdVSPa0hDrMLMAO3XS7A20RpTyFoyweUOgu4cKpgBAI6cyvzv2NrdCqgJ0vmuIvpjCsfwJuxLixd4gecqQEtO+N6mbJRFNR+9SRJmrpoohCZiiVRksM9gOYAAiHf5N1tbDJcHHNYCLxq4RG6if61vSiqdkE0DkYCaa75PC+2WVS/vV+nWq7nPgtTDNm7b5KDgJ5XXrwPxibB/xp14UJDfkh89YQF+yaBnpEq9hFkxHbee5ymDE8Dt7aRvyBelIejEDxqSzoZm2AFa7uNXmuJyLQ3WIHZYPN4dBmVP+RiRK/WeZ9A7LHM+tNXs6DLaahjMOZWw1TWsPuhzW8iRqoJjhwAAmKbaGFNHxtcUQYbgacL7OUfRJrSBxuQZQRuUqcRHn65V54wEEmVgUekvvPrEt7xMggiis/n1fgbQVBLKt/aTng4pgToVFpaZQYITbhMQJUI80NO89SJY8ctqBFTnVyg2BE03or0jL/CltiRtoGJgQ4VK0ft2YQ3Rajx6/5FhXP+/q7VrsfnxW09ozNItpwLTc6ZDoU5/zBwLd1aMFdUwhF1XD8unS7EN3YbFdg0n8/m7LL2muPsCXD+CtYDBRWJsARKOF9a42vS5Mu81mCWCg/L+kaQtRN3gQjJyH0xV3FWaKgsxAdmvMLYuL3Lvdk83dUOeShkSGCEPGUHn9V27VB4QEm/R2ni4gaYRBB7KLAuzeis9Z/K1OWn96SMcuoP9dfEhbKI0hDmb2ZMnDy6veDRACzw90pa2GO3pyFNRRdFcqHr87TIgIs8xhr5cWe/zqLdv8LgXKSV5a4agNj6MfJ1CJ2TnF9Ock6dNn5ci54uFwL8aop6HreNnGhjPveMyyQRd+zjm9OOSp4cROd7ZCyHuZaIurBWDkRv1qbik9mqMC/Zw98o8aHgOC7eFwvby1xgvNACowbsBfxdWExMyjMF5ccREIwHBNWdgtICe3/Gw/QhhWKsk++1wJCEf3aBZ6q/LziWNufzmswSI6rmWoEdcpaOFgzRdWY5a42c5+NKpqPxlPpaXRgPxgMOR+xq8xUWqGNAC+gqUM1DE4HS9C0axn+oo5/EWJoYU7UDG/wqtx1iSlVWvo0P6Fucr4re1Umcvl+vn7KaZy9eyWaiUl2otINI859YoaFwrlJ39qxSjB8qdaZAZDdT/+TWdefvnZA3om3VwpOuJCwVaSIpWS+lwR39a1PRujDDetpq3Skl7Jy0/HQLPexBZ95GgfHwcwKOTdB1W9NoaSQCQTdgaEYyF/GWUsv6XHrq9Jk0tJNSgGfV84cqS1lLHrSuInxIrS5jLD95xUL40o3jZurfTMicd3I8MGYaAFRhooHiPeSeMccwWXXByUrdwj3Lhfw2PjFBuSPFoppWbqZ69DaCgcG4g49CIzH2yxe3lPZLdKsF8c2AB8BAeEqnx34UBS7bnuBsxKHDcIhdeBOMAEBQSZ3kZQYC/+0dE4V0xcOQYaTgHaR7iFCrG2AP6PtboOwOu37d2k1tMQfjgY1kIIZ+pgfvFTec36nlacW4/4f/26nInlq+2QxwysaJlhABn5Bsro+DzeRYfuruGgyva5BqAgeLoLR6RXCBn12lr0NF3rU/srLoQbXvKn2eZ06LgkYohV/6sKYUo0oIycLRkXgzYr5/zvQqTlOls1wlXnV3mftAZpekhK9/haNcWqmmTv4GtlINoWVm2+3/rYMjfGVNVgwz4ZaTDFez9PdWepAw2V/Z+A6twYL5JFYDaVjy+QKGPjapcHcsY3Pktgo1jTdWr7eCCRK+vzipPejpt8hMC2YFBYW+UjHMYQ2av22ynpYNpD25LisRkGd2TqzqIZyo6UaJ0zmKZYOm4gI3QGgQjCYlzfw29XadrBf4oPcH+UGy9F/R9xNt1hgpGe9IQ6m4Gdwv63p/WgD0GCqy8XIx8NqyClLxgN1E7Txm9NlJ8iB63pwjWmAy8GAAfnxDjaRDdL+3bKe6wubpSbE5J/f6oEq84TW6P8b6EvtsBOeGrvNF6Xb9LmJsgOioIKQ92zxi3QWMFH1kyLb6qCctlE/P0Iyauux9/fq+yv2jEzkjWUOiAP/YQe+ksybNX5ZganxrrRRqC8sE/dy2JJa177Jdf6Eco4+QE0R5t7cA/mj1wpTwRYDpuSq/VfsxDSLMV/AshgL9Qu1DKvDBAcvCLG2bgogaqgvv8doAnN1DbMnQy9lYrUMJTipbD0S9/OdRI7YoCrg7bt+ufURk0KL1N2mRLWancgtvB3DllvpjDTsxFYxbEdfOTZ1p6+YRRkjjvvYamQsBeyX3zmYg0DYqmAqchuT3fai0xgineNK3XiuOUJP9OhguajKRfSBqox0h+kWXC4p1pfXklpZAZosN1ggyy93nqHAtoGiAnXa1qL/AJGPcKInVqktfhIKRtO52kj4LhBVUHJDOCtjqTF0LD1VHrCcluLvSuoMNnnH8+u6dCnJp3EnCcGfHeccTVt2M7m0rlsV3E2631ZBbXhaJKN5nIPOlv/hr/6/9z6zni/khrPwh1RWJF2o9q6iyvXp9PxnIIoGzoVeRlTXxw5Q4N85Cs3TIzHg+LcNPi+VDXaK4Sm219O9KReRWxOW6ZpvH4u45awjEi0iQCMo7jhk2KBHIAM5Z2a2y0m8jxRmBl13EYACtneXCWMcMWF0X9kV2MHdFcmm5gzuTC0RrJ7fvUI/ieBiysutdvn27lGrmpVGFVDpSpwqTiZ2u/vzMBNYhY0tiNQZhG9IhJLCg6LPKUcFElgERnicnRtBAF7k2IL3N1N+ZRIl8w9UySUwW4Y6CIh0MLLVYFDn96X9JBEMq9irAE04Jf2/ICssAh3g4cQ6tcogtijGxwFwwcI28LKnkuem1cE0wGowoEZFUfSOxY6UkfVqKN9WJyt1PaOv2Mk4IO2lfW2huS9eDlEjfLH5SdCB3JDsasGjgtP1oKZc9la6mQKdEpmggyXYz0Q6p2LCHRdJZIiC/zeIgipFYWNiWT+n2hDfxlTj+TZEoHdMYYui9Dogo0vLr8w6eW0yXp3JZdUZ2DfuBA/Q7pnO58GMWSG7dNelE+dY1DQZUAY9zWmCf5Upy/nV/giYxmeAPpE51q1OAJ476QkUAx1HL94OOZB1TLG/Cpxin/5AtlYNChOnlCVK8/Gkt6Lf47AWgTTxZaSQRF3RZRRz2+kdVP4rotciOP9i3sFr/Vp7OFxVZICjfDrgYXXkM/jBZSGUvnTMEOtkROm0h58JyFY1rCUTtJF1YJLlB6g0SGKE/1DLnSe9AOUaG4q89NMtpqQXzqYy7r32eUIG5UIzT+jMXmkxRxwaMjEF22kOOyhjMcaGX3Pmv7t8OIct400vWbJi3tR7BQ8lenR4t5Pqip+6HR+grQT6DvGO47jMZGlWBn/japppMJCcKNnaiyfQGd9GPCxMcdCueeAVugTaqVn8CM1WM8bIXCLiVBDcnH0mT6rnd8lZCyq8d61+EYwwYplgdCzrrkpyjaxF9W48Hr5bTQEyMyPF2RaP5jtHvnphdnrGMEgYYykEGulJbx7LnXVqoIJ1oTjeJ0R46VqZNXuSfzEvE66gPAgByNk8yOuYQOAHcou2zrxum6GPkJWwLg9wNQe36O0pXuc78v3lU94/iXoMvLpYeX2OCDWpJ/e6ovbC9uBCuKmj/f753ZZ/HYWUuF/olgVsC3Lg5TY+1246qFarEl4GqPsrQ8V99zuq2r7A2yohHpjaVcKNcZmeeUlDpafVHET49V4mQgewc8uBYReMg1njYmkxwExviNYSGJ/SXhJOgzZFJA6NqePHv8Z7747nhmWA0TybGI5BCldWX71I9Zo+KzyxkGMhZZMdv+mSv1hOOAY5zLMqwpI1Lsc26RVodONYji5nkBhvPLqS3Z80Oyc5L3gwRcUyKZb52MqKem3vqNTiYVNfcDqWpcic7OaZVZaN6BGBFeNUebdwJKLsXJGP9DLM2k5TEy6luOHZ8hKbNfoqPPmLi0u0lpi+VxB6gZdPI6VS43PjgFi5qRYUQ6VJMaEI4J+VgEMEDm2F9ZMZit4HiPOLAqt74VbPoyhAjP/lORchtyNq2ulBS5e5BGxrHgElaX1uwMChCbBUUwBkOd4TUmNO5NEQGjd89iaF7XS+xMPWnqR/eguDFYIfDQK8ISriL61/KH6I6w80TgV8mntGb6U2roS4R0BoiB42FwLWkZZNeI4F9MHgj704hYVp3o4Zn1CmlCB5esuftfvGAqdV+T91NJRpfvwofu4FZx4aoF10hiXxxJnTFPkBePxdakiAnoLNzHUVN0lfurRzSEJISAjiW5Q4koxIQ35PMPSeubrs+o8Dy/imwLIJml3UhSH+ezL+iwOfGnT48oVmauRPTsR+sIYIZcl6eLjNakde4AAAABH4fBFkqqBw0wNANbn4Yf9Iwo4myf0smMfNnZZt18UweCOA5sRzR+K/Yr6Iq2Zh4+6Oppkwf0nu0X9xJiOoU14KyP+RViRNTT0+wxIzv3QKpKUt+XqFwNxmy9iLqxgKc5d1WmO3PqCslP1a6eVEcqySKgZ6Zc69ErRqXGtv9xJ4yfedlAAAOEtArGoONEDEEpFEXPW+ko52rw+COiZ8jbUMVunbiP65agxoMyBZXWOmgsr/IRDTg9kEkk26HlccuKRCIZ6L1XcFAIFpAUQWYIWyOLgYgRkMgyEhPOBQ26Wkz0dn0IBYrQjvVhS6tCEB4hNxFD7xJBVNIXFCTLHztul0mt+qOM1OEf8T9bf+ie34lRbA3mKOq4iiAvQ/Xw22AWALWSnbzALNEnAAAkJLjl6hZ2k92wv1ucrUIF3fBxHYQSa8m+FLe7Z6wECiZ3lO0xwU+vvYN2evtt7LuF+SDfz3zNfSqRGewkNwGvORXFdE7ts+kNjaL2FAc0b2IiywN8fqIjEYDBxlfLB03CeeJF0WvKtpgXdVRVnm0gkqZAllQId87R6LT2QbXV0Fl9wwB6B/px0ny9tmx7qHzcUp0MjZTKAXN8B3iObbgtOMh3MWRfHV/RrooLcbBFIPKt3h7BeCIRWZkvNpEr897a882VT91/JHi60DKE0ERwEl+vwY6Ct2FqV5+YwjLfURI/HNn/Mv835vQSGA/tpCwTzX0TU09izNCLWNJJev2AU6AZWcCQmLqp1SmQWnGNtoZ3Yi7mdxuNNIW61BuTNyeHktutfoHIHXYQ+/CZSLJCwv0dj95tXSGvPty5LXHyp5Obv04mN/RV+Wv6gZ6S/qISryvJhp1dSQdeUYGMNi1S7f2BTnvrGpg1Ntw7SW/bg8iV0SLwitUwXx/OCqEAxNHT0G94gSth+oOhxnzyAJc9uoRWNn2+kwi7hAIDaYGyIyZxooUKMLPn8h1z7bIx6/NvLyIb55WTfA9lRm/qeSCHlPK933gwq0JvpAEn7tpGzS159cKRABzQtUhOlSk6SVFh7LmEUZHNpkQ5IvjPcBE1zC0QlQDgiHfLE8PbKe9TGWv0cf/+RMlbrSjmUswXejMVhaRw1E8nzLMTJRGkyi1Yh564oPILbrx4mZuQlo/LS66OW3P/zGYAcFKFrkPU6Pa4uFmxKJ04qZEEofAxuJEe+pw0lXQI5BfGEaK7f/ShiTPYxDgJKutawPzmr+k8apCrHuPE2As86UsgR16R3Z8gzzx5IolA3RrcSMDSKH/hete7vvv4/nSEzKAQUYRvtSrI0VuYPLhhvNp9Y0apPgzaWBkljrRtF3Khhb7uPmHJr58KlYUVdpKpkXz1CaSIepvit3rfyZ6ZfJtmNYuE9tgaV7lzX4IbOmT+OSK9eAGZuybONNofW6fy7MewQlZB8ck6WQhnBv54NL5g1nUczSgOqaMlQpr2268cv7M3dOQMlRuoe0VcuN5bnmZSZJurrB+kHrIru6Wzb1Jrf8hEwCVfTRTTMkz/uaO5JqlYcMbPpfuZG7tKgWGhLQ1E2x2IDU79UuvPBDOuMNssuhCXrQBdbkxt5vo+mDE22sd0HXkbNv6Kr+2SVx8/+Va8mrX7LNNNigG0apeJEOotU4nnn1ZAaVsDe8Vcs/tKYTA2tk1qhmSK1c9pUw3I0oYEvrt0FboS26OrXzSF+/RM/7/LSZUIlae4viEcNmZ8Jw4u0gRro37ImB/4SAyV/Zb6Hk8gt8W6ZgqIL0vcd1xRrLcSPYeMgOHUDsYM7fxPf6QgCy1QRntryoivR8iNGk28F6UYDwGvxbMrdHqHCAl8ZWuvGflYpR99hekQTjZEl1sZ7nKwjcww2AGG6w6R/eEZ49JhZ9L3BoMtmblV9texjN9aPBuEmNN2DSbviMhsezLfAtOgmukospiowodDqikQgIJiHh61XgpTYLulR8meXpn5/FmSkf3X+dkeCQ2q0K87CTsrkpcEq6ccbeJAOf9/mDnlDIkhOA/0BPujDthJ0HwmkvpH0C52Z+H+y30PJ5PaVOjNDBaTm8tzAs2VJFFmG0YlMyZCA8t0hVwdNSQ4PhLtUM9X67HKd6H4KlsITrUzYxHMxqM2jKPQhDW2DRS9NcsyhOfraa4vzP0ThS5a2XdqfeSmd0cbrcGz9djCwuCajbj1hcpY23Wb8HjuSBTdh/3rvApk/Jz1xPVkBra4lqNhK9BXNIsmqtFPp35Hsh66Py5z4vKYFf1UeXerB+hxOaoI8svO9X71VCoYeDJSuq2VX6ndR4YEk93iE3dxb8T68MW5sKKfDH+D7XV4zSGKY8LSQ9h113LEVUPOSyKQpHfc5V8MS1fTRECcAAFHW/7j2OjzcIPHJv0J1uBk1vIZ/gEHZA0/ogXJv9xs0QZIN/nUhX2rB3XG+2aFzlJAGzOp9v6BoJ6LSpAPkaMgiDHU7udTpDvpnGDjvaacAsWblPcMimgXLyn/DEOg508V5NWSbUTbyVy9CW2RNRIyXFSl4+1TGsSox5tloOPsq0u88QmW01XplPiFBAAEtxm54BwaUqr3j5pDiPa9B1uH356RHcW2YPzjhuZfKAX2iyajA3+aFTwUyQtw5Tg0fvcXWLj7OvBJr7BLLZT3TCIajwydjKHDOknuN7t6fhq5XomM0sxbcV1cpdYZi6ixkJUDxuFfv+ZD87C5Zvh7/oSey1+f4pmaI7r/BXKIYBfunvgZL4YdHujEj1CWNUl/rG/ndkp5MdAqxK5a6qbexRJNLnvkmQLO6FXFhWNoIwU0axxUtY3CTCVGCb7NYerVYBAj0Aqmx6EKgLr02xgBA/eNDzFM+eJTVdOz52XAfzBBC9vav5Iq9QxmpoNnqLSX1Q1kh9WmxfpY/20j2uZXqeCkMJ33ipJV+3vxC4treZ8pLkmEdQl/zIRPCEBc0x8gk6bzhHBrbqOyVhIwAYhujm00KvOl3EIOIisNVNrvUV+VH5me+tm7RNkvhcW9soZhxWwHPdnvbubIW+7p68jxtULsUL44+igAPQt3w2b1B0zWAGZA3yAyup4CBPmINs2ycS9u8BXJQLB6kDhim2pUugcrXrv0eHs0w8VMRIQ0v6S8vBXdlMPfVsEOrpSr5B8Tirqc0Wp7KwbcIpOz+hYWI9K9mCQ0GxAKg4gmLHpqiSyUh9WCM0iRxrOb5L+u486MLDwr/HQd+8bxINnUobzP7KOXjNKH7WCdhKczOAO4S4y1FYeggwYxtwb//ek2j6UFQKXeS21j90PXGg/gAfkCHBhWJypsGhly8uld8/W4EC8w4HY+z/e5ney2K4ceBqkdBOtSN2AUvzlThsgkoSuLUMDFgTp+LAGxu9SltnS7AlEGXWkUclhsWzMCX47gHTIozcjPz010oOGY32Ip2jzbGmm3jmow3m+LzZl3tRv2+aegpEmHreLM4DJT7Y/RuuNGySQdBQ/WHevafHMh5Y2B7QaeG4ADIu+oxRMVv7+hmKguR9rwPKxGeU4hnbMTHH8e7JKaavBKXezyg5vyDEEDk05MvqJRcbedKDwFTTjHo2bSRk/GwSJROGcJ9Ddg+tpa2jpwAgd3WxFT1CD7olNDfECXhJiKwbEJ9f0+O5xoFxs3vUigHTJ7lmZ0U8fqkTIT4DSH4Hz4+mKeflbEdaEsb1CgHxd5ec4tSaHlT3yZvomiefDRycOLDOIWIUycvelacdnGvVriQFVWvqzsZuwLEg0U9hekrvCmIEN3uM/gwXZWY4B+Q311bWOXuSAWDCEKvcBWtASCMAD4BjtjJyRscZ9s8U7/Sr0c87aWnJyNQSyYaOfN6c1azScwGKa+MJsFC0sZalf8Xg59pYcmZ0jjAj9eT5IulrSyVVqiBGKmVszSQgZqpGejmNMjG25FzUPglfAoqKx+GWctuxPEBVuYGn7y10HP3o68oVkcHkSgCbsMLWnWItcNS2XFPOqctD9G8gpv6DdlRYPi6Cywg1edJkLlSScTu+BuZkBfreJJIwjP1hYaqhDY3q5byDKZ/iAUSNZSuRMT4UtxNzjUc0mKy5xwNYJjCrveOlG00f07uj3LJgLLNrflECopiJBAsr8ZroMZSz45fp8Za/D4KiJvw2izuiZ6u700KNU0HjJt1/JpVSNbmpD8IuNmB7K9folHTVfAQ8Bz7BW9MactQ6MdEQR3GCGbdIwY8EKD/qcEOPGERZhp/gOHoQ+9uCk43dnBLdnMfEZGLTALrC/0fEzkV/eD3/MII0eelj3aO25bKyyztubSKlRMl3S7NPPja+0OJaWz7ScC6eboNP+GdMVrnfpkGR888cfpI4/WobGE08XrguJ7Hok700n/lwi+Fd6h40LUh4ZCjq2SfiE9AEH3Q0XAj+J5UA5Vo9nAYWXCaCoauQxT9NHlK+HQPBaEiFcHJGp6yWlhWCj1vWSLVNgBavZuon+nf+N3xzUn2EXw2Z/kt0UiLeEln7IIj0dfno0hQ9beYikYILxSAGrdiHlSqaP7GVO0jc5kEdAXTz+Iu4bSdxBIgBChY/caU0AnW9NHlp2xHqCzmoPsUBqgCv8sGaMRSHKT82qHAsvgPc3c0RZ+3591qzd9PRZ7AcMcCQ2G2EHXbQSFHxdyLJS1dis3rViyVzYV1PJt37wxBDbCXr7omrvwsvf/Ntulb4xyqll3+yP7NoYUdfcLv2FL/4kFDh4la8mssE2uc5ZWxkk4ABe5B2k17nT4UbIDF6UbrPvIWfLwNrJhzLm+WApfAdca0/VBrUpXRxTr2nzNlBiDlucEDJsjlXGQXH19WOCy9/SfH8xn1gp56Vd5scqlvpOuENROn2SovXEvuAok7HyHlgKlzRcaDOKrjVb3jkSy3jNJwMTgloMhKd0e4U4XxPaiT0BOaxYiCV9DOwxCd4m/TN4GwOFfioNZNLbf/x2QaTTueD9q1GhU0UKaxWyNA6UAA1uZ1o1usDrWyvp26dscvbGuwiMJTVCZWIAAG2ozFvHIQr+AAHWQ9FoFNqHQgw+uZOy0vZohvyU+vyF4B9iWNdNKxYL1ZGbsyXLpuGy42TA9ThRQL/2aMwmkMXgSmnlRCoZbLwYZqmjvXibpf5uFkikXK6FHxXEmMXHN8qufjI5MdQPq9pe5mMterY/dc1ob0sxRZGJ1IrCUlb7SgqWDcJ6U9YicYXlnqzje6LVpp/DF+ab0Jp7cLLDqBmd4kgH3VcrOCBOHU8pvKxVenpSK5izG/4Ze+RpIJxbg1A4fbXWTmTWD85ujpb7Hf+iw4eD1Ac8JG7MpA054Rz0hip+8t/GNIeIF3zTKHG1aPQkFIxo1MuomU0buNgGSnlDIRrvfTpPs8Fc3NzDk2WjFete/42KV4tG4mahrRRI5Vp1oFs+tXe5cTROr61cCr27BaY64CYwT+32QbrzKQIeNAIrgJGjrr+VnYgO4BHCLRVkOHP9jlEZFg8+n6hXXdmk3ViWt1eX4tOuarAi3BX2UdJYCaKVK/gKVT1xmgsIeyzrW5+jEAkC/zQzsZDXips28R6FF0DuFi/Ym5K0WOm/1aiTNGxeh8ySSzc1OZmoA96gioeSGg4egbwbl85xDWhCGXfjAxDc0xvAfVscfVKRk5D2CtOlnW+0XB51VRCTp01YJz49pq/IEJCqiAyinIldsp8VURo3mu/Eki8LzjeeI/dKEKJbhWcQroToe4csR6bcl6fqmIVc1kn5R6uAOcvWT9dn7ZHLP5Oj+TWEf2LUEU8ajnXcOWt07G9xgV0+He0PfC/djOFgg1PMoH4GQdz2QnXDITMFxj4DIZSeymnB77MdtSfAAq3ybqW9S2U5ep54/kVPkEaMtvbba1etTmfXgBe1QYcTkJ8qKG9qIShwIVNKvX/RbbPfdWW6RGtDFE3AJX0U6o090thbWLRq9KrfBSuAUZrDXxCkRoiePrNsWy1Hkvb4kBExq4L0dVqCSXzOZ/Hsuy/jcauNFlZS4VsZfzh0nF4Eo/g2Foelu/Hnr8hQZMl37ADq2bkFBvdcvHxSNSzAWsjopAJplBT/GqM0Aj41Uoodqf+pSBWkybLZquxFO1neZl/6TToEaNhLh/HczD/ccduLteeb8DbJDIKu7wqSybtmhpakU8/WzieXRQTLIx/mzUq1O9gQB5vmodzZChrRF1jSJbcrYNL/qwZjdXKZV40pv3OyYRL+b2qVVZpHHkejQKTcjpzYAoCzd5+zul78oO+PBYX+4fzTvaOTIgXIpWSMksLQZVVLYmMu85KtatbN78evJGiOyUk3EepKuiUwd3gmMAMpbKc8E5feBADg8qY6dYi6rTdR4n5dnd20LaoFGXy9wd4aT1qTcbEftEGtqn9iWPzdkA4P8PjmZHOuAAySP5xUq0+aJtqe1rCNQtO5u2mf8KHAYx09Gf2X9vVdgM2TDA8upaGeJTTkPEOq36yvvJ5z3twe4FA193oxlw8ZCIkcLnk/V7LXeBH15c0ZoVonZ4jMXM0Rz6Hc0YMPHZUVz0q6CvlljZtOC659OFuIbwfk7LgrQ/gjr40ZqdKJA965sWK+LCds2T/jPUqcuZCvnib3kJc7QewvGar3j3ASPSopJhOYXimp7UKGUjhBVx2SR0ekIMZYsEPPMHkoQtUVCl7umrQji4vI0A6VoSOYRF050smbFFgpdKQgbCTPdfMPM4v91phc80OLwZVkMUJzp5hkPhJLDWzXLVZ9XbmDPM4hrVDix0QhuWL8nLQ7uRNeQZbJgekQr0Ivz/OiVpSb3jrPC0HaVnTGUH+nVNX0EE1pkauf7MkfGC/RZ9ZzE/sQRdR6sebg3ZtmvZHXJ7+Gby2SLDb5bNRIJENGCPe2v+NQMkl8VxwFzPBfvk/AlRX5DUgGwu6EW8Jhcnzl8eIVmi/IXF7Ef0uOcOQJ+rf0vHkp/1zsW+fsVe1Y/j+/hXANunNhlU1UxVNmjYZHnKTyjeJcoCSMQdcZd6Zo6OmThjvweky8Z5M6l1BtEo0tiKnifGkQqhjvnU6nYvZqwhnMufzwJey9NpPOk4W8eOiqU+07v74cy1Wtfkredh2jxFJa3YQt7Fz3VhStZGQt9b7lrf3B19xBbwapoiZwh1W3adFlLBrpvOaGwbGAF6f/yDp3W3wDx3gg4Lk6OwWtjuZxHnI4U3CjXpjKjPwqyeiE1ZzM6PRxELfROrUer1dA+LEDU4QDrkdCWW1zMp+33gX8tsZ+Xdhp6bZuuqnwrwAAVxse5jGMhE7XUCrI/0pa//yep0ciFCDxDtD6zVizlQPQyEZLlZPdKA/TIGZdPWtFXf+gyz6dH0W3LwOjLC6VtOeEVauwoW+Ilc99nwifK9qB88wi0HbnDLLEnsmPi9h0J3ecn2Q9vq06FOl9SI3g/HDJkfBLa4rGm7gA/VZjNNnyv4Dnq0mx8hmzyLE7v3qcTQW0vWuVf5w/FVk2CRuvd/r98NGmD7iroSweGO35ur8to9JT8g0YV56hMfgNxmn8xFoUsR17apT4L5qj3NuqhqG6isS5PXt1u/poeKBTTn6eJjiWjkwk7A3LUq2FTPtFIw8Dlwj5Akt0fthpmObHw3QcQ8XbFjxdue9PEhPUAprYwsBnwAHfbW5IxiHO3efLdm0+B1nZL+YWrUxj/al2r4KAfGQAlbhzWkkjgIIDiWl1S1f4bl7FHUpNijXMcd+1CYc41wctJO7CBgTXkUpjBX05OBFZzJBy6TIjnO3HxRs+Vt+5oiq7MAfAZIo+T5JRimiawNx9OUgLgiJ+t4ZxHC9NPfWg+cTFs0Azy84gpwoPlWxfeHRMAnfy8mFGfrz3wsKdFcr+ebWPgfrx6Ke7kCPPH6njiIOdvL1pyrb55B88ErUFwc0Ac2/aM+CB0DiW0oDdUCVn2EiCNSL6B1eeD02FHaY4N0s6jo8ehjYZvWMWuytR3z1Awrvp/TV4+UOjqDRbcDVxcay6zMP8JCGYcZFkB3FSQDkodR6z2RxvXZouxI8dy5a2RynBtDRree1dIBuZy3taVWvkpG+4L8LxU5an8KStV/3SHEgPrdo5JXEqWmCXa+jTrTH5ZFW8gOg1FoXeeP2+wruTRnNMi24C+dPFEx71Al+TCUJXWe5uih7Tt3R5XVVOqEGqabfE9I/YQLDN7TQOX0YrYIdYn3Q1m+PaflQg3NUJyO0kt3jvID4Nb95lbissJ2FcN+h3O2dZCcskkA1+uaYj53MFokUUM9zBBsQrL0/1xCDA6hEJ8GaazHewVJ3FLmOZPbLpB8RfHy8X97WwFeerKW54G5BzZFxtZrETPJ90GIPf7OJmc5NYFVsqqyzXG4gCzsIJ0bJrFgVowoFakPxZEiNh1xE/utruVLyRrFJnLY3J55MeH0YMaVHvmmhSizp9ASV6udVnjETwSHLonhWI9C6geqft8u7+6BUr/ee7+nn7C657R7vNC1COGTouFXLmZHhqRchba/FAJg59iqTac6FWCKozcxC5VeF3m7WbcTC1ECDOIO6DI6TIOO2DWtong8MSdIxcUMwyJIM5cOo+fBTQfKZYWjBeWERPWOcR5J3/mBA+RB82rwkSwHmN07weoEEXNV9K1mDs/xS/N2tKRy7uqOGrNtaZjQuU1IlGnrYQt54HvrEDHAfoCnU6D52Gli2PSVHneP64tnFCR9GfxDsh7xsKUjDpx2SycBy6jlCLe04TJjlP8swfbB8V5rbIAfSKkAVDlmLUrymk2kajQsnakVtlibURCKyJduYcB8rYmADKHdq3Gnl1Z2EMi+0olqntqTuZec71T8NtPzX4M624HSOhPjpEszHQr70U+mm3OaQZGfF0DXwjg5dPo7FwdIChK7oibgmKDgK4V6qjBHZf022KH+F8keJjBONkkxmmM4yXMOFPgRP4I2QCQyAQemRhTQBzHY2gAiohXk3sxeipWjwWz04eclrjNg4MQds0j3BwZRz79dKSpKAlxnjduXm6mAI5LpLZmnSLje4+yIhPr/6CBksO2j35o4hIJXeHezvQK9HYqDQdHAVIYyB0AUFzlUztRW/XvGiXMlP1MY6kQE2gk8e4+2DMcExzBfxgtWEDa/w4V9XDftu/0QI/heRnUN1PPoNUdOK+TkUWVfom3LejVNssIQpSacFklCv7AIZAyIdPmTv5oEhg2bN6/b4M0sSKRkfg5Jv+LMPBLrM8POGvQZzVC+U1F0Wr3+a5bddoeGL9mfLKt5cfUZ6wdbMTc7ZGeGwTfUaq2sgKBfVma3krj/W0q93lWWoTP8mDwVTLV7N1CFkqXBcGinffHrZUtU7pp2Oxh5snEUzVECWiUgBq3Y8Pt4GNn/flpkLVKwv14QsN2yzgmP7CZ4sk4vTYuUznzZ2A68/sVZLoR1Odr4kOTs8mxHOY8dicOChZWWHFTjkMq0UXaLexzwlfvSw/ToWyXRDf9SRz8t+8SUVz6nmnJDnmI/M327SA1+ugUvUHgKmO29Akd1dApdO/Viz7dP7dcMApjl0ZZSJmnKaTRo/RlmGuR+yHgqNaSXkst+KrOLlgL8NHc2Ap22+1K1uK5QukH2tzBPR9C58EuES0wWmSwnv0lEbCngr8sjUnpVmDmUmbf6kNap5CgvQnpqrnf6za2Gv3BJmxWugAAAA4z67KM46plV4gCG4e1/XPm866t6c2jRrx/7x516L8upHJT1j+bIYnjWg5Ws6gvwU6cEeUpwtvExPAAU9Dh2Cz77eVaaTd0v4f5S0NHSV8GgNdA8hnywSK4HPqGWxOB4t4hRtUqLrA/aG8ZTxvB4HJ+TSucrIoeez4RDfNj+g+RAPZg3/W0UgKVKA07EgTUK+x50u6Cy7yUCVWhBYHTBFl8r+0vJr+cAAAz6gk7EHFPzNdZM3/hhxYvP9DywVInYSgpCHA/QcvBvF19ykvkhPiRa62UJFETauyPrrghXS77UpDvvBDPHmX65XmY00Vfkf0hfq5DoA2m2ddWoLjRIDht3RlZua/1y9fhiLzX1und80lB+EV0eGXdHLk/bll+uu97uSotjJZhIxIaJUoQMAAAFUUqYS1kCQEOOvNVdkViecxEiKu4iNAtHwc6MbxI5kvvBaRZvOCOrCNeWWQYfn3UjlZw8O6bt3iNAtd1MK240Yj7oEatI7MdXJUEfJnUc8dLFeSFz2m5Ap/kJgkN9Bz1aq+wf/KXH7ZK87fDNE+PeZWk3gSyCpOtacZb5AAJxLZXukJ0AaNxJrh45hxvnAcyHHW8k5FMGSTruWBtv/zdp89ISvm3/9TRd6R4/X5Fkt+uS68JMQjkRec/ym55VlYIRkUDXozpDlgSVg/DQ/Ivt5QaXvv8BOlGbHKkoZ5ypIYLd1jMNS53+WWLvFNgAlVw56c60PXoh0vpmstB0xOlILLARK219tt+vJhSKDgo/N6Bzdn2+5UPSCtwWzZsCzP3M7LXyGiQW/RqBr+/V6j78r2u8l3Xzqgi928p7fpl1qsuW8a9RfAK6q84eJ6RaieOreNH38uI6R6gb97Xpss2lJDoo7PuhhQpEtr5jdDcGpVcKQsgLgh2Zfv/6BZqsLr4yhk6Kp7KpaZ0ZG3HYOjbi7gg0TZ8AN85ZFTrpDmvNidfoQveGxCpVtuItZncdzxYRPCyBwJ2CoYkO17K7HxWdtj+0i5esbU29aRrIYz+4ChmnPW/242HIvXe+/aEJbGuoheD5UyFFj5um8Zgwz6LKo5mTL0XoMtqqzn3vwTMZ3LwmYcvxsKlSt+//GSQPECqM2sJtwm8kyoKR1u1xsEvHi7905WXH9kBud2soKk3JBL3XY19vsNDrqyT1HqrILQLO4EXzFlMzcSP/XNiDilV1jESEpPRA+Qlh8TzwqGLxVjkWvheEmHwyQ1YzsUtFQOg6Be1z84TSs/VbZYEJvofpKF+uEtt+Mgq9OYPkzjqJBQBrHUO+ODACAh+QylUxaZoNnNoj4MQCEVlNGQspJMiKSmxqQfcGEFHuOWv0akstHrXHuS/Y6cHfyb/BgVmsSYF9afHg32hcj/E2OTMc9r1/2gGsutlviBSX1PUECRmgpn12sSBsngVdV1q++LVhDetS3sd6MuOzZZIhZWaNUwsA4OwhwoVJde2+tmaCNDJVFbqzx9s9o0ceGKMfMpMNfpRvIHfcoGtiz3Vl3OFQ6OgrE11VA1pKfv/1S3WZUfR+ztEiAIJ8aAG9fi5+HeiL6OwR80SDcEB3WvN8YFpOr07Or6WN47wDy+HuSXm3YiHmhVQQDxmPCT79rlARkGI9LMFq9D4CmBUT6rpyoR7W5FOD7Wib6M6l+AJd5siTi3Uh3HAVQGn2JikV+qorOyIT6sC30By2eys434uPEqrVvLynjGNNHmpWV1b1E7EbZ6v4E974RhAv0VwQudojdAbQltmabP7AWHkcoq8hmcifglYC2DUbblBrNuHTlrw2vBUcvfJizkYHvP/0T1driC6Zeq4gaHkvbqVGJVQxtUpyexgb4xZ0fj7gxP6Gzw6oPhNJey1zfNwDnZcJAEtZOOsWQSxNONCcWjCooH74a/9rhQ3E42JB2VlOUKK3CMAp65E+E4h/s4bV+BIkS+toX51/ko3aXFus7D1SA5wBZpuHSwdm/gYWeCvs5MKGDy4kiYg8QoMQ4BUiPH4Ae/8+dq85OlJqLQIvW6kj4ATI/nu/63fxJkpUyvZdG/r616rwrVN61OErejVxYxE7prml+ZADmTcvYPtEGimGugUzWDoyYoMHQZ8t5uTprLZCfXQFKfee1glxC6wziS6tpy/pLkjMA6HJvRwCQhEtrct8kmvtwB28lVmHk680NPPU+OE4GYSLWyEsViqm0uUYwx//CGiEnMj0xpe9yADRw3fbAWMQO0E9Z3Efw3UWSXuY2q4XpWxtou8w2jdXTDuGj0i989dREOHCpFG+G+9AkvTu7vMQYOYJ3qtz44w5Qf0nV8jqPE8+8tXQslu2z5ZVBX7vBtbzx+WVJLeQWiO9aRkOlxLuDb9czBkXNHYjfOgRNNlfohbWpRItRDqgXDr9bWLOoXD9GM+KDw1TE+bP/UG5sR1guIsalTF2v/K9DSfNIOf0JSZxLYZ0DnhwD98/1T7RyRsrTUVzxDyN/FspUnLAxklKs4wV8bH3rhl6Cm2JSOYoghvqE7BcWVD5aImrmI15Y3rxScGysx1oq6RVrE+Xfepcq77u7GYLWyl2g/9/sIa6cKw8hZFGRVRWHd6x5xFZCOsEmO0q1caZVBZv4dPuH2gBwOJAT6Wy3SyWkM7zrkfqv5mNlR394qF7LKXLccqZL9g2kRmBPTNUmSAFgTR9ItpAYN22YgNLODoGgDndx5h2jwoJbVGN3vLXqPyqr5dD6YYpMTD44J/PTz5Co5D7TulGCv8vl77n9/7eoZ0CKKf4Os3p7BETVpi5O2QQwQE9VY4MND4p4GYfv5ocNpFTZnCAwaDhj5djhpXvJ1x5t6e+Ua8HePgdqfi02xopkT/4GXnuQnia41UJbhhZmd1BSV4ap6sv8JCiOc4oMS+9E1HCn70Eferm91FFNUHRbMe+Ii4F7E272QVhGIxz7jQFihziRz5t6Kt2kj1TKlHtV7WQmNLOdpe45ObvPKeCpRkhh07+Vc4CelJfQ1Tn+bJtM7IURMtyDx90XIfTYZxSmhmukdwKD+yAboaxj1PLJuLpojJry/iD1BJk770wYjd/r+AswXUjdKG1Sorl0YIVvWlkp16nWn2fpSsNxDX0r2OtVABExRhao7Sy4GG08X6IStsJGCKGsA2bet2SHPTPiND4/w2rZX0BkEZiiHtrhUkezuhqXsBwmhUXIyw3QFh4xyDjap4iWUeehzHFWeZz4UJSTG0c9lvq2CjtfaoH2r3KgsWXZh1u3LIDf1pueUDOhPRnFHdizJ11J5coo1H8dZpqVxHFVciQLXB1zwgBez2NFwSaGRdrHm76LGGm28gLGY3ywHQMzOlUmw0kQzX4mlIgdhzcskJ1Id0zKfk9Kpr2zaBtY96QV1QmY+8p2bnNUr9r1SGuUNvdXMGENlnpvd+pp086eJxOHO3bdo0Wqk9PpV+TRXdZMuYzUTYnlsIVfIVrAA0i2QSYo7VuQEtODeuUH9p/b3Kn68uzu5bzoI8ZsAACQZ9xSznFcyNN6YQI0fF5RZz35PMfURY3xyHfeoYo9qsyFvxSU2k+we89nAlmEoOGI7W1vRPdQwmpqhAPVIgZQai6o/vGdiWjYhN7GlWujWtacL96zrMLtc91MYHn1k7308sLFvV9uZhUPo5lv18/WDx8KbMR8qtqwHgi3qQiYwESlVg+CkIIXkMjsB87s1Y+5Mj5vljoV/Bmvjv2vPUpSN+xbr/K8lSMw53SA8uk4CTHGkkw1VDG2RP2UrK3Rf0wJWEDDAE2jZOBrjsQK/HwIItfSXOiaDz+dbnD/ZjIhw7Ox2TCgceXan7x1WyG7fppj01t6S21lW4ynqgLyGG7sAHCVrnEMMDYYYQDC53S8S6xgaf+68raw3uH6pvxqLdWKr/MGuDEIKEtvDMinTWgWv9vYNXSENnecEoFHuaOsZ8fFR29psQfqPtEQCRgpLBJfZB9mqgPQ5V4/9mt8K1p87UEpSMo90vJh95LJcjV5FPdY0VbIgtPgK89ACeNHpXZGz4+sqga4AjS1S1gGInhej0E5jr5jOjZssiqXj/vgfKRcZjvMsxyoeixfFMCFYMjkLmguz1FTMKU/wsh/zgviF5/5csg9kGu2ey/jIUb1Tuyk8prlmQolNLJPs7/9BQEBe73Xakn+EWyzDBlQ0uayjQvNrULIIeNVZECji8fsS92tp5iLInVy7nIaB7xoGG1xcm48KXt9NUbUIXw8SrFdvo9wLm/GHgHf6ACFziBJjP3EZQw6q5cuWa0QpGpwbPTZhyLUGMNR8YnTwB1m+ai9+w0JFFitz6HvMquzH1vE+jKC+exlzFYwRk3MqW2qvZ7e7rRBDmUi4+0Qyn8JCVa7Ielv1ynngejc8tSzIuN4OB9ssQxSTpgDmZH6YzMg05KDvaHUxs+U9bFjMQ0Mj5z9tPPxiga7WPnT/ERcto37/M2H8FtX7eIhFh9/iACcj2lt7SvEMBJsNI7RxwbVJCvBGdQtt/xUjmgaZAOewF6iBAy52EjK/2NxLYHxFwgC0ih8lCI29anRItMOF97JRhzm9r9aJnJM+1EWSB8exbBEWDEZwqvFGLkvDYXA2ltxCfpPNNrr593EvCgHklQaQRuxlQ5kVLO7J4cKsPZm9+aQacGzPl7PZxGcZsxPaM29yLBeqSjbcsMGLWJfnURhuLvzUv91RLs0gBHJDoBmHPtKeg2jGL3Ox/6U+98PybZIIpS4KEXZF7F9WAjx9B6QKiFc26MoVS79u+JxYlwMCLITAy68U1D9TCURm4jEm0BxLVWWBCE6Xxw0yup4cm0T2/hGwP37snYBSAxcUA08aNuPgoNZnjlg363LmSV86o7+aL64WMnl/R1E1uaLMskNAWkLLMT/Rz689L/x/W29EDNeun5hqg+RZALgI0WmZgrG0bHb5QUFRFoaiZFhavebzaOT6TsQVqa+LjLohZFGI3wRIYIvcOzhJKczLinxggqqBkOelUtf6996v3CCzfePTJzlZH6ABFN6c/Q90uzGJQMYCI6lW8UfcD/hppDCAB1lK+OxMjGbK85BMIv22k2RyUV7MHhqFjmzc7/mdVDm0OG66cY2aPbMH07Gx4F7YclhalgZu8T1yWFoHFskIlvJEr1UKdBcOLUZkf65WO5pK+3fpIQyt5+dM5zVd3ElHtCNeLRIspCaU7l7MRRuGWL43N3qJts8PvFKi680WgtdEwWHotBrXXwp9fJcsyzJNLq+B7btJJEmpbB39VYMapKtXFZT2S+CmvkxLCbKVm/ksn+41au7zMUC+18LCWD/WgYR/xdA/fxQoI//aYoQCNgmMEJLM2apxLVV49diwlIqyKv89pl6Rup+qgrISWikUaX/YqBAvxwKLq64oOWcuXR/eBit6B+HoStJCAALJR02JD+xAms6tcqf5nWhth3kQpEPCMdRS5QJtkFoFB+3VQ5J86yZwpry4YmvIb9gG9AFMkw9PcmJm2IDxHyDdnJmTLn535YAPDfrcIdKKLLgABGWEjPV3kb2DtXZ3GslSABpiOWrFyRZo2NFFYa5NUzcefXYxX7fLMaM0opENDCTku2BYUPwZCrkO33iRLgqytkgMFQSxEZUUuv+4u7ZqRGpXxPDtl0PObrlmAb27WVEB1LFfLVys/o4i5QskldMU230IYEn0q3lafa/d0NvK3TfaDrw1qY87Px3Rpw7b5G/+k14A4XWfQEp2FBF2MjDcKoRu0hBmO60Zj9G4hZ+FjR9rFvE99ZrWIZAE92shn7cVktPcITkl8Aq4e6+z7KrREvV1kW6iQDFmTtruF1KaQ0Yln7s80RyDTOtIAgZArEHC2VzDFTw46XzS9g1innr9kTi13WNSJrDGuTJAPyBabQhUL5U1KrlE5dFTP8CAOJSVEPHqFFN8fMcb/P2usb2cvm82xH6EzJe6sxOjaYAAWO/GAL1UXhJdHsJRjiifMUHipMu5Xgyr4X6nRNw9bhKK5g4FT4VtbYnoVT3VVREsoFr8FL3otgBOsKVeVVkAY/15ZQA7z9KP+MfW57xwD5Q0FrXLf52x7F7dBufusDcLyZRX5YOKzsZc1A88yYicBOVZZfVh2CHu4wLvunruYohIU4ZNB0M45HI5xISjdVnJcARgQgeYV+DyTTsmW6Yiz5nPxbIG39QjO7HqTL4yVeFAWbrAUibh8Wh+Z9yXXbNYfypVfrpvHKa4Emk2jjggrIeeXnjPbgpY0nkbXlC5wkvKqDrpj1ulZIdXRriSFL91MC3MplA6RU8NvYLb2jDEIVMnFcznqDVTP27/ZojUZk+Qb8UiKRTYRVZofxNzBl2GLhQAg9pfHPZQgaJ8XFUwKJsPC06hS+mV60exYV1MUuS98Aibwm7EzOhbwuOXrfPVScjofu4PRGM72shTrQTdeKfV2S7+T+0tiD6LSqiZqdwD9cgqNrq4RMgIs4dnGzOjT2Fzlr1iecAuK4tEAbKnxB9F7VpWKyEsg2uKcrKi2npDoLH1B8Nh9vqlPlySjXcgx4FB7Bxuwxwmw7f4Vpo0LKvt266myCR9lyCSoqGHPL5xjXdB0OGO9gRg/HP8nl7wZ9Xy1ACcKr9dN4wP5n+Zt2tZL1Vq4VOjs6upOHjlR95mOQrWdPKSLvsknr6FHB7Kcr2r6VQen3GsF0TqnPCCPGn5x8yAuCVTNE0SbjcZV3WQQchO9Eo8dVdyN0QGkoVvL8yb9IPQHnWvCnhvQzSbtPpuoWaWTkpk9JzNMXRTdgPNjTss2jE35A8z6mlQ5aHxptYAutsebq6sduBs76xZ1/7BVY0u7ovAxzQz3uhmy/SnkZyTYlohXyb9YY+fQ9/r9dgIWSuc1R3w+M++LiGO+iwJOREMkfPXQ3PFHX4SIZU+fsO5lvA7roXgjZrXTJ5Hnw6hZf1GD7bFt5ZVW4VtEEkaITp0WIQ3D4nvy9ru3rBAXdhA/VtdS42KW0ByuqNFsHhNy2i8HBCm1+ASa7R0iqc9vKfEQCbVjO7G+PD2FIqv6LysUi570p4gR9DZtfHW2A21sP1zImYJjcGpVhFxYtyRC/Q1qG21EgrLiC7SKjhBUk52VkhXI+cKoncMJL3eAKSfrlIFMwwjPDiYdPIrMf4w6MmFQ36gJ1w/VYb7qufT5ez93cKMQlydouX9/Ge25ZHlXtxlIYCRkdZY5c86w44gWwuPcTz1JREvhBuUMXDIim/3dcNAEfJfLtCDcN7lC/yXwDmB1LmMo2xzfhAZwnK/a8zOeRGzlG5O58EeStJLwDKQoNAjHhobJIsDIh/bRpkE4NgDO8bVYsPwIBMlrl9VuYkBXUzEFh3xyhcaiyEXouF4un5YOZz+ugQ0jq0OQ2Q0zwL3ocP0o9n9b+ANrn8a4nV0JOVWzkfl+f1bb+/Z7G9s6EkamrnIr94sdqPyjgOm1fo81u2PqYucx/793A4oLVMQKlmWSVkUUyFNttBd+WXU7scMS2ZBCbiEhtT+IdIxhP+AU9Hfzk6Yhrjl89yvyCNguWQN0L5h+9AXLTAfMSJ8JQS+6fYb3SjnSEshDWjiI+dooec5b4AJEo6GVF2FZpGSCUtuSCohR0Cgxfu/4mN9Jb1hDtXkREVGJNfl5JL4rfFclugWm+sYHfxlJ/MbxgbEHjR0J6aMu+4wiSFaiQdkzhalXNnnI0HxxVH08dlrkDfIUlJBHKBUpO+/sMg8R+DACoDHng5x4a565ybTmdC1TWary3kEHxoyCZ7U3k0mGq8fL3WNip9GKQixoJDImca641R5ln50jxybX0VRy/fgHEhP9A9rIAUwX7YwTViQGIc8bSl8BCxDdzY8s6kpy1Dn3Srm3o1/jx9ou7mHfhS4Lk8euNPYQGQWuZXc/2Z5XzTCjTvlAYS/1BqWaXLYUabLQMQHOYqu8nc8rRYyTK2XtiGr2HhGTrRKooe7DSQqY6BUXytOlnwHtO5zmSYm5I+R5DXBNymoGMOTztspwAuBBroIzZP863zVVPHZmff5Dk+rqTMf7MWsr3ZuAhUMYiV/yyvI13z+g4VmWP1Chzjzwuj88Mhz2NBAT7QzJW5hiE1pfKkUqEHbEMQ9tEv/kAEyTjfppG+k1mB/9Y79RRSlckqILWSH48T0t9rw7iK32JZlG2mloZmIzJ2Ucil9i2RAg+PWJtUhrRAf2ACsQk1TLf16WYK96lxIFcDDyeXhg3oAacenk4BhRAfKvb84+fhx9rQ4sSg7WOiYuIvqlxdnE+qQFeqNZ7evlu/FKCG9JXObN+SpaGZLn6oW4grT1Hbp+zoMKoWtlf3UMYWzI7XBK2VsAOC8yy4k45e1+pltNTe8clQuorcDD3+SWQ/tvagN6TeYypwYPlKygPFnuOVPXsiLITlCclAWn9V/aD+MG41tHX91UFEvFrHkMV6JnbA8TKA0XkdFDHayy+oz7P0//5a6n/cIcGe/w/0c4ANXjGS+vZXC68AbeesVR/svKK++TgiAfMBxhUo8rEAOS/u00i8tUGB55HlAaNocdfGCHk+O62sSMYOcyl7wUXUBWPIxO/s2t2e5ZXHykS1W0qsBzrYqjZFhMBfcvZQPKW33s9nAYD2KQYrsRcTGog/gkM85+XLTV9cEN5+r82RwmbfdlMHujqn+80bp9LrbQLQDBcpi0Xh4AFXZ+SfsWSbZhncMps8QjDsbnlyj7Yj5fzxidAaFwHA6uPumQJGfOogllB84R1njq4NlX8uPMRazKb4MWLM9qYvHWGvVhHt+2/gE48SCtPXZnz7shf5sMAx7GEKSkUomplO1Gs1HDRrfdUIIFbtCnOLEzRFMfouqybMEwP6RKtUxDrMNubpSqnZ+7SzL1rHr34q5dCnB15WvXA7qtLuuEBvz7b/Adtoy3lerRfKlK3p2Rz9D06e7D+IS6wUYOy5rhTGIfSgNPKDxLHVHnRFoa470xlblBr46ZmORf7WKUsx2Ml4Sm633JW572/HCXsmR3mPDifPXLC5BvDWP8OG6vhp23LM7+ex+lHi49Kayse7QRC53hkCUg56yJgByQAlIZwMMhW52LVPWOM5xO+KxCz6fVtdWHx/6n7DcDB1oI52w/0X+VQdUYJOGv401aFnkEpimr6t2mZkZyHXFfQuP7t/aGqAhgPyoJqQ/cQrea1v7nN7FWFv/f7epOfduvw2cec0Yhbo30WYqNt5evV7FVk8UP8rZj+6hi9PhpNDFUglkkXq1jr7PraWJCrd8czM/hy5DeHFc8DtshCcOXrVf/ZvCcmiDIRaYKLdPnjhiAJ+OSJ9j3T5UkODTY37hJlPuWQl3AlWaCAO5Ar7HKTwe9idOH1bbktFW5QkdVdZjVTLmDuA/AoAH2LDN288Qvg83cuk1bAo9RmW5agbvdc/RsQJBMzFdMTKmPqM5c4irCHbny0nBcIP3Lup16zHwFX91dd2CRFwAyI48+4/Bdflttp2Kc6lXmc/D/JmHH23ndbTk2VU/b05LkG4h406ipNEf+ND+KTW8HSIXf7VkFv+TcAC419m/trhntZ1fS/BCGReg6fWCrPkQahxOTfBHLnpE5S67hiC7Nl5wuzQoMeWpJnr2ZoPAfO+Vuj8qgBrxm4wrbzrSVKxp9hlEI1E0qCn6AkJEBipgKIl4+57JxssxA67/GE5lgzG/ABVGmj6PFGWWFF6SsdVPZUezuy+0aW4rNP7AxN6+CVyk5cNfmYe7nImpwkHAIU6RQJFaFY4b6HnDtx9+mvNTT7/ovEdSMKD/bU1L1PHsgEIEWCcBsyk6TSUtYjW0U6Wee6jdVyBd8+PypSYM5jsr7wAdAd+r3YFo1BENbV/fvFB9yEqWRQc83Z/eYqCPHoe5zYMu8BJH9eGuzcxD8q1uecKYNHpG06MC7lCp8W7WmGJHaV9mBXzTM6IdqqxXgVK23n7R64ipTXPrJuF+FtkoKoD4h6+Yd1NH9wGEFcXHL0X+By+pdmLvHNVWSjDR1FFmiYEzE1PJ8keLvwvobk/tM81aroiMp606EPHYdxj5pEJx+536sSzlDy9Hmw0t1WFaSCktH7pzSlBcmzMmqSQlRTAyYvPt2rxaI8XpdoU4mvZenhq/ZiTMSAMWDphc8eiPJJyRI4FBiSUcYPf4ezAocQqjFVPZwxdGFpSaMADT92ZAp9mzkhREB6FIRSbYa9Ye22kJnUDebf3RKXzBxBlvrqLR4UGMtsPnA7Sw0u450xCvCEA622J/Q+VakcUMpZwn4e0t37eixgfchf5MKA4ZbDB3+yoVkqVgR7VH8UhrrkCuIhf8KXEmR5lau4XQ92T+QFHb7j44xEsKv9FC4wH0BpntthZ64Y4BNjUqyvDGtRMAsY+cmQgAADfdoGeMzhlIBFYSwnIaeOcKPEpfzUeRbwFi1Ug5DucVc6OEpE5vnrcleWeb20EHT6Bh5CHvn/SqaMs0I+UaUlNCUBaxmxfgkdiD9C2bo7/Zajnl7XklFnKZpFbD8yfr2VOoQIg96qbA1AslxFaXnvFkTp4oAEjUhAe2wsJcgSN1Maj5G9MTVzGri1PlwK7BxQVunj4tEYASCiRXGkbSCU7fh53J/y07KdgUXhnLX8LLLfqyeJ9ydxSIFf+ZHmCRgJN/a9UjThhDlm3B/4dt5njd1VYo2T0YrZdi1e95C+ROu2btMvogHABacCVcL43m435eKVobLBTnPbwhCpWaehfXKBF2M2GWN40QBAnUrvACwZAIGIHxWo+7fHLG/3gzotFlnm2ec2L5r2TnxkvOS/boClgLGv6OXMDZM7bIS44rMMtz8cRD5umN+W5bbkdDp9Ct/EizqouueuxKtJxFkUxVtZYCEelpsUEnZhHogsGtQ0ThTnxIpiQg7DgbXfHY0Kb49CJsV/w98QHNxrNzpmmDzrcbw5xVbYbrZm/AdZgB2Ps+gL5dSPRjPj+/RIY+8qAhv1BgVAIIGQTAzLzgNWBaBaIRaGj+USP6YaQvxuD29U6CQrbuD2TOt3pwjG/eMTEocr5OS71yLiuIvn+3uuhA7Cy11jdFdQNE/byt8qupfjqZspbltfqiKivxHRt1G4QrKWO50/Q0zu2D9uYIsiNPLypLbqvFQfkNFwC+95B5VIV15VcF+mT193fHyvBfedsiXwTL71cikFHu76ZEkGV27HHDX9n+O81RGD25AFsUcQ4qDVcF8JihVfR7DdeZ7wzj5DZkb/S5hmAzpBREJBuByIBvmALLv9cNBjTVJlyB4QGRq01NwxW83aZjYmNZG7R7n2+D0QN3MiRE1NZf5Hn/GzmztYK0IUmJ2S6js6ShYB3JhHcLgxQVqgxhlgJHui0sl+hsZCsaRYOgDniVRwSfsnPRnCZZZLdYi5cItCax14QP4Nk4ywHOLbo3n9Vg33vzeVEaR41WElxkj24twW6P1p90CaJERQ8i8XAZDDm80X097/Pqn2hYTlaG0Od8INAKvfGAFicv0xr9YWtArBpoZEsq8iy/QqXSOzf1LH5dXaK9UY/BFXu4o/bv5pHJrJhBlxGMZlVSg19hgfisyiXCUqsw87Mbc7bnlhYpf/GnizFxZX8h3EuSJa6znxXREN/V9s2PfsOVTuLyOL6DnAAVzXXL/QN3h/mjjDPCTK8n9Sf+gz8V4m1MFv1qpNHoeOaiUxwczEzXnyDxc+YiWegbeUWa9VPLeABBKOZAzia3dyXQQK9lm9DTtfXNGpF1vUrtC6853G49EOPRMxUWLzXah68WqNJWpCw/gl9XwX342r1q9mL8kmzh9Ri2ihkQ2W6cU1AsPlx7Fuo4V1lFjt/vlZYiOuEEAuDrTkjA3BtNiREIOLWJZcKNGdkukMzJhVJx8PQo86ga34+DsZpiU6dCLYPSj/6g9EklO4Ot5IRPoODN1oiTkuvt8PxKEYwd3IGsJ9nhuQ7U1gGG6G40Y3VhiNhISU+rKTHmhgRb9rB9V0NA/EJcwAizs0i3CM1FZnwbFmgr+lk3tM5KTCdbyAsLHd8ryRIGWe0y66NYq5uXlQqo5sstH1JI8vybzHSnmfXBYRnGriqRdCHQf9fuuzjfAdrPu/4wJ2Yb8lTqXNQf1RHS73Gq07C3902/0l+004MFuYe0M1UGs5hfQL6Gd9JoCXwc//QoHdPR5bd8kMVHY7ynh9FzzFDKyysYzs/rYV+DiUXEqFsDABOAVUmkFWlk/3sRI/QIUiPxg6hvCT07Igz3M8Bxf9JlU7Mor5/3wcM7HDCO//d7sRSiG+DiK77GBDiYhu2srDjrQVI+bSRCKTvVCD7fzdpu4xyC41NAbBt4P3+NdZmRJ9aHebeCg+b9H1/smaU9qwwnlD5iXYGQnpAt8HOKJfNRpxNTwaVkF+KBC6rnTV5X0vdFKItj+h0pWmlEYyC3BLiLZCgPemLgdG/8XvTUPW74UFZkoSbv3kqdDFJKx9BtZJbt/pXBui5jLiF5nFi6Yf/OwPrJGzkpZwR+S9cWCwABBnbA9m0Flbb6s6HWzNjB2aPY/oIUvUffF7vp1muSLhhQuhW8Hlvy9yzt77jXoVPUlRS31DwUIm4D7rh9cBuuNK95oPuzx19nxyNGFYaeYJZAMXfWivjy1IcJ6j9w9UmS8yxID2CXunUjR7plGFC5fpAE3pbnKU6dt3owA6IuquUYnFz57i0gwpMxcDhUY00k3wo7K0CuGNLIiG2Yxdr+lP8z7wKIa1p850SQQcCHsGWyoGiNkvRy73pwP/2d7MgpMUA0Q6AeQQoGB7srXzWksxIUXi0c+mc2v5LmXnDLTisuY961pn60sGyE5JsdYlAgQZVvoq3l3myBH+C8hGiha6/Gk2BKAVhiUuSTg5JUaP290x9tbHkhTGjYKYm4fuWUeSY5pWfMNB42VB9trRgwlaKCZEDsCoAYWnBYS1r6T2I1go/2epZf0xbm9Fg1J/FcFzvPF0KelIbesXNl7N61A7CSa3iJYGXMPGRhuIWxBt4pZuH3JK58JUTXf0yZSwSpC5tBgtrQZ37ChNO9zc0rz5/VABpO+ujw2K/aNqO2lwTVh8OrqejZt49Uli5OQR+iX1+gQIG08vzWXzWQPMyhUp74CM6PXYAoH61XkLKHHQcla8vS5kUNn2Lo5D7wabHk9tSMeoFhKaJDjggrfijzaLYOQbI9XGLgtZuI2vkPqkPMdoSu63cYXFmmOTW7SuweBVq8bWnr97O8cpxMSCzI1TrK9I0eca1JzOZI8U69Ou9Dq22ItB5D3y7rENWrTxDX5ve8SaiOqE0fdbdXyMS3rFP7gjP2NeaunwY4mLA2c7UjlihpsBCjBXQB+UTS0XIDpDDLor4r8DuSmOVghcimzIEQtUSxfVBwZzpF/akh2z7dpi4FfZ8HSOvJ4sfcKOftQ1sooPkxnNFvB6/4Medat9DOhyjzU0fuDkKoquzo4miGFISvkH76Gc+RZ2ZqBVYrs60f9YZXxAfKYYrU5QfJ3MYceY8iItLUbJ4VIbBvpbDCnrPvpacIlyLJ3LECmRWyLZa1IZqg9nhFz6kSsJneJmQr8fl5SoqGkMG8f/E2U96iKHbEkxX7wVxTc/vI10MGtArrfyy0klpbwZKz4ChIHb3hH6md/3OXEgAWQYiu2gWE1nsdduVf7aU64zaz+9vJBU3wNlwYwIBEkfHtCvXKljfozgAAfm/bOZDFSbuSYtVFkXiTCG7J+yL5Q8WgMu7l5+DI+lac4226aK4UK0U0sPA6oO6Q4qWyF9zvow2Npkos6UEDYeMygur0B8Ii+CMlBNCurzYdEewH+IJR02fNvK88h5Ga8g0SYVyxHqHJAu7fOf9TqxQM0c5xif1MXzSylm12We6vsaLS2IPWcHzo3efnAWZFCNwrlu90Q/U2aR9sC0SCYGx/f9z6A+Atl5mMhH4MR9rRhBEZ/o2+aWG6J0YBrrrIRXAzYb4raSo+kxed9JzMn4Xcvkmgt3sACJ77zt5azR4pferESK1YYFDlSZMkU2g9CkB21fFgAjHYjltz1lODT0qYZdMLf+ppSVkXGgOrYa4lEE93PwPg5oKOTmu80qsHW0V/+UoiNP/o1miAjvpxX0AHfxhF1dVQQJjRrgFWM6ra/0/gBVAfC3JNQQk9Asad+fy1wsnIKxKYPkdX5JmWPATqyPsVEUwfDTyUNRKkyz8LBzOTn6ItmQ+707Z/nk6cGOU2k5w4F2oOFYrmnIMkziXyA4p/jf/vfj+F5yNKKkAY5Cu61F9fa6immPKwlE861WTdXNXIHR9z+4sAACOPjFLy+Bx8LnUVnuX7Tio616Je/sSdV4UTBXCWJrx+ytR2dXavJiMz9/UnWkHZtvsd4B5WWsooEZaM6OjiE6FnyvBpn572pb2i6HNCgYbrCzF4bMZZlWI2HKvNd5ha87zjJbFw7qv8M0Qwyw0h1BEm7xgu68oxXD8gw5xxPx02rocAiq3iM/yK1Lvsv45L/yrgWParx+eOYEL+aZNdOvrwkJuzL0hWFoj8lKfICevbd9ArofKCcTOm5OeYil7+3WAQYs+uEnaZp49evFF/RdiZC9k54CIuJVCLPAAAABA4jAAAAZL86qf/iA/ws//xW/7vX+2V+9UL5EB1s+QgA1i1eW2olM/SRvcxNfSlFbkN1kcGFdrHJ6sARzlNFapfy5fSfo3MmviqZYNpe61qfXPvW7QjwlWZVNx9hEJvrb1PAFJ2UBbYZp5uWTuFNlKQAATUW/Pp1/02ZMzMrpaaBXuc9pfjhEyyn6B2zsO9BU5RkuWn/BS5DiLMe7hes0vFMzxF6lt/eDaK3KYwDYK04F0Du3aaf8g371rfFI51oRRKidRjSYg00rUcjfX7TrU5vjfuJcxcmWcRc7aGD9azc1EKHgPGTZahG95oDbsb0+Kzb4b0udQAAGAW5QGbZQKCOg6tpesyxx6uW/99MSD9ZSE+unPLmFAtbaMmZKndhB0qQXLuV+VCp8gSnhUX07f3ELAcadE5VxRgbC/q4TYEhg8VKgQigGIHrKTH+KBgYBvqhDOGbZvJZz+Uvg962WiL7KkGCAzh6rHoVExCJAnutD11nL+gKe+dhIKITTiuULngkeRGyDHnSlLYYFYyozZbrj1UvU5mM7c9vCOdSx4tqEcDXqd6sB8aofTq2PPxsrIYXnxgrpS856kYPjOiMZ9wz9+ttdSNFZ9gaZOqn4bRAa+VeJVPZlbjwGTzE2YT+j7hRelIiTGJmL3gPoykBpwRsCDCdTqivrT32cUJ8kpcxUMBs7nSEvFsW7cbE7Jjga1z6dpuEVLKPTkPemWosR7xj6NyobJBgzOhSIF+LR4vdOVs7xdRfJ4Ie7906ri4+u3YgzT64CXSf2x9U9InQ92uDCyLXIq2lV9YcLDBPXfUYST8FiABi7mNU+uDrpjgfGgJWP89bJr2/2Ol+XXyoos6wO6oLRCpvok5+4P6zq8xsmzZf4nwuBjHah+rEkh/frBvQKYfD61VPSKFShvIdPWazpiINS/znEx1ui844wU1Aq/bbSdiLAdckediCg8ZBuZXc7e2HoqQVJCSSA4pqXYACQ6idsjB91mWGO24pHXvrpCzPTZajuXEZV3cFBxtKt5MS7P+WOXgE4jZgk3iEG673kf+lMwkdDtlOojXVasoMvpjsZ4rh54mhBkQUKvYgURCrfFuuM+VBFzWlRFyfBTPTNFo+K55wEmnw/MJTQ4QPHICWJtpH8EbzFB5jYj9dgjo7Xca3A82MHpBND/rzPpYaNAISy/AXKr756iXymVRVBLsPmTo0GaSXczctNfPrcqjc1gSGEnYUFZPeIzYfyDymm/Vo0AhwOUnDxGJIdls+kkq/OxO+63BhiObAP5OXyuQEnpA5ok9GecSl8OTbivjAtEqp210Zb73N4sPfO/yin1aTVUN9/WW5LVxEXcIS0pNEMLAI7SczJufLKNHPs1QM8yhLxpOplqEtI7XgJYgeDciy9kx/T4y+rT9G5m32Nrur8ONFbt8LrXmArD9sBRrGnTLRiegX63KJae2UQ13Z2bTQuNyZXowZ7bwdXZuGNN1ojWszHH+eVHjSV3TS/G1vtoag7vw+g1pv5/P1S17/KYUF2jZAJdM8eNzsWzXcJbOqkDAI1WucVsYixBtTGxN03ydxmapE6tqIC2Ps8n9WJjcCUPKtLQgEEqLdPBCD6dHgKwzOaqIoQ8yWQkZWvNTkcMCCVUTrUkh/I5CpLU5P4gP2EJDCTMkLbGc4KhrpiNnqoQJg7a7BAZqpNIApjm0GjmtzeVHLNgmWCJyZ80KAx2agWBLjo0rrkrbXh8ubF5sPAn0OK3Xho0PICzysnqzK1M+lPr8Q12mDdCRPgLAt+hqWwvJiJPvvN6zpLgp/kz+IbY8xEsyTu9YpuxLFbUQOylpCG01asoRvwF2wqbTo45tK4vSCwMj9fNlLevOWFG4VAEiXHYSeRMVaYhwc3L8S8QWFTJGm2BbmDUnLUE4XAc9zCzrwo2RHsuLXGNdGaYAXAd4TbfX8n/M8/LNxCNxUncZIAQO0c6sFXajMuDO7toecKSEqP45St/HKEAuekMsSDWaF80w3b4/k19EZpqxOkOpm+CybJZBwDtre9rH5Un1d3K0X7gjyMSxBqososlmOhWB99VFw42Ml0VHHhz1yoKZB1RTujVyOJ/CZPYZf4RDaV9XVAyNrkomP1cUoL3uGqS3haKCbYb3q+AOKXVhEiuTQWApT60hTlRfmg8BmJqhR0xnZ7qH9ydTVZac3OqywCcEmMGPa28isrODQAYHC6DyvxP4nvjcKwplScAh0Gj1tIFR8s34aWR+gPGxif6R65a/pieL3bEHXA6Ux/iwoF7JA+nh2KTmIkWBcWd5FcPJ/zUuY6roOAvNkpuUIo/+nKW5rsPW40LMka70RW7VoialyavLZ0g5mAIsJ5N7ovOUiq2rTfaIGvYEXdr4gIIXlPaDM+R/PQ1/gPfZLr1bapZzMyIOVtc42E8kqA5OH9Bioww7otisoeBnI+/RWFK9weyqEOzLE8MomOTvh/19lpr5ur7QsiqvMf8YYvzFhLFE1FWNqWaxXrjVjNTj3CmJAllklVBD/fM4vAMLREgT2t/x0wIsx3XPKoms2F2+8UqfV7iwqORP07JAzR5UtI/tJb0JiRE7dbwcqcstuRCnp12f+MmMx2C+uecixoeFNDWt2ktyuRx5mATy4f2GAPG0lwqEBbUsYQC7HGNakctw/ZM6KhegNI/8pPo8Qn/PquLczA4K21u4Gq214PcHN25xoXH9/8WIBfqkSq0tZsV+o+HuampY0xnqueYAn4UymZCbAcQaX5ZT4EIxUf9Vml5bCayQiVzhNix1cBVZ5WYSmM6HDftpHSj6Lw/A9CIQzs+j2k3NKp8breLvzDQChOHhdQvref4RVuCXiRTsBWZOrcBFUtB+a0KIzmFJlv6AfpGDW3DDuCBLjZC7GU4Mj0wajPVwZtyIasQRVcKMgFbzbJSfRRV0qPNaStSiBraP1VVvpqitqTOcGyGGjo8PnjbI78d8SJgKpwDLYeztiYT1leUvPMU1yZrBbYSn3AF1DosVm0f+yDSsqW3lfk6nM1Fbpat6I8Ii65yhrEuZfmTyXu4UHOPea7xVqt5Mv+06fV+gPzy2ToLc/4OFYmDjI6oi6lowPOHg5UMR2ygz/3SYXo4SR55ewXMgKw2Y+Z2GdKBEIgvX0CCS7tMW+4MADf5vmk99ukaC2TIhro2552qlesrn2SSEf9lukNH+ZUVtRx4EJlObuXVVsLcUU1WOLNy8CwS6cfM0CloLmmjHhbkYeB9xRZ/rUqfloGwq7Fn2oBj6Z+dQP/D8pjyRCP/UldNFbcAKNIoEzP1ZQcnGGrFw6EZx+ACpZRFyB9gc42U1n6+lq4bXQedlIqRKJ1DptXBnmM41p8otCpb7EF6vk0LVUXB3WbOAyNj8mmCCinUKTt6A118JM5Zbr0lsWJ6XMeMggqLMzPiaiFH0lrmuh0mXEeSIHJN0jGrnoBKzrqbUur8aetudkoFFfwnxg6WfPsYYa/1GVDbddY8qkLuD42cijptbaRgnjk5BKWn4/G+gBoTaHmvfjjxvi7kI/2iLziy6uKEeHQb9JoGk4ZFVx1W5DFPDwtQaXYd2Dy09g0Ee7MsHvLGpPpY6Kqe/2qmhshNI7VUxCcCg4IwOeaSShpdd/WTneNRa0CQ/NLuryaNimDIGg1cGQ0DFMuuLC2URgxeG9jOzj15Akxj/mGnHj8xLKGdiFlsHpDy+skFlYOncbSz60OZKX5RLI72jEwNf3M1j22ZRtPwauPTORH2wzJVvmWIdHcj+E+Ukv7NAv/WSJcIBSIC7I1fU+ytJsUH+Us3B8S8lWIlcp3/CNcNYJIOMFizIADJDF0KkW8bkxHIdcvKLwpjaGdaIwcZEdH9KmH2G4Ybd8nn/CkbneP9HSmtp5WakMJJRzTKysIsOdQbHQ16SbH6rNN5jDhqubnRKejg6uoJhMjsJbO19/Eu4u8u+F5EfD+YqBQVF0ywNlVEee3jt2iPGy6/X//JVyO55SpzKafW+lUN2eOGScAs3DMyUXl0dgFcSRfNSEZpkywJ94yRruGTPZKQH8iErbafL0dqHNRQrK37NTTKfVIPQS7wTb78BnWjmhl0O9THaUqjvPGT/p7lTGl9vKbIvQWb5m/RyO82tdkgolbCZ+9jjWJhM6eA5BS4tq0o1fuQRyrmvdH+oE0Gj28dD0qbwcXlrXwlTvb2zw4jE3TKY5sMAoJvGsOroaQ0YRSldrdm8HuYPpLEg445RcXsDxx5fUSwGSBwv/+Cm5zEaBQYcioj1ZLWYmpp8v4e/Jlw4Czjnak+mSv1xcsd9KLJHnM4Vtm7Q+HEFPW2QeSQx4ImsDYdV+sTOsir8QCwiLJOIe1wmXsbfpc0JFGa6UFFe5DO+NCIdbbj0oiKCEJYA/nmS2GneHOmFyMM4B4lCUgW0XdFPXYjXqZ/VYbj8BVuRYOiwHefTrRWiZANjMq/tEHcZ+sn9yvae+vIPNeAIDPjm5v/7G43UfvEZZHsErBllLrjNMFaXJcXQg3DGgqe9FDqKJ+xwNLdblqRjsrqWWcDmxp2CsgM5J6/wPG43CgadpPwrvK+Hwa64e8CP0FXL6pfZHhUrnM6JxCPLjv6C9Y1dBFGBKBVW1Ck6FuUpzELZXIvr0TH17t6HN5t/TgMbVeOvNyUYDABHLYrQPExJNPRRMmZ4ZsPxiHN1wVjmS/Z4gLsNXTSqCn1Ki8jDeemckuSDkDHsx78OucOx2hYk/iWDQfJC7cgtneNvdn9uvFqQxZhJ1zdQPQk5UVkboXhKJ8+8x+FLKrOMoCi0MCzSNugV8h58ijTw5aBQveQSeA2T2w0XMLqsiHcRtMOicAUp8ASo2LShEYScL31HWFqaPnpbBAb7YvLnUByBqjvag05+oHym1CT+oX1skrOqwwPe6tj6WbucgR7aQY7V7sWFFRuI4cZSa1kL2WKljFE1r189miIb2PL9K30aqEPjjCnZRpsJEXAqssbr6HHG504aqPmg1XeMS32dR59TVvCIJbR4ZV+Gy7D67mJvf/u3uvur8imuXQWJ+tfl2sODevaXLeUcsdhNKCkQxo4ontLH6qfaClhDXpWwVilmB44k5dPbWufTFy4xWBJ1o5HTke3qbpoqUP5xZSqgx0R25SZi7KQXjmCzoTvO02oCYwaCtTp4jJVqHDgrgIRk0vu5rjfX0TUNtCT/tEK5Ly6y1/i8LVa8VdjAECM5BZ8mxz0wg0WLtsJqjB1qowt9lXImVMFTyiDBWgQdYIw11qTwQMPSwMeUdPkA6zW54ekEV2ekasCFmRQXg4kYVfj4stRRIfloJn3apud/mQ7rZhFUVB3842HS+sc1yq0mNp4IM21LGqHk+UZJNkPTVlPTTNkVg/2KBX4NLowz2PdO7T8YVOW0gqbjB0ChW0aecygUAheF85EtzjACCGWmpHq/Z+uHNCflT3Ygwug/5z3nhcpW/Fs5AA+NKdbOOCs3WOv08uT9EvSinE0GA5Hec9Tls+XrlVjK4lNeEEXLZrYSu9DVSbN++dHkOhCC8p+cLjOoL2i4GAQcnTxlIcrPx15E561IKugRcrvKYXad3We9VUvlIqyhDYKS0JRSg9c7D8B99Cnyo4g6zLEaWRg+xXL2570A96mP6ZpxeTvWYHHo7HPoiJ08IIaQXwLVKjc2q6pX1JgAXPZ9SbbbuMMT8bwh4vYl59+xGiEpzKFA7hExbB+sxotHIAcYfMR4O6M5D5V4xfoZccUgtAd4ULgVs3iuMNqttYz3lGtdY0Mrk+82m+AD0nO+WpjU2ZrmCPdOE/dJODMb4Vy8NHQK1ClXdihH+M66AYWiSalbg11EINy3j5WhWP+OHWeXVHjDYhsVPwfYEcJQU8YmASHriFQXYnV5AvZAxwQ9xFRfal4doPCUK28hRlNPqSuGJVkUDXo1MCM6kGGNAgZ/qXlDk/YFLszBtmHGpb1LmyiC4Z7zbq09V6MNwvLCuS1ATOXefgkGwAhCPh65mP0pKZkhru/33b42xOnqZE2LevA0zFxmnl4cmWD68OpcZB6yfOAMrp8CBncgt0RoeYKR2H1NSjenEHWol/jMkji4vzda3NRnFuQCOhL5S3NvpteH4D6qpZGu0Py+icBxsaLauxHjA8K93yWJIr9J0/e8HQaL3kqS+8+CdL7kLR6sGADwdgX2ztmklIPncDAAhUggiJ2w4Y+ZEEmaE/JVmkwBvsH2JdzhnCiv4W1UYIQZS2qvygRh58SeGgdIvVJlJlyGFaZo/hRu6f3s5h0YQOXmNxe+UYp8Luqx28+3LZ0MDR03ccPRtzbg8e8bs2/geIHlNo5NHSU0in0ynj9ogT/kJ7TlGTGl31DWNIw4dMUzRP9OAeH22SCvY/OcTSI4SmFCKrC4KsFXZA1K4kzIVp9ZmLmFv6MiB/MYVJfFu073lkknuJyYsIxPlwilMTPGvJOxgPUN+3vrna11JXsWxOqAA5fxtkp00likoNG7nlGYPDz2maGBo7DhY62vH/ASE0VqNgLnYus8sbNRxfSt5m1FIxDntwZ/VVL01cjpkxucMfyKUIC2he/4WNmWAYuOLNNZZDXBPQcgazl3IQmqQppCDcXGrx8znVlLJYtmA/ekaDpxhynm4CWaL6vcNf0FfDRm1aTes9oND7Mz5iu/qYf+nJ4kl0CC1VkjWnXlsOydBSnm3EKIVCIUjP99npayWX3MpXRIDw2SmbHbDPBGW6NWKTqxLcNxGjj/f772e0xe+zqTUnOS5mrafSqiC6DKC1VywYhHHPNMgNcxnMQX55rR5x0fprjoI8FHJ/qm5yoqw6RfPwXPo2RMGsHxkc2L439C07VihVYCgqss9OHOALpT8Q+GszlIz5mYeSajCKUqzW3SjfkM+XtqjLUl40Z3OcvAYptCPE/Nkjj5miejgHsPeKxHbjVJaav1tTXW+KQIZLSogFx15NeETlxV8wxF52YVSICOTRV0Pw42eKeztcUZ7EBX0/7nv/ffPu0BelKOr7gE+wZZG+PVRrHwCu2ygRJlFEOSlkI9eG5z8ldTOfyvbho27sraNvLWRwjSnAdNp8/di5V3bQj+3DUvZTS5PRA+EEXCQwtnnRTF25v7TQdt+7rCL7l8Zj70MZ2Z2WF/kas1aE8CR/brpmoYhAiKanSNeRWUYgtLfEFGAsULa/rqYHN+OoqkBbgHT3Dr604tTe4jcyTotShSS+PgYWM+bvwDjwr1MiSdfhv4zYsXkpqdnLFrqUZg8PYyFrx55u640a60h+nVMdSL4fOwHXPZR07QdLNFaUcpFk5KERjNYmRx9AejDU4jdKv9G8J6tnkFVplFSOTdGjTASDG7RwqxoBMsUNDC79YVMIM1uISc59CnfXuX2akiLEcNk80JRmrD5CAYj1f1Di9+I4zjRXFgQ7lineeN0We+tXkl9uycDPKhSdK+Vhm6V9E0bsUO1HtZltXNxQAdg2rs0XG2cfpZr+XsZJiCE2TNzyTeomlCWchsLOsU2kEMdZfd+VKgfGgd9YnBq2A81Nu8FgYND13zWPhd267CTolCFqfLr05QVduShIJhbps5mvZ3BbfCvF7R1LzR2Xf17eVloEgPKdN0NlXdsDTqOBThTeZ8hN3QFOHQdAlSgRoZZvndhN5IMtMkQ/AcxfJ3LUtyKyAMxuE2wZnySspL8nj9MgwV4pG8qag167iq4V1KBgf0aZOgxI0FupFcUu5sEvanjheSqB2N9KNFFuPSXsH4m4WoWtYbJEU8mcGVS5P7HzktUawI/SfwredoaDWrb0lR4bm/DDqq8gRRyAOIqSQQZj1CFOCemyTtPeXi6MV16BamSbNmycPFxRJvMAjEj/urm5Wzbfg/d4MZYGLIUoGxe2FL9XI8oOwJRf0R0edZytMZiJQDLS3LmkzW4j+OI8ErRSW3xN87PmP8ITLwnplE/mAXjATHXIItsVmnedy5EyS73vX7KEyCPPN8SzdOuW4YpqHWg8XTwBSRe5XiLsgFBJQNe56XVUjRR6YroYUyu0SH8112QFzGBGYsHet+2IxEsWXoq7cAYWI6vYKsStsB/HlLJxmPdG53hTgAclo+n7Jpwg4JxsjdPwSKjnS8GKtyz1/bl5x6KTcvzmOJjZ0COLx20UFDXS3iZ2tAAotiyxW9KuE8quGGrInP5god2g8uXLJk8qf2S89h8q9uYOIKykrw+4z6zcnsyJEmv+c9MH43gzkb+ZYz8AsfnUmDXIRpD4GimoTV8DarlViGfXfKVbei5RcobgJ/1fnVCY2ZgsfcuWaYLSGBDOc2F5C9KYYqFoSd0DhUQIdmCscKZ5oWVqqMxAsNsQbSOK+PzP/ugedywlpAwHin2/Bun7t/dJLaRV+rz/q8ACKmeq5MPbuKQ3faWIIynGzAO4dzWuVgrOWuPAu+/APTCCm6kY5C78LSpIUT8QXfmbgLp7iSKNpj26Nq3Y7OOP8AsfS0rIXhZo6IdXyXrd3aTOa+/sna1oRvhbsqvsVq6nJw/y1AhdriVR/2MJQmT5eDqIAM50L95ih+icKiYv/4JkF+Ox+Z2A5qBF0NsEVFqd2R6f3ptQZlK4mZFcKeT0mCcHIuK/Q1kV6HeZW7m1gpV/WENQXkGtxs1j05gYlHrGU92Qzgr9qOCwhWyOo1lST8jybf+gc/i1ZJua/KPXvVt1rh/naHwGvoUMERidmIVtyFbeWdMl0UXvR8j+Xy08uKn233ijKXGUMsbHOgUQsjPCw7YWBdWqvHIs8L0WtxjoSHEVIjoTWqhQdIA6YwVjjqTAP4/NF1FyMTwxLsAvmm5XuHyc9ybD+ylg3fT3VVfGCVIOYy6fhQ//cj63HCwSxQGkRKFRCFD/AB5Z+BtHjQHoqLDyuFRsbKMpt7X2ZReMOJycdutfqNPxdLqiADFMH9iT36LEWYbYOhAmgbN9wE/G53YxRtGmmdPujcqHozO1+jw6sI5FF3RfKLhLETZY+IxB2aucnxjDoVI0WjI8adqP9R5jXO8va8UjZHq+aBGYZvaPB0TjV82HMflyY6hNVEOIKNwZpaPAAm5jC7M712UrznwO4brbIvmJG5j/xjZiD00GzhzCxaNKN8WTwFQXahYTIuviMWMeKc48ptbcuUpLCNOrsJ9Tfq2t+IWmhjO/ETciQw+gg7hSZlpRvmHv81uPrtWnABUwIR94BeWI136y9o0pK4upzuMXng0yEHyyaCURuq3s3snqA2Y93GEJgNTawtMGgLNuIkXmDg1cttRskJ9xPJpw9Lt6De+SzB9+bj4A067bI3FYd1+T2Bm8WVf6Sqj+CqsfAjaGn2GvlhkbcaoFecVGiar1S8H0KTSesEpKP8weKRzGEKHvTr7eXycGYQ7TfGUgL8Hz/2kf7v47A//KtQAAHdAY4JNJRk7NlZkG1Pzo9F3hY+8ER9jDtHcKatLSX8LqxPnIyVbOmIST++oQcHIHCRc6eoebSYrhgFTQTzgrOrwM2+IcaEXSYV5ZHKJ4J3XbH9ZUvC0wzkZCGuUFZwCOhc+4vRq9RPAqzmex8PlbWTjOkMezTCR368wkg2VM1RNuT9FQBzxkCaIP8NGYbQ5T10rv11QvDFGp+JGjDWEHUTFi7rrCShF5I7m3rn12m7vYadpsx+90finDrO4GPNsEfrnguUVzoPy4Q2w1MX1kCXTqyXH2Be/zNbmxswfKWp/uWWD2MEoiDEnj/9oYHm01c02g3pNz04igeYGFuQhwsDvnQI7nc2i5ZM8K81rbStyV/jiQmCJDTY9BWum0+eEmh/3r3uVV1VuZCaSlh0OMio5GSYi1d2bPPrJAeTMR/HrA4KbpT6U85rjer0NbDX2eKdyaIgFegrwspiUWHAN0JywRQ9R08KFa6YXOUVonHEIAVqY0QJEQpTadMS2MX90MtArPB+pgPF60SdI0CjIagQMyole/DCLqKAUMXeG8djYX8zoTQSRHJ8WXJ/KdyHhfwOG9xIchZhPYELREEykjib095iiAKlnwVaKZD3+S+KQsmXzrmEnphfDx1QXyB9EO2a5fPXqMLw8A35fEB3m3pV/J3KI+SSGWGfJiNSNdLVaUMzhwnz0N2nQ1V50mfsHkShz+kYdGmffG+wgjXuDPUeTnePAG6FF6o/kIq8soRGH3JT9P3px0JYnu5GQQs9BSdAuyfKivLOyHlBGpbZqtSKUu+6TpyD9k1Mp0xNhTPYnUDQN7AS8r1xwVGCwlcewjrwyFCqfmTqG3Rrcfit3Rj1dEoPKUHd9nOAyk52dYa5KmOVKjDwKUyFDSDbkKxTX+cgRxa19wvnWL/1+B+H+85WnZD4Bgg+Wt+txi1U+BVcxqoJfKxgKoz7VaUYQmRfcbQJ6WJKfG2jh+I1cal2qDkBg3kJtemiaeCm74XS7aDQNuSt0/crShqIKt1xShRt1yhohR26iWWfCKlopMB5Fm8UWtL3X2lXcwjTe8ByHapq77Tf0AxO/TUnb0kZjbweCslD36PDCWPLq2lP3o0Qog4DBFlPG6LBrI7KAuX0BeMcEE2lcMskdHJauNuPhfIi/v3tdU+THs9fc6gT9UpaSYu6sdcFCIqWJql8bhQzBa8jsYmPuzr7ALGwFlpTX1teElyQYxPXVBK1NiLry1Qdg1ZO8rWXF7zamb+LvbQ+jw2GCUShb8MmWQBELLfceqQsRuHCMYZ2MDtV1h0T5JYPr2waC7cxSnIbJwTiHqPgUbGlrmekiK5gHzjS2NgZrevd9FKBDBo3ji+5YCF/Kt0oAA3I7sXvAFOItkHpjI44SgRXF+rcP1muVWWuQ0XzfTdV6gOmrAxw+abVHiQhSo+nbyeZ9bw1Ae5DDqGRUBLBWPcL4kUuWbIxCOg58WlyOxsGa9lZm2yFqnqSpq/TPHeVTItnfZ/cAAzKfM8loLsRBr0kJUjhuc5pw4yMrNQtZUv223/zaLE0PvO5TI218Gghl9ynt+YB6c+Egdb943oRHrQgUyijuzu3dharzMOcI1YGPDNLnACSniHDvFXpvGMpnLULiHT8gKkM7hurwFFrm6Jcj6hddu0iODt8JKDZ5VmpYqoxFyv0dZCr6usyjmyM4WEKv8Mk1pT8dRUjTQDCcUExC01bqfbmkiHebAsAJwhEyJpV5vszDwee3RRmdqRf722LWIP/9f74ACGSdn3vYfHOX+0k21zAkG8exzSX7Cd0SbRaCoYLdl990318h0zlIpGs3KIB5XyFdWwXOn9W83wymv05hmyfq0lhWT4y6Kq1KE5CQ+Uk9hQBdBPR/KpesyFdAxrX72JXzvJc8i36ggznyCqW5IYVDx2V0StIciLignHLHH6u001DZKIaCBQBeS51EJc0Lvx94ImPceU7n0o//L78ZM3zDMElq5ry6q9dNkIfK4oRzC33+VvoP8NYwXX5v+Z4oIqBzaAlNGpOU2Dq7I8PaTso5UImJ3yQVCIZRZ8hqrF8GEMiSfeUbaG0UVIowYZucA7FmWVo8vHcvnduP04XwER9HKeo2hx2hey6ief9yrpgqd8rnvKjIUw4/c6812u/UrZpA2NHM1evShEcZ4Cf66vf7oY/imeT3d4R+odsft+1gGplnywMeJGx6vTxBTsfSPdEfs8FZssg5VLLvlOisY7ftiAqWli0tiw61TrtqHiEY2y7adCOBpkSDWOg1V4CuCZZxu/CFBvW44tDvkRsStWwTYE7Sl82S+Ik2ztpgzGkRtvFNVx7A9jwHnLJZI0aH94tOaFNj2Y9xJ8vU0hq6OmponmQAwB2+sJgNcLCJPFUKmSzXCyDt5ykYdYPpetTsIxBqgw0aEMHU8RUu8q8z/QWl7u5u5O1lx7Y0ckUTzYVaITTtYjADasXZ0OTA/ZWnykkbkic0L4/tBW9FcJPP1s4mXfliuumfJ0oOV1Rx31YNF0kbgqLCvpwj6z6FlMhRxOk+hxQWnNcDGe3E+Pi1XXwOUnNPF6c11Y48f+hIMtFMfyDAyiulJB5TkKhoYRIKOVoiVAgt81PhqJmXOwWSlIre7f3qSzfJjW7sSeCE1CbPXMEwA9KOir8PeC+t4l15wQBfLWLGky0oGHJVerxtdUeAL1F4pdsBv1G87FCIzXPYL5INr/Y9t5HkRaTrC25F/V1kZ79IvL9U9HiwwA67a5W0yQn8ShW4IMnMV4aLEZAnynZ2uJDrcOUAWILnBfH/2C2i/WeEC7ce2bnflk4BGtWqzZJL2cle6gwPMl79giAl6MccSuaqL2SHgSJNjBwFuuzi3BxeAtBFRc4J7qqFFRB7ezrZtvRXzm34568SzjOfzYiNERtSrEc5gSJgVzJ+4aTJXq37mSYLMzEwI0NILM2lZL0k6oIvi+OxtHhUYBauECqh8UkzDh4S79j5z17Hv8kQ/9FaKWNXSo7KjSNsIKthyfTum/J6PXEOJbFYIKkocNmhtOCGjnYf1ke3rgCQdlNUNDjADqyZj3xTfRiIjYrRrGOvEjSi09Ly6UB+RTS1CuKavpZqwHqfkZkoVqC4SLwgpS4ZWWOWVzFpd25npmfWwPxThfYvVbyhU3wCYFPcI0MXugj0yLwGnnQ+7a8yjVic55YQJIrSpftZXmOyePP5AAJkfMTQeFqHX3AV54htUF6naSSkbkiMkz71Eg77ylxMjj/cSGep3fTGaliNjrhPqlJ0Wo/54iLGlDUsqsQPJ5uv5pAmKFfAb6I0MK8iBuvvjGxazQ3NWNna/N0kQoK6uuaC8YJPZOlO7fVovJtbxVnkhVCezVHNYwEbUZ4kvJ/vQke2fwIMtTr2zy2VvdRF7xXClh7zhnrj6FlZuYvUE+DCLWgRVNVZSwPyDNUOHsvOLoDVgGia5dG1O6PnABHIsC+DGsMS+pCXByBgLWOpAxCbzUnZciwigR0GivekVmSaFIQ2M9wAAd0Ab/4l15PgAWbgH8CBndIAeZVXabh61tMY9VpEFJ4raxDF8WdjLLZUChhq4XiDpsfMOp6K0LZ+c92SxdltebF/JzhOlC3/QHzFk/LmKuruADAA5bCaqq7Fw0XfV9/2NK9cy/zmIH+sXppdSUkWSCvgEQIijpTwq0kpbGBr1lbXGPwG8OwpeUo6QE4iozTYhNXs8nTO4Cd7KmKNhXjhPBl9wg/oRRPrrdV7cHPsHUP0xl7eYNg10Q1r+ZeBUMnlwM9K4KIBqvlu2DE1mrWEspxQb/Le2NIC/4QgnVgUkcr1DjgYvbNXnVdVapcEWobW88o3hUArZlJEaXjuFzBiUrx+k9MZbKkb2/ePSm8IRtdYz1wC+gIvbEo0aMt+dlj1HaHODj8QDfwCrpAk9LFvVi+ed+0Bfzfa9vMG2AoW45BJ7U/RKhis/FQlfNdfY4yZnUvJ7w0MN5WZDcMkoJ2G3JlymIad3ZBnmu47Gc4CCppI05B9WSEJiG060AJLeR90Jox+kH7jFRtQu+71wgK+VsagZdaboj5Y0ZObxVroYR69/AFarBeXMNgfs97Qr9uVI5nyt7q4jRRU/Z4KohH5R7NEOY1ylLw6VIIdj7hKo1OgYzazGeAFWS2htaJcghoGbRX2JOA5yW+0QOpVvxZ5djwNnZBm8u/+sha4wjCRE/iBFeJ+vIZuBjN+6Xwq8/tikOCgVZ5EX9AKTJP5xHLOgTK3GuHrfI41v+6JBjLxTzO6/6yBegRIM9IGD42/t1JeqvOIiMkazVVXBG883k8Ywfv9tYdnq/zSz4rchyYWItf7MbhAeLk1pTi+eP3mZnARefvm4RiDJaw9C7gzMES0ZwuQh5mD7S0KT7MH51yWNHqUAaniLyepbid9QOitNNN7s4naU1L5w8MCZapC3oyFrZ6+jzMG55LJ24FiYUNBPYB2liBSLsz3wKP54Mde2nQ44gDECHk/rW2PdfjbjVLyanX5PsEMeFV+x/AGptsXJQyPaoAN+7VtmAtVYkditlPvH4AFOJLIH3s3jjvoeCGKXpas3TpCariIeb1VyzYTUPcfbIaX87ujy4F3S3NYIo6UIhPhbZFOL/cZYT368R3rYSEUyN+b8ga/N2yY5EAsm5j2F9xhYnwR5f5TY5pm/pNdeXiSGRlCL0D5EmArlQMlcFWZ2zRgzjk+CvB1KNa7Z36xIye4+6oW6GFtUUZ1AuncXNdc1bbjQUTGGQ15apkCMDGQtDOjYvRBGQ3BH/bNPDucQAQdvZxr9kF4IDZ74XcbEBUyojj86RDa+mI5FRUdxd2TrsijQGOYS4zT9HRNH2WX5t7XPLZF2NDSDTn5mtZdIuObE/kVLBWPYJ85GYwKV1MmYiw+d0CGspUWTHxqrfNcqkGPtbh6Ee3RAqACXj1oN8Vcv1e9IGLZZSNp3Fg6V170jMs7FQ8I5u/cLnjMOG7NPGFp4+vmlZF/pkTMr4qTSKIujfm+3kIghPQhvp5aztph7nP2JfQD/t/qOW6jcTDG0sbXhu7VS6kawcghaZEPqZYhCTc+ia+96HmRfzRNcl/UDdsNO6cTN16WO/rH5aJ29gXj/OUvFaFh+MOe9vTWoqL6wAWl3bAqekLtG261Fd5vJv/8+SNILzinfzI0lz/gKk33Q0fBlepurHZGL/eX1VxaYR3uQs5JbIuM86pakSCo9UKTX3ulem8I1CmdmMauc0gK5cEQimQ5kDHQes3jAdmK8eGT2jfY/5Em/P+KVFIprMZ0QbIXWOusu8sXxIdHiIw34h/N8ARdrICGwg1SD+60RYklFfEpePtnEoSPP5QOlos9y2MbodULtECFIP/RoU0QJwxHDOXngh9R8EHa0wYYnDqM2OgGNCVieJEAK8WqhKJoiJE82TDsNKQRIOusU7RwwDTQmRSBlCaCI3islizEZXuWl4k4FlmeoOTYpUmlvmLyoz3N/ykguRkGL4V8m20GeHp0AfqmHJZcrWAcKudIZZEARZxNEsLjHMHs3/b3RK5ijXUxK8MDSnhYIhTL4Yu3L9ZskxA/d6FxxBGH/SpkiQmbEnaGeDDM/vR4SHTRfPLVcEtsG495TLDR/i0n906efvkuTsJsMDCgKktCOrHJLC2u6qgn2iJvtKKCRj0aEUniAgaM7G2sbe4+E0JkUslCtfMCosMQ5N2wNM47Tu7ZVNMSsWEBUqd3yoJnQm/8biDpSPbm9J1UCT8KpHBmeQFf9stGUKPB3ZdLGhr5qNCtGuv1ikJ2CL/GBGuKo1Rrv3YsXhQcUMlx9MjhE5LokslHUMYWt3IQ6KQ/2y+U3SdHFl4LVpSlg0Qr4LOLJnYg1FCzdfcV03LCz2tS8SRRJnd44AFPGvWobp1CYFJ6EKDBuIkKD1JuzeSvRSu4UYtrHzOXIwxZ4uxVCWvpLaQFRSoZbpXeMQOz7ODygDx9OKVkLydgeDBjzobZ51U1MhFhJJb+i47cP6MjxZhiiIEbHTS+hNGOCiJDaDVrEcQ9mCx3mmnMmMYDeomsDDuS8N2cXsQteR48K2utGMIEyb6dWQpW10+Ghv24zFJhnxnTEZY1sSxGKWTJdU9sYkYXJm8pS2V/x+iHQReDWKE3fVWVLb9OIs739srZvhN8qupoo2HJTv+N3CoWviQsOce/AU3s4Ee3pOxoCDvEDQFaGLZ8wc2ERTgEyJbA6Ct1ZTYfCaP1lEp2p+jnxiSDjwz86vfqGo4xnGQ3KAx7atQl7VmM3+PZBIyevE2GjxkD1H3cZy9u79TGFZt2xb3n3y+9KwobfMxG+q6OsD0wSR/LnhAbyv3WevQk0ZvIDZmVZs64n6mmfuZ3HEzpgcL7ENDzvS4tDl8BWaifMR07/97VqEyzYIlUgHsKPD3mvxA3TJ/FY2Zhj6RbPOz7PUKbYUxAPxiBRXkFzrjuiiX3bgDU4B2IfiRLJVyZ4+5oFnblzJ/iToK3dSXMehRVuWgOhSMX+E3u2ZDMbX3VZySvhGnjoqVgCBKZQg/oFFKNSkiVFwv6/bUkmCwvN1G8PpVOAhut7olbQwYdyzhtppnjGYzZrOvHdVXB8vQDxhcQYU98jOYlGZUsZ3HQTfq03hHj5zdS59VO/0mNQfqwvLo7IbwugTG9wmngA4dmFaV8KT8EmFOqWWlpPTHwCQP2+xmZBLlAwaWvHyq8slgA0ZSyV6z6wMVlWXxWVQ73Dj7vMgP4s/vx/B0extBD+k1JrMF4sentvUt2xPGk1w3B4CuDwCva88CDmax2NCsS/60q5RmCTnQqdJ7wVNhXRoqQyqHhWwU7fkbXUncAXHnvwNWsMFsQtr3VLoY7Yrqhe810D98r2tqz7FBtKlseykEcLLuQjT+yNQ+DClAVQdSWUPynEpXRzYTfoSiMkU0J9eXYEPmRfajLrrAGxg7prlr1MXnk5zhPWypZqDfJzfge44e7rK4kwJmoybGzbnnLPFNeUgvqjXHcrLPN0g3d0OXCe1Le72RSKcP3pDWBes1vABCMa+nya/xUWnpRPwp8UA6NZz2isPz24+AL8fkbIh0GWeV3bBUtX0ra8w6a1E8X+kDJVjmDGEWMKFEVopf5sFC+AvRbcEE7HZLev/mtMLb+2uIDgxySvV6DLKttjn+O+AOcWFeXX9H4t3OtZMY6jYK7NkImal2zQW5/2ed5ev8ExrI1JFq/rjjbCd7xhLeh5iaxiF/zE8waz16weN7rVhA5OjNRpr9PXNV8pJeyx97a3X1I+DYV0L0cJsHItHma4+8odt3mlVAm+eegvX3SrCT9k0jC3MMN8nJqxGtdLg6WF2L5WNsPWWrUhhRLTP+HLpBFipTaqZzXKd3rGJPvBtzhrcxwTK6jLP3WroNnEAun6B3POBPkWmx36aSOfTfVqikQFcj+xZ1AHq9NpWE1VoobfrqKjERqWoDEUIdKevhIuEvqEpfVsDtAAf2OHjK8cPxIf2zJ+kzma1Nte1XXCfwrEvVWIjNGC7EotewPHD1jGTW9Oyv4WWz7qUDcCsurie1wlyxniogIWjOyCvfzMU36lb6jTr61knR1h+DLhB4hUJcSn2VadoGcdSiy0Pm6mIHEe4mlvXa6Xj9Fgb4I1lXkEO61B60JzwGeYD96AHPE4s69K9gREcV2Lb7+ggfJJfyMz0SUjeKjw/z+9jajQ+EQSiM+4s3d6v9jBySfHa3jAurkr56RzOHQz1oETVJu1a2Epi1hGMkiAEAAAAAAAAAVaAN3t3zFWpuuNhXI3Er1+vwppO5f4XAK8rCma0YZKZnEpfDcha/C2MLTeTqXqiDBNgGVhCYjIMu9cAAKJh2ReIWmkDrsMdfYl3z3m9oPq6BOHqVnxGJU4v1bRcLJWbBUa1RRg5oTemt+F/3LhcbVkMZ4q+Y2g7PFSDifZ8LlK9VrMveuDj5bJKHf6nwQ2dHQ98T3rODRkfGS6FTMyJWHbOEZtMF1ITqEcTlmzuQcOVn42zUGmbeG8aIr78a4ibVeFG9a7hcPg7nujufQJwuR/dPkW92qJ9FhTyHAiyqcWAmTZ0vitWiQtmSVsf5zulbSS/JohPfZAppEsRZ22yFTLwEJvUwy2j2uxmfTAy97nPl1X/5gQg59G4/pztvI7dPP5cFNU9ZIoIeeVG0bTDOGk2r7/gXcvEQo4QMO/YbSlC2/zliZkz56nuPcqFbzcq3nYVEj4s5vKpgiIJ14wLbpVijN/todxwOlTX4Op7lZbqqj5LvRcF6T1VyQJWhZ31mFCk3EMjZZ+5TsE6Ri+CcVSvL8WR+bGKX16N+rOYb1cXI/J6ZPhUGX+Polz3znZyQRTEjmZ8+w5Hra6biygjyvW7Vy9tdMTQ2tcFGNKpShtpq/lkA+EzaGrgAAAADMqCAAAEl58//5XSuN1P//jYv5osj358DCJ+rca4qqYtMgiF37rCKTNeodrO7wZgXlB/OlOlTyjXVX/ywDiYM9zNatLM67jntQRbN19GOS7J7SxFgRTnM4MAAgP2Yk7UzgN6AerWcnJJhq02LZhIpDhF1vwExE15sWXG04z9vqoqxKTVxmzpLtX9PwABv/FYuTqngF2trXOtgrnVyWAHnzTgjRaH6lfihFALKX+ysdZu1pYK8gzF2dTdnxUizS8af8f1PHgjO2O394EIyUrr2Cb/ciwIgpuMbIvs5HBbXsyyEt1WW4ZTxi/5yNi5oR+TY65FBmopCyAp6/l7LggWZhF3IxeJwP0DQJVyE6/Z62q/036y511qjAabTBQlquNON90O00AAC9LcoDNsoFBHQdW01nn95m24jCAlDRZyrSw8e41xcoVhHfZeOu5R8iR4MZCllqoj0MgxbxyMC2iPqUdrp9fjnHbKaqC2HHhcXBHMkUfoIO+/G4v7s+aYMJWOuzlmZbqkJoeWHjMa2ws71DMq82BcIX8B8h97mGzns8bc96YabK90dIJqSfaSdOtUZZfwyB7UkdPA99UWj9U94zOZfoJo1xHRX88Am22hiiSYtQWrH+xoDMeRph4uwE6kT0qssXhdGqJ5MGdcn7RwZ8nTla+S2oa3Dlfs0eQeZHq39pxIaINXBv1KXIOwu+InnoK15d6KFUkrTwCDyQBqpTRDbNsyRCQFMKKdYMY0H8C6DV/iX8FKLamvriKgFJAU8zMMSg8uHXTFZewbMrsLbJZH/M/YJcmW3ZtaC299ntkBDYOi4PEQAZtvgw5hWFGj+eYOut54MkQjP0gKcAfWoQWXEDgfcyiSQ997iW4HYFcpd1N+R3eQD733yg2yBI8j0g7lrecduWf8LK17OjwugJxnhnoSZSgmPCVK9TWhQk9S517adiKCvzTvH9qds5ZqnlpXCssn4jJLAPdeBo3xhv9vWRQv2nc8mAqG+7OxEWBVZcnRyM9ruUAa0UtHggioXWn36reHFJSbCWV21Aua5v4pmVGNNDlHqBtVYDo1lJ59P4xovBzTOT6DqeBDLfQLQedanBpUhqNAoqGCck4GljRxkcuMBMyB4vWkJ0xNetx1WEhavfWk5gGstWCuAc7izQ2AA5dPeC0pH0G5vPsXhwAX1UNgbjJEto1eKMqZSmIYvFoexFBDfMLIYO9Ui27JI1x0VxZFM7pIzY0odTAJmnbb2e+D++3HiykQ6fwUlQtEePIqNSBmXxSDVsikIGaYJXFPFq+sAgPR00Srqurpu8HK3XovcpnS/67452gRfT09dTHIqfP6FVSrF/uP7VZ502hILOUdr+92ktxmH9JCAlmr2dKyoJwEWga1eAS9Cwc0rgF1BWLIK0h6xNWUwcXago8bVfD+FW2Bx1TAJyZA5mFBJQJ+iIwNI6Ib7FzbgmAjXRseeU90dsslBaSNzH5dC6bBz9BhLRoMmE05JWLd4XrYHx8VdYYz8z0sBefvRMOdlwSUM22vj4JvtWguls+eRrKpQnM/pg88FPpoYGWJE7qlFBlSM0wiUWTKexzRDw8XLp4ql83m9Hn89hxuKMITNcClvt4TRiYuaTiBEVVHnTI38vBEPUYKPeQDjSDctMhiVLW7Qqs5K4hKi19COZ+AUhSW9n54E5MSucDCsocQFbkDwGmls+GZ6Fr2WW6oxjXE8bZVDs15FgmNaLAaQySXehG2In9dalMowHKCijpCnR8ZMT4ocowN0Qz4n+6sH2OlenNBGumX1E7JJcgVKtRV+PYMQn2bK0P7hmkuBGPmqKnPjeVsWbShqwC4SslRVZStbUhSvbbgQuH5kdsvrxtXYW9BfNSL53NpD06HWahtoYKUZyGHUvGqDLqxnSGpCWsNnzGIc0ADdpNFmKH8OmHUyHVa2Ss6yEePjO30cnLqw7e3w5EyRG4fX/ve2Z2J50AQFnIVfMUWaZlxiigJ5EV5phCoby2PdLw4zZT7yzM/c3FJ+Q/ZemovgsTCjZ/OYe/RFxolSFAVVkxgRcWfceqrNVBm63M5DC4ictRekyVW/wPNs7Wjmiii91y8oea5sC9e2tZJbENbNdxxyKFWgq0DeKgydSJwPfFXEPxENQegF/egOPUo5vdkYMLphyCPmbXWDuTjxDPFzQas0Gpe9UzYx7+RohaNVve70HH7XcqsDVF0iNFLFMr9Eke3QgPCChJUd0pqAd8fTLAwOfEu1PKQuiAUvtbj5YFGw2KcrEbEcVk7A4RqKPlEdUoFHMilNzOxW/7t4KQIFLMf1dphHP/AWtThzPZciWfCPiyYz94uq++y2quLGnF2Mb2iE3/O9a1cbqHadBuzPHI/aQnM+Gc4KvRZNcIfOEfz+hCcH4muL5Y1P3f55OWZVpq1FT2p/oSbCNBD1s99A+nwYkCxr5Kmx9pbpNSFW3hpO0i7F/9lFLyCoCvP1GEKgHkE5yn8kj8gy2nJA5rcsVnR1x7H0mkoMZ6xhudNJJ375/hXs8lIsC+jbDFtwvulZmfCOb7AhXmBO9QqelWsN9fXlJ2T5XGHDAw3896Wxjxq2NY+CLXYpw8+amQovc5c1vUeXx8ANGdrGlMZcpwXqEB4mBsy5Jb5BncmUMdBnv5nLmqMtnEVfT011NwpXUyGT6fVQPTIZEN0o1m5y0Ub40yiobSZ/W0m/7mc0eRKbo2t/XbvQeKeX/Vkb3P4mdFWMbgcRS+5YaE1n06zYHZR1LkdSH3laf/eYPPe6a14xR8YEu5LbdFlRbTRCK1qCyFjLp+R2szViHCath6Zz5atuoaT0ZlhrLWJ21m2AOIcRxGrYd9WZ1b+TSR+ZBhoSQeK7cCrzQLNZGM1VSHhs+vPDTgJJd2ksI3smBUJRY6QlOyOyVVyL334tZtTIRxU/r/AITKoNFLwrfEnISM+EqIGd2gZurDCIGNaFi88XxEndJLytHTyQ6+BX33OB1cOL3QDGq2YdG387ZkzWT2C/qiRh6AIjJ2wcNCTxhBkyL8+b/d0owYExaJ+AuaXDbG+oC9MKAxcyj20AhAuMXm1YWTotS2/bQdbYyxEOTvTPgfQp5hKhsaT/rm9GoqVXtZJF4R8D7CjZg/MfagfjsF1JDpZYwEHGXsqNwM+ICRKxR1VHCL2dyDQ1b96Vw5XCA+RtOvEWAyWh9FhGzBFe/O9YLaXhUf5OY6b9s37MSBJ/KfeOMDm0gmCiYomyIFFCfJBgkdG7I5GliBiuxkLJB0nfdotgiEgT826SHPXNiQm0JttkAvrNju6nNCdDkjyOiQN7wBDFk5GT9foy4PQuRPUtU1L2nSKFHWLj4+EDPxgyezGeZEp+/EPV57UiH2S6sXwE1h9RlJGJqclOJ52/hIdConadKFknth1FZ1gFaSD1Sg84jxrne4z7QmtFtWQBwT7mBDbfoShnwbcIh1wTE8q6S49NVpo0HewQ/moOLk8cSFuNFVbTNBYUXAqj3l8dJxEpdIZNDEa8sj0fhwFa1QxrUSzczGSM17RJBOwdXnTuPNc/JImcCPbxftX05nquHC7bgz+eOimCQuKMgYOnqGGrN+Uy23WWK0BIMpnVe7mpp5h08a1WK1UO0W8AAj5BxNLYl+/wPXi7o7uIdlc9nGX2gv/fazVn9C0wq4W9huiAzhBfLSG4KnGyDh09Yzu721AKNwJ/l1F75GgWEOb+2zerSm2DOeuAvWS85PAr0fjTD4YOvBu338cbIGA8T3wSjY/5pxZfkWFerTm+BbqvqU88ZPURxz+1jJbtUp5iSsHeAoMc0nEsVSXhwhgEU74kCi13a8mVyaFW06L938bJROE1iMAavf77NvZYobQ2dlCDXMm66gMsne84xEwYxgkIhb41Y+feiQb3yWi7JXsNDeRtHKblYTHYno+/AulUHGVFgk1frrJRDACHSj7RbS23ENjaeNx9rQE3ZNrCOYdMxcSBP261VPXmAMFcwuywrzRmgxH68wnLi/eydowelVCHy7cAJkH8g6rcizvdQaKxIOWJBkc/meZiSrCeIEapdSDRs0bUe5r958gGBaedQmWCnQuXzsQAc4cLcAXt5xXbXmuglnaErgZrBxHsRpe7/E1eyeVVhnug1eTcSB0feRP9e1ztBzz6ho9kuKdTADSFOzQrPXYzmMDBlJ23hQKdnEzEpHe0H/1vQwpx7fu4weQ4BMHbgjQrJIuQxqNNVFC4pHf5VhsFwMwuGfjLTYKHFUbwxhV92p0+xe3y8kgP76sD1590UqefzYj9d7c02Nl9QsDW4JUAkbYEWwBrGtesfvIL5TVVcwNkVLFOPAQDBteRmyNVlvXLl9pG4ediWeduYmDl0pDe8s7XFcc8c/Cwto/5asMTylDctpbl7aj9lAPw4zYlWhA1iGgi8smLuJOIJJ4mi3p3oquXAryIpDH+IpFzkS+cshaL3MpgPvrKspYdktzJ0WZFRemyOXjaXEBzv7DVWdIbjbP1DxWjrZXrn1Od9hxs+SF5Eep8cASYmOoFwD6+FsbnRKS1PS3TzbThIbJjuW6qfiJ14pCkqkkHy63Og9hI/vaY/S6OOxDAude/JLlssHVZR3uemB0w+3dnwvoShA18LbHq6qifhkbGFWo/hzuq+6yiAENvK1rnOZXoJi6Y6KmmbT8yu0wV3eqPKd6L10pqTlcR4ZIqYiC9QMI0cZJbQAJ8kJkAkO9Yj7w/wN9mBJX7+1b0aiY6S2MNCZHht1U0QZh6Rxsdw5BVXfZGLQQN/iFwpmGhi1MdSnQOTKSpLMO2cG450nvG/araFGfRAz6rbG2dkk8ZjTiRhWdqs6nr40RtLInnNolWeDPWfnHee3txhj9vSrxhldWma7R8TLQE/o1y+ZcPRqlNpZBRzAiLcBhLX7tn6QYc8ilHMGgDuQ8Ho88shj/evJU/t4AAIOEPSQ//2Pxye4J+AJ3DqjwQ+v+UG/386kGi/a9uKaiapRjJxaWyvrGkUv3/+vymbX/oiJ3Fk1t+/nRlLTiDtKoMtcFEThLZw/nZM8PfJpa0STuFKVkJRd3MKzuWboVUx+n25rxJ1x1M+kKe/v+xvTEFfk7XvaYwaC4ykVFfVHrpj9VJEanr8cNkqebTQ8oM1Z+DGmYGNh5VRmAY3pfsb5flJdd/VEM2I77eI9p8yPr7rjZEPE7HN7kj4K/oRN3ZftyCspd8gApcdIjWEsc3jLj+aWXT+7iHrMVPcsG3lYyPT230ybIYSvwQhwMY9qMJ8fe5RdD25MU4Lx/UW+4toTa2AqX17P+XCW3Uk5GpUbEu6sKbC2T5uLoDlanD+YD92avDJwnWMhxdw0/CoBs+hExDpM1Tbbn64dqIqpbNcLx6+fGa+4oqy24WdBFs3V/BcKU1EVnP9ByJFy4AHUNod1pWoITL5Ilup810K/aFZpFYTUv7/Z/4+Kl551D26ho8j69OtnC1EF8qrVgg75xwOHmn8WghcDXRlThlMBGufEsIBav+0GAwfbs35ucmJusxqcY4yqjng4LkKQ5hzLKEZkfmEjTB0Ubs5HTEp0PHDj4g7OgO1jM4rtDs+bHY3y4EzrMvuo9dFMLaU++kwN7XSlcV2WZZ9fh5qA0V9HnWzD4SIpNR8ogVdKKYdhEcmVlDFQpuCo9fh45HTiTVLgnUHGPDY6g1fcYF2x1SLvw5aiVT7QKHeXXnSh0djcg0wmb/j5RrugM3q7gJYQAV0NePpbgJzxCBYajBJ9k/OAa9qdVFSn6suLJVDzecwPkLuzhTlQ2Hp0OZTdg42jnyt5bJ/MQZetLwPqvbQC6i2Wyr5SQF9z3WqbGv+kCqveqi+JkJypt9ez/lwouGMeyByBCA+TwkZXR5lSEkLviP08Lgsde+BVXEZxXUlcrcYP9PwyXGJGfHPIf2fy56t4ErJAHEckE5UGoGHa03X94uPZ8/lOo40LOFoR+cVM90BG0G2ABCilWGuSHQAWXE4rJvPE4ATzAoz8nJDjKAE39s6cOxMvP1jPDqCAFo3xfnW+9DrgIA7A8j+hO4gFy3jXJhSTxg/cgrwzo2cTWjIH0zzK7RuX1/XNDpv54a/LRn3mcb2rz+sy5G6V3OIPVlOrVE87gjYdxrMqjYjsGh93GUGaCxzJIlk/PGfLgU8HDJVdt+t+0wWyYMprctkhRHwKe5XrCbMjAW4TMmNugIas8m/BUMx4KaBrB9QS5euo3qAO1/zQ6J1OTcie2C6NWjwbGPBbU+zNgQsRsHUF4DmDLVW0paicokW/BuBgnsD0a4mFVyhg6LBn5Hbu4HXMLiPhHQ4ToAHEyEI/rjCeNh/DSuHSmgtRf1VsuXEpyEcZGgGAQZkYXX5i38RPC6OaQ4BYOnAm2zt7/7WneGTskb+CyMWofZPj5LLTRfxt3n+tbpj2D9lOsRcNRd41GTM54mvIPDL6JnJ7sz2MqfBvnWn2LHBQju7E4al7gvD8dFj9Coi32BbE1vbnpldgtV5x5SgxpfHkyyl+TXtsJGmGezxOb3PQEfdgSo0FEq/HJP7PniZ7qQVqiRxskGlH6RGU+cF0/9kWAzX15EOO/AZDq+LSDpDz0RRCna4tQ3tFoUmGjkdrfKA0DvjJc2DWI6wkTuoR3eIHRSu45FBw+2uBNgAAPePYgblghbWEMpXcpN3WiM9rZSYPGKmnP0UL7fWYE4wgluEocdl/EEiOIgeP8Gf6CE2rvwvfjnWF4fIOHkIPf9yMnA8lm96wJH6/XrFpl8Fj0eSutDOfx8/gWj4/mM4tRddpX8Q4r//+QKoh4tcAL91H1GdvUlQF6azNBDLI3NKABvuAXQb4iSVeHUBTH0gOsGg63I0qdBqxyoxVR6AW/u/1lQq9aYDanr3iagcpCHoL1+9Fn49qSqpNBL+tBGC2W6whWTCWljs8Q3Iw/4D75DfwBO4Kpjtghg8b8T2eVO70uugOsPDpUJtQrnUKahHjfIl8XFW5wxrS/ReSTxU/RrDXpwOwC5knz/Bbi2Vb/GuYcdUR/HnJaQS8iuUE08x4rjCPz8nLXCJ3KgO4+CZvVKpjICQcf7KxBb5CgSpLE0OWk3/zllSHfat9ZFVcAtPUSJL3/zdkqsbiiZ8czwlw6de7iKvHyXBnp33jhAFZFmtcsOzTdTeHWZGjhHk+c0xSfLkFQBhqiAJitUTprWnrxZVjHPS032IMFiI38FmexBQhX5o7OtqxFpVPLN6kVOByUM1yNtgTjjk+bsom3ps76ko0W6WlvDPGCav3PamcN+iaVF32i5fwGjVK1IlgM5q2kJnbMcu6bsBHVjMUOoxXXkDJ6+vNjEXGMQh4SlF3KYxUox2azi5uIAwSFPKPHlrd2qjlNX8eo4x/wkoicKhrl8Y8JFhy/tSRSugrqk9l8m82TYAE4u+r3DdLYmQYgAycmWDpeo74p5kSS8r2EHz6ZDfSyVhRaS0cyyPG6PwQJM0/XfgrzDXZwstOMItHSbqlKDQM5Da+JZ8rWyJLTLFIDiAmhyazf7b79iCKaoNAnVYnU8kGuLfXWWV09ZYa5gLbiTz8u9fxI8+tNdL5M9m2kOwBPqiqEgD8cAc8urgfdOVEQzV6635Y4lPscQ63pquW7M6kJmJvADQACC6eGS4Qdk+Kd96QQQhbVUiRhS4Z0HWpUIRCwyVU/FIL+VesiYiADDNaPIVE/QpOoiZpcfrWcjV8XvNdBBfLb+9V6tPcS6gTN6d6Gx5bXlUlQiLEH5ZBLgOAK/It6+hqgszs+BocxwCn5qGs6rUdq4XPaQztxx0IscmrhJ5lFA2zZN+JkDsGFKKtR9rbIJ02nc4m3bs7PW8vnNW3s+Y+f+K3r98Vu/BXn94iqncDLby2oJgz6Bo+1NBzGvsX6gtD4+ecRDpb0f6gBcq/1OhEFYNw9GZTt4yMjyzDGSY45JjAUZrkAFvHsn6nNQdPr9QE0BlHdbPVZHp5mBkQ1Cm+Wq2VusX1FtT27pdvUqUd7CONor+57KF8aRn+rkvu8EPZo9Q67RvT351+E3Aa7AGihhPQqV7/sooPElhu/uVb5rycClFipfvHUyDSAX94/M2Q6T+NpqPCJBKwCqZsHR0LqrwMP3NjkeGOny7u2fTOILgHf565cbnqXDoh2wJFOE1b2IgB9jqRpiO1GQ4Dyk+lg9Ankql0GkugSyFfSgtcAidT0wSoi8pSzAVarXFNu75S1zjmSJqyaAN8tw49+CxlfUCzqLCI9Kcji7l+/Yk0QD1renqACq/nl6uITcjbX+hMWXMK5s9mG8Xo/3GlALyHldAHOnlQuZApdFdxO38cDUioSNQklWrth2aG7QNtnirV4WcI7DrXnczzR7OFfms1kd0YsSMTI4B/HwIfcwWca+z9qzyNV8wrW+3EtSWTGuOOYg3gTNjy2kFbi3czLsqZmAotXEMILXzDtd0UEEv/pBvlD9uynNY83QiIwm3MN04E8o9QjKE32Bms3Z/lCqhEjOHBH7D1oleEXD2+6obS4aKXI1cT0uZDhU5SrokJQRfkOZWKy59aw6+dbLq7Y3zhq4crlmV1fJzPMRPoJ/kt1XHFYFwtap2t2Uf1sJTBlI5GV4p4b2WKR/RasgPz5QR9NAr1e8UoTpTvn5TfpJ3+p79E1kQxMQsLCS2J+6YdHC4BxUcm7LiiHYsshLi7VHWRUgw0ZuXsRrufxE+fDxBn1I8RGx9a9HcTalKBDsgvnnBCjzwgkD/hUZ5oXmwaWUHvcuwfmLuvCIK36bol+m1/US1+Aqa+3rcTBGKu4CNiEAK4JC4wWChb8y7F0sF/HivRxPpaQy0nfphYdtAor0mCHDBj3Bk1naHcWlf+q3A4TyCaaE3ESZplfwokl/T0prr1RnWL6cHZP5htnWJks1QE+9lHKZjBz4vWrwuUy5a49pge1WIswHYpMKOyh+TvwnTO9m8hNfnCpoQZKkUTDnboI7ppp/QMIZ73ib78Iy41PLzJ+u6EkR7cVaYvhyPktk4nGvQyL+AGxS59FUWggg1Dm5hsxgb6OhZY0clHFhwA+snVL0snp12uur+tzoTZ+R+5cWZHSVDpRWMyMdM419lA/Iw4DmtVbVMccnMnVLbw8MjyVDHixWX37dIMVs9JtSfrv/aEi4Tzak0MRQn5+nOItPHhWOwM3prxVCQBqJ7bWTe+70gw+tOIFG6e7T9nGxgBbeB+MtJZjN3TsrIJT7kGctHH44fHm1oznnDgN6U8KUHnRHXGmg/8lVsL4wv7jTKs/MqyR0Tt9xhK0xkIXyHi3t+vHHK1jB8g3JODSR8dc5Hc5EhYhQ3z/S4/aXZprRpHpsqikFq82YqB10gmX3up4aDm+jMtEl1mVpXEzI1LzO0dv/OLCeZLw3N8ZWSh8zX/igTqDPddOjIn1cT8ZP8Hkn3HG4R8BWObSJV/RhIEAzn4YMtR8ZyJbU/B1fnM6fxm6/VftSFuYEaMAbIimVpDYkxHPeoXQM1jn+1yKgmzxeb7X5ggIbW3zZ4KgErDPCncGWS8+0hJa1nq34sKqXde0u2ZBuqxgU1pWq25FgJNF1FhKEpE6/LNd6pmdBi1igqMl7h5imu/cd73u1GsIWZLR1OYRLqzBu6qjbyC3fZux9WqEkz5SSRzvOkRkYsiI2zTwGYjLRF7i650gLux71xUwFcz4gWhSxnpLnpl+E0gOg30xPoqmsWxJtW/CjOZ5wSjF/lY+cSFJMYsw8Uf5L9FWCvNOubcaME1t9bAGTGUMV833UlCzHAAhTpsi2h6GSwy2H63rtO0ojU0cGJJwouBHj4bIz106RiZ3V8VH80L5w/lZQIEElMsOlNpBxlhYVQN50sX2ULVROAVSSA4puwnfu7IaF4O/qa9zWpECQGmq7RqfMuDrWYVW8hTQajpi7VeoXactCIsYHG8GY3zXsmEU6X3dZxIAUMZp2OR39RRpU83trpaGAO0mf6T5nKgEZhWcM6glRWJelofNaRnWKMjEIx0+vfXOLCuTEn3+t1S9joLFJHopYTuCPaitxIdUtE5dAXMPqqpFFSUm1yKhsTsV/+25kRVSqvszb+O1Oh/D5hDi7w1GjagVPtPGapu4f1UATR5rK4Kv1CFCUIQFRUf3Hcxenzdwmewg6djZSoDdpTXp2WyjPvaCc8urD+YFMUoE+Mo1sy5b7DGMXEj0X5683nxl8j/YEKsXdxmChe2sHPwAEXjueMj0jySQbW3JiU33KL6gIgKXibt2ff3tG+9oAJYCH4Y6RRIDjLzQKc4sm0UmAd0dJppFvjo4iLFCkVj3/v5Lmcx34vBge2er3HNFdKUmHpyJDzNH5GS9gMFVaNuGmg1PlrME8R+sIfNszQwt2yHvIOY7aIhthpcRp5QdX9Og7i0jrBQRSNStC4bUVaROGjLf+zlxJz6Xkm3s9DFsFWhAVMwSvD3hcy5o1PNuE+cq9rQxKNSkzPp3TVxtmNR3tx2D5SZcdWOMY97YLPuPgKiXvoD6oAcDzi+PvV3wQ5Lc/9KkR0FvyKpOrIJ8pC60z7JGST/56KJOfSjbc/vt1BxNZA4dsYsKv4kxKxwHhgg9QPjudsOz8hKEJscCWwMo9BroPfw1CwZ4ylRFdA1MOrxnmjW+cA5V3MVlYoAaUBW3H5kAMqUGqZbdQ/Pbt1TotViqo2veqDndkYQ4CKKtygsfdTMuQBE4EC0Bqs2z7DSRpZVTu0TusbdI9VMJTAJesJfbJR5aGclLPMk/t3couwTwAY2RUDBu5wbYn4ENjObEu0apBW8nq0sMsLX89rlX11TxJ4V1oYWDpY5vCtNJF2UPbd/nsplxh6NBkAEXfEn8DM9bcmUv3ANMHUv7ZyRmhJMbgByqABQVobOS1gxlQjsBiRaonOQxQwOcwnItZuDzfc+mCbIn5qI37tb9yOEzy3PPz02dg7WKSVcycfdOKuvqvSMF7Ta9AMAAAAvhgAAAAWgf5ddd2jOBMmxuRob62LgZTgKVAAADrXXAAAGcSKSvV1TLs+Yhoxk6I8H8Ffn8XM56G1viNmgYZPLhg07zBfx//OOdsbFwc7GasLtYEotIClnanYQFqrouPPskv9jDfHiRVVLWQ/FILU2Y3eWbWD3lIXwEzGRJSuGUPlcbPOgaf23KE/6reVfilNsAHdfhriIpko8QTBmiI4qpnHBeAw1qGa+jit3dUbhqst63dk7dQHFSC0V1AOVJyH/yoPtG1z7cOYsDAMEF14+hkzTxy5XQPhQ2vnbbCtAGYb2Q3JRk/Ks2eA0aSXKABr5N1ltRMNaEClJzOHhRfiXuYF6+vjzTWU9Fv/NsehDjwcpYvMzZp8GlqF2o3yf+jy8vB9w7m+BvIfQFeHlVE9aJCVoOOz/LYeRhCXXSEoRlPLqmNLqTKw3lhIIVIzrEowATazfj6dfYDTGe0nNXa6wHVBtAJKIoqQsTXAkBQpWc4tbMXIm3EULkX8M6t+sMrdwwokR9uqSzwB+xORPArnCZDQi3KDahkeJs0Xof7TelS7d4K1vMtKedK2lCaMWPelnss5hCZG82A/ypW0sihVP+OJkj3+dN31OQqRzV+bfPqFvwrVyqEBu2HivVJJW06JDEyoF4/UOmxJOQMIfQ0ZDnGtAtQT+y+bllP9qfF1QDWKhhThA3lULccifkXEaogu4jZ45GtX1+k/rpgvpY0fR41WZnnT+2dXl9mHY2cJ72GeGrr+EObUoisqvXKkeyUBSjOWBsU/42mdxP35utlRh47oaboAALgLMEXMs2Ux2EiBcbrt8nW254/AlfnZM4/R+rudEAdlOOvdRmxompKfxruQVxqiMIdMAQ48+N8GJSZpR//XSpn+VrZq6Lc5rnknZpgXmVu78dzPSAio0Y8bcLjVwIjisD9n5KUnYppqypdJAUB6l/aDggbY3ReHsgGLQKUGAlUzJmUYX4bMAnBSpf2OfWnDumcJ+r7I5RsfYXh91dVfeFRIal0ZMLY5zmeJYcKuWoQ93RDZSTQgI6kj2fkWCYj2yfSri1q8fuANvVtwsGMu0oJebXq9DIGTJD5wRv8OQ0SUvv+8CPaS7Bdv34IK4MeScoqdA/CmOgl63xF9HDJMXaYTsOCc4O6GAxyfhMrxfBfMdxiaqh8sfirdJQaDcDtWJzhE1GEHsFH2GPmFtxc1gyRsHbnCqkqFkgDhsZ3GNAAIYhW/rSir/mXMchFrCLucv36c42w54PLuXCWqEWEiPQs2cByZMjpTlfebN+Hb1lxyc+G+FKxY9aFkMwO/fHts9Q5CspVxIv8jqQr8Rf/fRp0E474QTgibNZYtefxkKxWWgzcMnuYfdGf2TcCtFQKeukAaQwIylM4LKjkMBkmhhk/whDBnVdZL6PSsXPztsW1HvXdtV8H5oG+X89QkJIFN7lESbmdgve5J068GG7Z4XCLS5oUGgVjtvp59PrYIX9NWrefqXq7oVofiF1HYZs3Fuy44FIG6scleXRvOKSuKBLroXjJx6c2Go38lXQAPTTjbCD8Vzkr1PBR/GnA+OlhZQlN4Chh9mL8EVb7PcVvCD4arBQRTswiQn7hNhKaIVMlZdIBZKUh28czSBPcbhr310rseBAsF5z3E/MLJalIkIrgli9KszIMQTXeGng1k/IbLCya3KLfB0vM3fPfKYzF+8mfrdEoZKeF55H4VzCll3rN3oHSusqPf94K89DvWLS9ACDNh1I/jEGXN+rPHGYHFUCuzuyT1xRw+DK3Fh8Q/1g1KfiwLf/zkd9gUDXmMIRKJh+0qcwpVHWonJxZwbysOQnOKblWR2hBzwCxml/qQ+PRcRcscUBa5c1sg5VvfBnlCDhsqZlqlReZMJ+XJBpc+6M0Zv2VAaSPf5pcNKPw8fsCmWefIvbcOJPtgNkSixtqjuimYprTMCyrfxPrrBvmm1he21yAkvCLwvdzt68CHxiExgHUBNhDOjuUxHFPnkK+qiVuBXZyTif7QqGNbmwpTRDMWtAzeCnDRCfbDMH/QCBUp97v9UVQITjejPQ98xXPtQ56qqxNkz31VeGWyEiqj8/QNqxO20hPTYu72jjVjWG/vic074W1ShQVCtnFY+qLW/gIi70H7IoOS59HHVzg3D4G7Jltteoj5vQcjEkXRAvSVzxyub86FiJ0HqunSz60mA5WfK98GwcOtkMvHvX18GeS6tmorXS9pbnTOH0fi3LZnRhszUem6KM7hVN1yI3CZu8l+P4kzOF0p/6+TMAqg7uXt+QIJw/CUkkCFgDrVX60qY+ktVc5q98RZpAkxSvvlLmsX95Eba1lcyt0oyx2bxm2IvF06SDZzMCSqnctNiHsgc0vUX0JAshmuXl29pagxO+bcIRZqpIBrU7e7BTyWCLyXWClRPZMTK9cpdVgqpv3iFeSqcdv3EdOd4fcVGGfvM/iCI8JrzzgnhlGJxBx/9fhRS69/Djq8dYxeXhN5jlKZbb9zWe0Wjov/bq92CrzaXxNPco/Je+R2nOIRVEWgBU/PCjK/JjiYSKntpi9dL/DEClTKM9KA51uvwD13jCSYBGJwasbllG6yFcdLuce+biq5/+5ZYy9HrJ4SuaVvBIj9Qbe3HiH11MEwAGfKcpv4lcg+PkIqG3862p2PHt+wqmzodXdProP7yUIjbT6crLSom2NJOwItbrfDDpDomFB+aOQB4OFmMe+nuIKoMKlBzHcq3nD/pruA9qHSMG6GsVLr7wrTNHv35MtmSV6g4W4sC4fUBYpWSPYy3GGKFd2ko/xfio3XE6qTP8umYXG9X/tvbKcRj5br6Kw6QaSMDVwNbNMgEZ/wCQqqeb6LsHwkhnn5e6NZXmn5YnrzzEGt5HwltC0UDqaP2NZya0dWtotBxioUqBxkmDSksxT8FGmluqIFFX9o/v6IFl+QrDZpBv75PnRwOnBQ4UbXZ8jKdI/z6vmGPBRfsHGLkZdLHDmyPo2jqIMrqdwDUpCJVcNyaSg517TMpb7/GSumlPcNSSkVhKSpHZ+Xt6iqkUmJ9U8fX9FvkrELt2SiqfAfJ0ra3opaS+6bVV5pBaeSpmnV7H1BXe5OaFWrkfYwN8kjzMjMObeByZLnvw4q7JDyUAsUF3vnWIHPlGPyyLYF7O2i3o/BTgKT0bIeswlVH6dhCR3f1Pp+E30v7uuAvGGFiuUPmvXt4ByCXTQkNfoSXWws2h7U9SDarIjRWa2CR4BIaZeVyCf1GXIhk5fcUw6CJo/z2WbyF2olR9ULLkKeNKgyTHL+GHEkb/ZR66MPoMasp/dBzEzDFzLbC08byY6EjdKzuRTanvk0zTRAPcy3jF41qCeYKbVgE4iUSMTcivkSUa1S0v53rLVeM1HIIBYj2iUk69wJzV8PtpcOKymzkiVYuQ/28o8uev2jFH+DvvZv7NhP+T79tC1/W0wwMl7XshQn4BODhMwOhAuGrfIGJXoMZMAhojpIqwtqwLL1phQb7g7uPJKDqPz5e7QG2Rah8abaEwAnDYPp8IwRHpQPncVgS32K0vb8IpMGzIlvV1QGB0f1cUoP4U51Ag+z/G60V6Shd4mi+oa9paeJFzheUEnWTULxYEf6Zjkz6FJJZsPFEvcgL5GT6RVfhrK5s7133dS2cWla8xe731/z4RiBNpfkrkQmYrkty+tOv47N1/vQTUHa0cYA1WDqW4kN6lBpxtboT7NAYegkrO3Ngbm/zM+GiApOKvKxc6uvzW5ntct8slG9r7SrBsmACpiOpo0q1BvWF6YHXcSjGnsFa+NNXLIzfsAxOrHoCnDrbTaqOZsjVHqjbfP0ca646o/SubOAqmHDCWDnjgv76akqmGHF3pMgo+W1Wl08lPO8b3Zzqj6rgR/Jf64qX0uqE0Pz7BnnX67e8MJhhdXbbjmaAoAUlagxsqfqHyk8Zu8Yd8K4ICr9du02AUfA0oRtj+SFlZ0wEt8g/cUYApFsyucVCORFZEpGcV5RtLdcTta6ZIHkiD/PXylHqwuFt+4tIi0kW/65pVNoPfKeKczIaa6ev1swxEJK6O0uukehqH93PUd3h6fmhUjoH5zS9H+KYUvfDUjXgVmQvQViUhcultTNT+Dli2acgvd7gFEODz/yarrQqd/2kKJfVOuqyHqB/rsnjD3K+A0HU3mgkIwvj8nR2aEbGVFd7xa9y+WliETFoXrmvR/eWcMUvOHJGSY7Az8TIE9zcs6knjAahMnDdCOCZb4OHa9H/xTQGLGid6E98lZT7vUZ2jOgEEDlPWW4rhwdg7NhHa7D58Q+dhkxDNA1CR7yZ6rrOajhC5cdQaCnFUpQSnvI9yDkqJ6CBuxRnHFQ1xOo2Cw2fo3hgddydy3BwGuFtDO6AI7hPQJZ/wTiCGkC7XeRZgrWKWi1x+BgankOqdBC1qO8I3d9ay3qlM5n5Q5epsLFzE+9AfC2osxO/oQo0wHUdo/V3HsXwAEwRvjwuUeBaXmgP3RK+ULJVxfmGgXNWk8hcI7+8WmrJkOHo+AFKk8BjKDz5E37ghalXBwAQT89zTIq4FKtauwsk8/TGtnu+ewT35ANJW0hyeJGlde+eAONIY4XglUFGG1muURPNxDHnQH4wA1qFOwida28v1v55JucrDq3UEzTGk0iIT8NcehRfqE5xP9OemZA8NOJXtpEkBJ4+IjegDPlQHIctB1bdFf3iHZz1VyO0UtdlR9JEAbrgHDAYOmwogXexh4vuZVtsi73u9LT2a/bQY0yabYy8Xq9yYrDWKzJuifhkHGqODAnI39H9yk54HUv21oQnAAml+Hj4z2/NacLkaVa+wb2vj3THExtgvcVLSSb96qAPtpHZny9HBdO5hNORR9KHX/73YQixfkIdEqcxoJcGlllF6G4oFThcmd3CjlxB1LPSjRetL+Cj8MXGDm+tgPR9dLtxrZEpt2CIirnkJKk+iuWwkL7GC84RRTrCZie2o3R747vDG3K+NZANLvbwwzKhR8CRgYPiDOJKPM1zFtBe8C38QP05oRTujsSJrUMCF6PeF+9VXmJSrLJt6VQYgAAAAAAAAAAAABg5Lu92Fj3JN2oGWtMUgcBj1pFMt5yVCiv3Bw0sZF6Bi8L9MPeWZSE5v3VxShRB7OnWu2oDUf1DSKO1Dx360HXsReIKTFzjuDDelDYpd1RTcmeroaqjCjRdn+NcA5KnZl6fVybw0/qBRX/hUcgSsSsV3sZsdES4HS4VNeVTHKkiyYqHC71UHX3CBi+rwM81EftISdjVBOvxLEoakgrRA0uj/avQyxIQelEQOKlwEWyAG4+0ZwWCTp3rFsdoL5oDcssmnyMEQd0Vh1/7t+FF0fTGC6CxWwBGXbOB8hrqk4ZNzDsuln4po+9sWsjYHglBc3d6a5TieWb9XvE/zusDG4I9rLA/cjBptPnV2k42+u6rtzzHWswSBRhrvVbvQtRZnOdSbmOml9ecOna11hZOXovTjw3XbbgB71h/o2cTXh0yCVFRj2yxdrSpGhGy99XgmPIJ9dIK8LA54mJd0j/ohwWD/6Q1MCmSn255zswazT2mYg07+6+iPJinrGCt1c8gc9JoUwX4XHz98YnODjlHgweZ2J9dudBUEhmqSXhevt/HNHw1B/TTUT2GBoRAlZ9LdepIld/ujva96HgDL+y5jyfsu8BEnLBXUEblT45sgAAAAAErYw3EAAADCIzEzoF75x2qU2MV58S3I3qozZzmzUs+bLCE7algovkH4Dt8ICZMj9HDvScvcfKx2J33m+T6gy3e6GnaD6T/6j3HN69EpZAJvaq9kohMtLvP8q6gDJwWmKvvTysfTKbq8rsvjvb6zdM9jvNG6uH25sLasjWfd4FEa4YKEdmG6HffkqAyM18LzAdQ2l1dcohN3HlANwBbBFUNSCzVuOUPQQrAWY3TesVkzcMyGAAD8qe55Ia5QDLwGwhdITu3M+p/CcR9Az3VKMTXibL3KdhfUl94KlMLF4CSdMN+vWrKqwxoD8B8jrjFNhmX1LP9X+nNfAfarU6uk385jZHDkefElneN13jWnUsypL3vDx87ZnaxDZJbBJe1kyXLTNA9wnP0y/vpDegfwrGSxBfW5siR4R9ayqvDn0RwQt+OlvDlrjmWblTgj8k23DlnH/n+sQD4URGhDmki5jAhtbFYw0osRcn8jfHvL3kPAPkDhy/DRSB6LkfdNH7hIli1imiU4sr35LXVy8CzPQ4l11odeVKlhCMCxrzw9Q929bAZUEocgR35y4L3TgCkjHS5UUFW7x8F9hea6SBW6xNlFd/bjmil/o2QAUvFXUa3W2cXpdMM9kRNGE3gosip/5vT5hjn9QuXQKJAeS++MtFVcvNbjZ/JCz6ctPpX3NXjJ1kKQ8JA6h7ZKE0vwsuz+3l5A/kCnWLavKW0ljMggADpLlLNH915az7ZwYrTvT+4XjF19ggswBYz2OL+S+lyiFIZxg/2gKAlig2bYRkM9ZKdQO0jA04XsvSXwcY/0ZOn2iNlnkrJEPPklbp9o6FMRIMlOE6bG0N8tURg4Vz0sC08TM4M2owQc8tqwVurrff/mFb/gbf7V/dOqOqmkF0zbrlSC+eIyDyL9IoEyIZiXDe/H+cac8KAaeQq81pIknemO6hmYs/FPhN/oxuCvKy4opNMKTwBWnb/mrPvLh7bl/8wwA4G01f8/44j+dSYf2i87v+ahqpx7vXeZFzbwDNw6AJ/NqUKuVNpV3tInKYbmsxCnTX615G/ga73BCf8YEAyTndCELXaOpueeL+fk7AECOZyHq9ydmeAvZAmSZZDYjLX9Gbp+j5kJlsF5+jQH8EYHo5+7yC8Dp6zt73Cov080L3hQmlZyIibh3EfqXTyGEVsQgb4ZM6OCq4YH62YDHO0CrwawJlYzDkbRPguHK3mQd3oQpOfEJbgv1RTW4t9S+D63TRLu0mXS5U4kGl0X21S4WMljar2gmSIjsSX3y23elY6vNAm1LewXzVrMEHJL0yPFiawmf71JdgGwTe477ouve+JueRTlAv5rpoKoqF0Q0JSMpDlYjrWSuODi0msYc99IJ3OM6EVJAg1x/49nnouJMVGvhj7WR3mGR/xoL8jIVQwMwTXILuEZB7zclVjOR06DyZdA7jqVb6YJGuNNoPzrHRiOZU7T1q0J7bsm4aurfraxxTvcJ031ItDj72Celo+j85CnJ2pqCOGZfhKX5zCJLf+JzUGRxwtTYJ87JiPMNDRMyun7v5EdTsJdLQIVbTGZzYQMmBDdyp3QXC9MOoNhAJjDhKsNb2dmsnPZSQ15oKXWknYYw4zzOfgGyzMaRCUO5OhprMMMlTQTLG/pvNljQwjoIekICR8/g2ln3OamWqLI8HCUEg0EeCr0Sbb/+QMBY3h3nFAXJW9FC7Dgfd/vAtdtpTNOXtjhw197YnCTDDMRd2zDrcQUB+rgIVl4wZNyW/S1SrVnorBEFwOrMjvxmGEKWwFehThQq2tmOvhoheljTNF5jw59xLpYIoLnm+XWOL4PU9zfSV78bSoq+fig9l62gH5NQh7HFl43ZOUIVCrO0Y0q1y6Tx9Yk5tergnerv4goPepwaRY8/IXzJ1aujWwaDt9zxkMcRdBvGLKhp2L09w24+ndv7sEbIdRve6J+y8IyO14qI8WtrmHZAJYsz/zJUoiyrywWmi8NqX8z4eECFxacWt/IEQPzMccoAInSi/0KnACvddTks27E+PmhvnEMjrUUce1KckNZmJknoFGC5lnIuygMQAQN4ivwfzYMDPwC1KT82n5gMPUcnl34mW6e6eJTKRw0M5dI1wxSKCn5PkRYx9v0N/WlU1PFFTHTFVl2O9eyyLbVKK9tGFiCp7fg9swcChZU+IPWdbzFDLAKLVKZ7dm6v9pausWke1WeVk7QiZLNZiXJz25crrOKFVV4+JjwkxCFjvywFULRJCDOOHGE4JwCUSr4o6127pYBRG/06+bkmJMQzMKJXwRN9xf3eUncemeEgi7dC8eXchgs0Oc1RqZ0GbqvRmXQyLAdytx1y3OmFoSSDQec7EQDAtrcqb8RM1dA9X659kjMDM+MhaO33zcRmaWozOqxVi6NK2WS6/UEILZbfINBJ+ytEotuVt1v5uVbonVZXKr2EEDmaJOISEmJMUNzGAusYZT1Xe35olt1PUUWh9r3sRQdtdMSjJgPbqi6XFakQHDpbqKl/sZ2AMgD61isOl1GGMMsqDrRtzC6uVnNcWXb0Vk07SCxE+LWGM6tB0SL5RhdOBgB0nQiehwZKvA8ixIC3H05JEHEmXXPyU/A14rdqsan78nJOdKbyMu8LbXfjnPSvsqKw1GKhIm4LZFWWrmFqgY9U9EImAnN6DC+5hmhzLxtzDed63dZ+8OwmviM+XJPwl94GMyvCUaVHqUf4WdhAJWWOUyiEhD1ZY5D4E3NCiBEJzAcr1LmCkRrm7hayU0BEu/HuakIofgPjhdUeu1RPTrmdxFy69JCBaGljWhD8bjDx54lddQmsZBI1v4qS8KwdwyTANnnkw+xQLnbb+onxj7keyzN/k8Ecq7RvDKvviOyEVVASsNHmh3bH8KKWdzClolb0hIs9PHxYYYP5aD/WvFkcasV6N57k5zUS5DXOCDLSAVW1PTVYSjB8oLjKpYjCpXu1g3012IDYpV1DU6fhV9kehKhWqjEFiuZTX2qxLALqtwuAWnr3LZCu3brgElbyQDgLYu9Rx5pbCFEOXYFqAIqn3FY0Yqqobit9aKq9vzhUK+pd5C2Qauu6RIdc6HMvOhxI9LNivUnyFgHLlLEjA3rx2Vr6KA0DaG3oC+aPLC+uW3wXSz60ZzUDdvm6Fg7SU5j/z7QLzqrf+udm9wErBTzaAKCH5lMKqEPDkRINmcsavwFLz41Gx1PDVmRy54f40uHwtUNVkldqY6T9R8Obzn4/5JU/hOxSeHbqApM9YI454DMuG+JKtL4NF0g7tPcPNrI8/Mdru0vdfUfON3rLnHc4VgD5Ei2eI8l0U9pByw9BmXhSbn8NWH8yWP1CdYsbaIBQkfUWe9K4U9lgzJiR3a33O8vOTxl58SDQ6wzyq6KNE6N94U68ynZ9RpS90hhkMWsqKzaP+Z/d+kmmteJqbw+VRM4k7nhZVODG3QGt2oax0Wjm7HXGDJgRDDah63F8LOZYfGYab6sPn0rGGdv59GMMNlveMlmGOoUPgsvXJVm1e/yodozTd8XS6MZqeMrzAjkz7Io7yGcd6SiAdURbt7pLy2G8IW2/4X0443ZXUTPQjcf+vSaCl9O7YYj8yx4Ogm9uIk9/Xc2Q8zHZxa73oHEVXOYu8YGQXucUXZzUXc7GxMTTWjG+97kjkKTyYQsYXn2QH+Y3+Ada5HGYvZlSE0Bj4iPrNo14Tiztf6wragkBWK8cdqLIGPeeJp5RaOriN7BqtnQQn1mn4hQhfwRCE8s0cQsqUpc9sVNJwcZYHWD1W5HKpn6sEhUEYNsc42/6VCcYUN0MIJgeuXvmpNdXUvZJNuEiL6vLEjC7KB+Bvt3ajGDegywgAckXB5IdsbC0GAvoh4rKSP92rLZhIa3lA3fX9QMqk9JSKrgNNcTIX6Ir+pdb5PziMOC+U70c/dIeSNkaeuN4agMqOgCrGX0WSpLxlWo+nYuTZ3VkdzHdzXbwH+JMI3a0wLNrwDPu0cVybiBih8QmO8UiLm3QCo8jSwjFjVJqYJHxFsA0wx97gsO70osLaF9HFKPlz9i1g6zXru8WYtLZHuycQ/40ckevAjqwMromACz6opEIIraivzJrs8RMyldHF6bd4EQbDpomDDOqS9G1/5gQZXT+1Z/MpXL1XszFDBDVgf4mOf8r5+X/t3R9j0tCWwtpCcJQAKUk30Qsi/pkg60cBA7b6jMZ+j+yQu1uCLJ8sBttjw2pyQsoAFSREI59RUx62Qw0BYFSwBe7wrM0MRWkdL9AFksRWriHpS6Y+5T6HUfu/zUeX2iziCAZFmf06z7nBizHUZevxv+n0KUg9zoxOAyuK/VYHuup2Mo6qGAixQ1BoTnHXgeNZsanygewFvBhnkCzm4BislpVvOH+IQUcVdRPVkdTGlEnSJ1ZiBTx6pLro/vPDJgS2ujryiMpFx2oV6ijZo2v4IXsEj5UTRxeV+e+H8Bdjxiyc22ZzSM2G7Jtm3BR0ZzXfZHJw1AT+iATis0BiVbmX1N8fqsqbiT6dgaqT4lyEzH1ZlNirLxjUTEJ17xX5FXZSUHW/WkZNI7+z2d1tclfIKlbqeAsOVsFaOAuPxymix3qmWGCc6kZUrFqZTILUGm7w41WCMtLbRE/8pKWNk0e8NvRGdyOt/hruKEWGE97J6b0W9SLNwldCHONadZwHbW5KqMI8A8ZyvtmdSBLwPh23lwCk8o9Xi4zuXmCTU+fcii03Bwc5wJrQnTY4g3TR0n+50B49bosOhbXBz9MjYhn9duG8rU3WrQbaxSP5KYvNB7UnKhxslWG9r8am8KbGkxidHUyE6uXsZUztCz6ZQ32lLHc29IzcqFmrnUycMmW8Ce1v8IKal1oSC6XrnlYz/eN1M0nrXf5Bhp4QcitSd4YtGCXH8RA/jSZXEC6e0DPPPAxCcF6SKC7jJIPTWZ6RX6w/uV1L8VwRnsPfGOY1g2HZlIuP2IQN+4P2wGkAyUP+/6EvUSu4xrAxC7xkw7HU6t0pstickeYzl46fWfxE1tnRLyvlxxfVoWt3Hg51TGx9rfa+ObONml5XgpZd0vLw2X86Crd6pdnKvciT+IytmrUmwLgbgusar47IdNDYEE+HHqkONwigyA37+x7Kcf2+avCuhfo99a02jwi+I3+KnV6FyBsg0jizmLbqFT+0I3+A2a/pk4FunOZejM45FpNzZuiZm0FGUYEfQdhDdRiMlpO842oyZRzIeJZ0H74FhFbZJ8LBjJhbWiqOa/VgkJB+0BCR+M0aLjLeAHMgm5FWHpQppns2mSyI0as6iyPpT9pljX+fg4CfVypL32IF3gI0aTKOz0djIpN5yu39PAjTh15UlQy0+Ynan/4MM4K786Y3Hiwr0zS8JwvygvaJUPBdqqQsFvQCnPYPWRfubQUQlyWYBxcYYW/0PgVMoEKWFGqEvfZVKX9FYcfkQEaf3ZOv4IcRcVxT1gVBy/QPSSEpTZSCBN76t1HWctxG+Uto6PxHdKPQyaIHQ6PYUGMG0uTAqIhAgQ4MXVIsoaZX9uQh0on+WqfzPnpzLmeCQVl1SDzXrTn0/fe70/gVEu0k2cHPdX+s9hZBCdNPOD8St+nGz7lhlJSNGJhd0Ai8XCFCGU2bpVTxqoqmPrqkcjQy8CKqoX5lySqyPzFsfIWSlNAUTiWZi9tKzTiOmV64Vr2WXny3cGtFJ6LU7CSWml0i4px9JZ5SFu0itK9OdXkv6ikCAEs9AUKXEGGWcc8WVBtgcKbJbA5jVCCKsMwUhrtd1j8xH5a+MPHc7Jv62acNlH9S7wcgQ+kQ5zkRZb/bvQcW/i+E8G9XuI7zMe0Xj/C2UWrzv6KFjT+GEgnsLaF9dx76ASb3qLd8wq4Rd2d7B9odstswj4atOgKJqCGTKP3P+RBCIRqlaFvfn5y7mgurRg+iRP3ng/kFXKYdsKd5y+UloSmnVtukx22cg1Koqu+efJg3Yuc20KqpTp0SuHc2ZQjRmnvMf3e5KoJAGYqAOtZIrx3Rgjd1AMeDSMXy7zBdSzXMhq4Nh0A4bO2F2KxWNnRZGLMw1ZGffB1CpxGy8pmSimXoDCA0wieZdNe/B782Uk9pNnUaKTg3KM7xxXnv8vahiypZYIF42KBWuNG9kvbfOzGEm27ZijdiEpxgH1D4yw50QJ1qoRZfz4xRtMU7FpRwafqDFM1cnXd9i6Zk6SU6ugIXmlJF0kL0y5uaONDcgflouBftR8V85mYfF/Aez2Skic4rwew6MNVMzrqZ5cUOGOPFr7uyBfmzyncdX+zpd5CJPv1kB65RQJbBKYMcZIqyGpcQ1K73nceOi1srPk1GYRwXGtTlYBrgCYUVHs66s/QHOlSgdhoZsUNpM1H8sjf3bE6x1MKJY2uyenQbhnlM9RHk5BV3CnotY3VgRPPm7qBTPe/MwVfHJh2zvnoz81rCqDMf+DaqBuI/EWKNVHpZIwclQHgQIN/DLI+eKRsWz8d3seJo9BjFvdNFZows3i2o3JvNMl7idvmSD8bAk8tOQxD1p6QlfAxVO7xBQPBTql1oHgjzFsWQZkM6ZhfWBJx2h+lcUSKLrIi5k8wISWteoR4P8Zs/yy1xvesy4rcoII9tMNfzTrfv+YP7dPSo+r8mvyvFY16yl/RCcvzffOAekFg2ojUllk9qXSCojpI/PDaJl4Evlu4WrS9IsNQvwGzkxskDoFzb6BYIN3Cb+4Kw6hZxgblzmVByLMnB7QXnjjfBJGOGFJyzr5pUju38QAc0Q1o1BI/K9J33pWiSDSCNn/BN90aTPW1pdMG7haGDCnPPAB7elHGrCiF22YSk+xxv7DHw4gCYh/VO/Q/GPCDtCx0LSqjfy93MUp8Sj+0QJPpiHqe+CxWRUC80tCzSOxEVnV4cz58PteL0ODYOVlwkri3fDSk0QQpnI2L6mPYQpoI4YPdZ63UltGPT3mhhNW0QZWJhy1SxaQxRmIbTSZX5r6pMsJPurVss4qV66i/BHGVO1bDcbFBzr7lv7JQvUFITRC91TaF0G0yboPDHecQEKPQCrGivZEW7udUxy6s2kHvCwFZq/P+2DXSTi39E+PL6ovXN4CBGjk75FmTtgl6WqS1ijY2bjI9NK4RRKt+annyDyB0IOkIdePedIsyLT+9a2SYHc44Mg6RTu804bEEU1hN3PmBZwtAc8rYRaooveWJLa25Nr1HbMHKHtuSuwz3ksg1xfChkKylR2iVPWAtuLRmNrRbtnKUIn74/OA6ovCJZR+S3V1sDc3/FE+xvJya5AkaXIXlwdXXjuzY9j0JAhdjBAYTPeGIUOwPwffZqZ5jPqBm+/nyqkreqL5OYgObZP8ha7bnb2f00sIzfaDcXTuZutOO0ItySu77X9lanziHjXmCngcu2tJTjkWV+CFfieYK1aQ+eGNTT+3ozYTo1LsWu09ZhlCtBP0QqpozVBj7kC4RDAGpOGcNmrwS2duKVNfDah1BjIwQX6QSY/kO+8JqQYXuQtwSc5CmlsaF2vYrqyRLiCrJsj6UDBY6CrYQ9yC+VXHDM4AnJgw5Lw0Z9kLo6OzAOdh/52YJLf9/EjazWkiJjdtRPPk7PoeFeSZRrju78IBXdhmCNJ3Wrj/8PfXikqRKjcw/Ub6UZcCy6hXk4F8J30xCOhhgzt5Hl7HaHLVl1MoaDoIewEE3t8v57O8VIsEnRACkkWpmPbIJcHobKrZZdvUFJ6WMVY7mu5TMXtpiIm0HJJ6pCcRxqrSrjcNPo72g+6r3yYwO2NIaibUxItvoX+yA3vt4DUnvVFo8N6GhOmLGOSWmVLmn8mfyNDsitcAl/jB0CUUh2+KL3NQvFGSUD2ClhtBvFgcdg3+kc0AwOSCFpQ47ALewHG9A4PHa57juPrhI9r9NkRQ7cGbDvG+QpJ4atSciwMXz4UZsQkZQ5MFwka9ZDE2+V7RXozHRHCL4ojHcdL0ar0m3MCHqgHgRZ8XE/yx+MzvnwFEtc/VGKoEJLJP7CeYAUeqMMAl9jR/9pmp+kBZ7vYxlJX/my9bUIz6wI/1EOtRjr4S/1VorjaIhsjduuLf7V4OTisOAHx7ZRjQ7xiPDdHwT4vuzfR7tZjW4rpVUoY0WuyHEGxMCixfjCQUhX5g8edGtSFUQSRgeDEm7WZ2F+XBDP6IsuO85bCDw6FTecAO+P9mu3iMwCUo2PjtbKtFRpe1Xahnp+UJP/UX0GMlC8AsMEeKmfAmX3KK63hg77d6BFsBO2+G9QP9Ov51z3IR1ye+o2howaR9yUkfuSOL/ATRu/8aeDVW+NFz247Tt/tndOHQaNY3iE/uUmNvW5WJXwXDZdIqndm3bFSPvW/DYaIU73UvFjQKqYEhvi8CUjm9KLlzGcctJQtTQNYVrtpUT2bKpYTnvdZKNUq21xeJA/S457+wtBBNKeEUcNRTkJwH5Uq5H64As10k9g6oOH/kJr/wKviQ0CiLLcDYHna4x5S8qNg/EiYyd5q20F4bgt2pbvb8dWXKy9Bzb3y7FTayWl3bG8FbGJ0tdHRVO68Ry5zwNDQgvZ+ggiBLidcw5PuLSRhfTZaY6QqaHq7bkNXvD8/F30mxLf9jhYJpRNL78VvPtTodbmtRcoqpeVp645IrnXq5lcT7cAeANGqQj0WA6n5vINi6/Q8sX5PFV/4qKZchCRmrEycafzlaRkFNQIRyUNEI6Z9CKK1ItnXAAfOoEGMDrl0Bk+BWIIZ2UbKGRipT8+UIlScekslfVDBc0qV3aFevP2Ww63g6uZRY3e7xnjxHKwV3CJQFtJYv64Z3YQCBWz6+1J5KGEnN6MSc8ieWwAonQVjCNwO24WyEI70iKthV5mXzbkxm0QhLgaqsgIB3yIjbsxKnJ5aV5PCyCnISLSRebJD96is2yzalGlmwu22OqNLxRh6/KYVtx/WPxUvMc0J1SVv8ll47wQp9Efso1ppRHdKdv/m2f86TfNp+3u7B2R/rraLWRgQkwpPOjicIyBoybtk/0A877IZAUxlz2QVw8ciJAKTwX4tiBKkcvvam+lrWDvIprItKIfAnakw+a8oVKyzPxPAXzuRsFEnaSu/wuUYaNKykUGP/G08QsfbuIto2AemnbXTPiQr/mifjfczs59ookDPRyf+CLw0zgQQRTK1NJJiKu3UBHpUXcn5V3PZEAcmp8x6SKjzqUTQhTMm2uWGeNEHGFlXz1m0w64pM0PomhdB48dc+K8DWg9UsZuSQFw4trU1f5Lr0H89IYqf5HtX65hN+R0dfqFpV9XE0spH9l7cMJGbbyuHUX1uVXYkv0Fddqnr3ZWXtUejy5V7Fw4M601EtNZalHvSP8lzPGV1lOqe0YyL24lsRz4hRclzEwxJqZp4olYuH/teV+E6pwSTnVjXFNlDQ0/l+sTRf+HpxyFsxC4IgyaepDtOQdptNtU8xCzlz3pMRyQA0uQnNMGxp7m52rdrFCkeVcbzUIXOv3T+54MxSKj7vzryEDVr2yEJaNTgC6KqTNR3h9QZSIxUrz0STjNa4o9TOukDWZy52q58MuDpLBHjtvoCTysEVXEKEiCH4monkz2GEf86N6IG2nbWxnnPkyIFJdzVGHmmEivhcmsK3maIRuMsNp5rNHWFtR88o0zxYcC3yyVz+4tip3vV4c96LAHO03GSqdkYgeQEeEboU6N6WAGrtyj9yqH166N5GextEuM4gFZ87vXnf9+cHcMqUTcWfvAYUHdUFY74P2aQk+rXO4IGuMidj9bKaeNrbX78tq0QW0f+ypPmVky19Dev8k+3UbVQyDZgx0cpM0RVjBGx7KEPFiduMBrnh82yt3IDEywm6npl7Hv+ZD3z6TCK9/kl1s7W/77MxtPsYZtggsimEnQh50EcroJB4Sslvzf+eGx7ztDmqGyz//xVVyzcCgIIR8x5DoyZB8psCxQsiA4u2MynIv7Cjtc3JRlrBO3gAJ5N4KYy+egJjrV0AGfMLSZBlDegln7Nqon+ttAp4v3UeO7e47wTfBW2pzodYcQzSlEWg8nH8cBQNv8T9SJGZTg5Nedf5Q1Qx8/BwBAfSXBgkiZs38UTvwZzwNouR6zkuX5Ckv7Gbis08udBxO4VuyYhnbJMw8zULYZ/QJXYCwMR23waC5Aqfs3qLXKDwt5uj9jb9qAEP6rRHqyEteQ0tzLUz6mQs0a7TfPmJaQaMCKm9eCYT+oQ5DhcnQJIq4smcVrjserTGsj7GXIOXmN5uWKOkuWaGpwft8HRtsML3xErTde09b50mBRmCuZnWqPF3bpZoVuRyIN9ioacRLhoh9S32SGolDXRpUmkQNFp2/0xCayP4xzB4fdGqFt4sZtijFIqin66/kab8T+22Qn11beYl4p06ARi/CiVsypN6BwIOC1D1O4H5HIfra6fJgJWmNuX4gtnD3y8MZTYf04MKuKB//EWOYdYmzG2mJSXawbvDbIise9XU30+w8HKpeDahAPs+gBTEGNbVQCG6rfqXs9X3xZ5CIjA+Ebt6Mo0nEISbY3Bzk7SiyC8NmVwkV1y52Dw+w0+NbaYNMTi2voMqjymZZs3oQQjatFDRdjarH/cmVTGFh2kg4FRojWI7cx1tjQ9o6JaFy7A69yGzrIVLcMxoQS01iyAAAZQENHe1q86s829ja1YSbT0k/mq389UvsBbWrf6xGPAMflJKM+UIyIEMlrrqAQ22/641TFCO3ijYkPpZVy6w6uD7umc1rNNRNjZ96zTCTu61RM3zocK9qB2jC6RrfIs1M4GypSAuSlJZStnTdy1CTHHh2mcqV7aJ+I8UynnPYHc7OKG/4q6b+xysTHzD1Ev8ZbjGtbkJPr8AqJ/h0A4HCWCyBEkDrkKJCkESuybn/dlN4Hx0n2dvmK9/W52jeF578muzMP+RfLhbT5Yi4NktmETb9QrNuCxIJvk6qV4tedgd6YaT5mO3NhPMsphhVnKrjcNCg/l+lXbfP5OJ7q4svYbfCN7zkWbnlcOrPIkhVwVOozL1qhnkk1dwvF9hHdQBBHf/6nFdco0QTe/LRR/7yHADNxHA2C9iDLScc5BxVWDqPo3PR7P7KDiJisyHBixDlW6lE/xVyOvHEfuYag0iGnFDj1B8mX+vwvEGhFnt5zzQ3hEvlTujL5JNdncSVney3WLCEzKeeDUk9tWjOnSLCLIHdJGmJIqa4HDqobXDFyJWQUGetfRftI+HRunca0EPnHSHglnu0F0n9diXdbsQDyYWp6KPGYgqf2XnH+ilUtSbg4PqzhLzr8bQMH04WXjlzAnbV0IIPt3FCcwwyF8J5r/fh/Ti8fvZnRnQxZpK4JUJHQ2Jm8NuYvYa5xi7A/PPQsxtJdtOl6kOn2vOcm88c/9HiP+t/HOByCfx6YqGJQmQRldxN5WI3u/juiUtzwomocZc/EH7Uo0HNn7hXcGGtGrW2gMrR7yPU7RIu+c8tT89lkMxooKddEz9gtC7kJHFURpsbT3XxytXGwWRdalPUjngNmKSWewf3iuNEzwh5oLBjMv+Ra6rpTszpXA5AAM8qvQE1Nr1Lm/ZtApOfBY9AQ91rd/nM0dG+iqpMxV/d2gD4exM2QLgryZusxSGBrRxXBJ+CUZ80VR7wJJ/g3urEMp4VVA+HR3aUWsgBsV2jAXmftA51GGrgC/Rxum9CHNE4HA8adJRJLyk2mYRqkr0wDQRJ/g3uq/hN/CKL6fIiQsxp4n3G7POfQ+0jqiG7DlgNtHABp0hE8HUI5ojPHDYwTNUkQHl12oQ2C0YJyYFEB559c3gVPi3CtIRNHzujD5gA1sedob8PLx7RuI/GSL/7HgSrrHElFwSikf2hq3o92l26Y+bmAe9yP2uZ4mnVuaWtxbp47LzKo8LB/mh/8NshziBCCn23xbVwma8kbICvoSoWdOLavf+GRF27NGVKPyBblG6IuVBsjUVtkvt1jugaosLThVa1PQ8PDZKNI9FILTZCOHwu6IK+Kz6C41jg1zUXdPsITGeyIw6WSS+z8aGGUMqV0Lv47fDx0tgMV6SlgoWRcxkGoRR0cq7S81dofBIWU/DUfepU046ksyNfSIZg7iUHwjgrnv7bi8BlWs5nK468KWSCI7knkve8gt/QW3pWRax5Tlm840FfsSwRbIfTgd+etp87BVdGjA8dPXpw3ZjMxXZn1R42O7bl0BYghtmlYpHkCZ8S7uzcHg4Dq4aUs20z5/E36I4mAAQFV/wNWi82GBHk+0FoOk4Gx0A+s+/xzN/8uIOpHRV+XmqJ+o5OBzqJwqkYmPL/AlfIofik8sehfe5Xu3q+ix4XbdPNF+E/q8aM90G7VUwFNGPd8EpO0Bl/9DUv4/I++J2fXeVJtkNdILqyM3laAFp85vk5C5d1BgXle23rTlUGfnH/fdwbbs+I3L7TiKJw/PpvM2HtMo7p29ndruGnqCa+xHxHGL6wL+x2nqB/HpH6XHpeHPghfrm0pE6f1UwqD5VUBQNSi0vGr9Wbcgi4Umn63LERiHXDEsEYW6GPTQ6rmDlWASxKlar3HKyBlikH6ziYKfPzeWAB3cjrlrc5MQUIie2t2aQIieKAKv1SuVNF7W73Sa/3fbDajpFRbZIkuLPdipfOcRB8ndEx5sPBjk6mPBKkchgE7EJCelPnrqJpOGsB+bYz1zXWVZjMkRZsc2L6g2CfMFOWqT/6j6GXax1ByQDyJzexKJKay1Vd3fu+Se2CKgdWH2fD7IaV5Swg951sHt65LozMgSRLshFxkkx4m2suK9LWQaQDuGcB41mUIpXQvPHTj3M5wFnATdtw1GieJJ6CUnlIQRAD23y0KQoWrMtGfvN/N3OsWxFxlWBmzt4halIPbGXkgYUcn/NK9PdTUl2f0z9LGdGjS0ol/yGJCvkGxU7EG2NF7D12G69i+Yvs98XhpM33utb0ku+pEg81P4ywJBgbfwuPADHyzAW+DfE108dWbHMmjUoJxUtAI9u5hRg4MX18wpGH2uYD0KrTrOXm5Cpc0zksO6iE8AhK5IFYXYPAZ7OJoXQhHDC8GJMZfgCNe3/2UrWRIlsGzQOrJNZ+sziyZUdLvWJKVmWhC7NQLzc11LROxbYu0dti7JRJOBbqaCj+g4gxryU4Logb9WxLPTxNKu78ewbWPlHdRz7rF6LP1oT10vYdga4BL1GnDlw2fIgO6pHOg9Lk56fSOh+f9Vs3sJHrW/zNoCkb6i1AfpvhPoYfUdOA3zysVb9DRkUZbMkFDFaIaHtRs3Ph+L94ItYoModqR5o2PlGf9LB8Nb6BKSje271ZkWun9f0kBx/aL77oXuBNi6DO75spqP0JYDOgII3lRmgt2M+I828EGmKAnY2zHUdyKT5MPayBrGnMHD2z/Qmz+A78WtWYEu9pvk/B7BmWn78I+/dnBnQigwCmDMf5wdN2ljJ0T6ujNYQeRi3H/6vx++HoprolssGTmFNJ8aBKdXLpKD4hTqOWMsncn4EOUbmTvonk3TDufvQIEY5Xjw0/Ok1bMXZ78vjjRPvCOZvQ6xF8O3X05ry6Q8rmqDziFcXd8Awllcdx7Sx2CFVmISVtikkVlNPuwrzr0R/C6rtuMG0YpzLAJ7LUB9DneX/5345YMnmuew1ROzS7kiIisJaonQW7d7TFg2iMAG0Vc8734gISBHLYrJQiavfY1X/lWP+9zl0TIqiSxwoq2S3C6GTdY/ioAcP/mCJP1783x2aWQfDpDAcsUTKF230lppLHw8Y8Yc0Tk2iqy2pRhgkzNssue2/j+8VWo0gD8ikYR1B1/68UimTbudmDnDN9Q4f79zxsADRrPMWLYcMT60iJXwaWg9kUgiWvBbfw+H4jfzcNkwnCgm+TGQuAUNm5rw30j3Z0pQcxBuBMm1jOk9hwV4miZqaREjzDcC9wC95XPASCY7Q+h2KqCU6bB4xCRKFDD9SLcQcVjql2SGZ7sQhIzzUfomJBswIiOcvl+6nWKC0qEC4PFoYvRWuwXyqi6RNyrrtyJWpPnhiPLtt1DDQphJ2tG5LuwcePxjwff62lKElvHW9FwQrLGqphlV0aqIpOK3w6UZq+TcjnF5s2Kq98pOsI1KXGvTt1wzO+d1pCABB93SKgobEq6JaKDYmjEdW/f8S+E0xyUrrdFkyaU5RT36stRCLoDkB5cdn1g+94slPw5U4F7bKXGXXrV7Ak8yK76xp96SZ0rys0G0FnCe8J8TbjMc5HdYUlaXuGhdP/qY8hjjNw5PwThD5KZDPySpqdLp0T370Q+uS8SDtSeDE12roEqKR4hfaI2fngqPNbllHmJyCmTfI/v4LMFR2zVI0Z1QezTMUKxjsjPDKtbQ6YnrtT1lwhFLmIvGC7RBU+aV2XSb8dpxc+dU+i29YoRIQ789tOMVc/vnVVqgDhckup0gr2iUBe1Qbig8PXAPEWUrL0F6oEJnvQra2I4Q6pFk0/bDYuQ+v1lE+iqG/e8x1RxCCm2BtkhWNsTcFpLArAaAg0xM7dzJaykddvnmCs1DI2eESWL3UO+4cNa4nL1ebilFkaC54jlALKCyf8q7dyR0qyimo+k1bfTwlO7COTJsFCuI9N3wuh06nNgyp8dfAARywZjhcRLqxpkgBJblfrcKNVy5lzLumCdjhLxS1roN8/b6NLOtf02H35anu5u18QItU41W2tajmkgWJY1+qOXyP019TmsfOriFEzeUrdL159VTZoTzRr7Xg0iRl09HBxBPBujOZdhXJoiUvJnFFOYflGfybSjoqMMBOhuqQOJpP2eCeFOcGQj2iFO5WciUqCXV7UDFMnyu5hmcSHAbWQCvBhh3SEUd23gN58wNpr3q2FEYTP7oYe1XLMQSAeVX4ja+8zj3LiRZNIDWP0ZEkRKSsb8Yq+gPAPTFSa5a1w1dwez5YaOz+H00ly3h6Du1GbUQwYfHYEFKd31xcVAIXN8dw2sexPI3g28Pz5Hv3o0mRy4X/WRAPL+bg6Y7XP3pXHcRWGxcHh6v/hfkDv5x3o/ocs+b2479nc1msjGXgV2s0rcQac4njwY4PmEcXRlhGXDqMd4CEDYh86DYBLX4FErsZYforxutgzI7Un7wMQIbWxpp40LsPvCB4hZLd1Uj3sM7OdqcheF6+cFb3NLWH6C6DcfCpfg/S2mrE1tl0/4Tw4xggDtokdbQSdwihLsqdkMK63e4VVjsDaUafvBFdJ5rIfq3M2373h8gQI0384SK+EPw1dTpNyL8uij6aPqGpBdUiuhGxJgNUeTbXtfyjJS2SwlbaoOmWiHallYoHvrf3raGIku7WrzH8S1nlLgGfW3/+JhLWWcRxUDYAaFfxiEWTovFBI6zps9inqrVb1umz0BAj63eSXR4q1IGFVZ2L1w1CQYjdVCNz5Qw6lWCN2IccRPP5NPIme9UZRKBdAvnT4J9lX5NyoCd2AGVx4WuY6w/87x8Q4ocVFePaXTIpghutZ///8YKRSvFRk+drnYUobyRCHkUoWx7m6oiNql9M/cLmxF9u8htg7z0X4lURsJ0bFKOLuXVn43j/p4TN2DTsF+M9uv7uT040nL5AAjbbW/E4x4zXAjtmSHnShOfSBWN2oHF2yQlF2e0yqQxUGZRcZ3QMQ0mBJ7d0W/NBIZ3WvBtujEHToAZN6gVXEnq4SYcgD4Co3e7OTQN22HczYMpw8ep5G9PSwQd+5+yHvAz5H3mnRIZ02rHOm/spaOY73ifTsvUDjqNEztTPr31UMfr8Gs9ZF2YUt716GOf3a4xXfkHb8XtRS+C6S4lVJvqpisnI7BuqX6Oxab9gGrzAm/gYdIUFBvDIuvx344pxuciYgKI5JrmIJ4KbZoG4ULXFbLA0uDDC897oFbx0Xs+AE9SHeO3drDb3rIKvkmgT5kdFLiiCxHKdfnCfQ52drycgg9ohd2KiHZKedMPnAvUhiNBv6kxDncfLPCH09QFy8eBRXX0cORxLYR7PRaEAanRl0fwBDOTVvFb4j3LxeIMfOhvN71wBFCO0S9a3zYn3O/4mQ1JvNdCQQ1/88D78WNXMrLs3z79fEAVTrDImoRoM50ecJjbkD6qXdGdXRnriWW9OScYTb+4GjOx4nkAkbcNot8bSjITvlZzqMkUmqj9m4sFZ3IN1nwIQqdjF2semrhNhFfUfF2jB7YSecbknWQA7H8uLVwzG6aBfOKzO88XwGNtDBLpB4GNrc7kCiUKuVV8cFpcg3l6LtnriYgrExEkjjR6luKsqHzz6WhuprnCNz70D08mNcGoV848/c12n6NQzetktrDJxmoQYwenpOU6OCr3qHM/WXoFOhgJlS/b+pwAcmrMgBhxRYmJvW9wveAAAAA96qI6gHEAA3QZKkdVGrthqJjM6BMrca4et8jjW/7oosp/h7oEYPniKMFDEUQQvxNlykBT4TQY+VYvn2YbDi49r9fhlsjH2Xhzkmub9251EswqZbhpMzy4BD5lHCEMzIreJ4L9dxoiGOfu8Z+tWPVt/gY3DGgSJqY6LG4dWzwdaoUmgFaEhjjKm7Xmz+AsgYKzAJhDV9PqjyloEDsvvyENFei5YBjcl+q8gywLZSSIcVv5k/zUUfs0WVWjqVxOtQjgHXFLxnon2Rf0b8tzn0H7u/y2sT30RNW9H+jEXU4Qldio56U0O1w43uO1zpK0Q3OnbDn8yjpEloZ5jieToQWfyBsPZO2UoDnFnFXgVTIXw47Lcay3S0fWUb8aWJuibSeiTSd5fJfeLdIa7Ygo0iMWhG29F1g516qVBVazb73dzHH0SZxgWqQNKSBVrnTE1s9ZRBlqGsl1cj/hv5DjCSgeGBbbIbY5CIVsK1yxW2wGvmDjRRUGcFgrp3RsmMKQRm64BnJVfnOIw3o1YNSZi9bU5kj+Axk4kk3c7WEa0xDZbzlrkCSSDGV/wAzBOM6Fk2QFPDfm7C5VcdO0nzpqWbeMoQIFEx5LJ3QuZAAeDjGvK8R/QEmsL/Ef8pl5NW/pctilt4CLvyjOg/KuW7nL3KIvDpREeItnYOqfNCSVoW+uIN3y180wjEwZE18Mc5p36zV432fWKbiMelw82/Y/R2Z3j15Dncl7CTJbV/BV2rO7V+E6y+2q1FA7F5J85V/t7YenYTbwt0AOzpUrv3n5xjQBK3RC5jS5Yt0Ds6Gs/bQFMoYMl6lbxKpZp2dpxdofaH/e4H3jbIOcFgN8VmBzulX7+Dpgca/KWaHUQq/Ba/r3gxROIb0JeCvXSuyNlX4DU3rRN4JAfHEM8+6/TQ1/fUexV80+pHsG570tw/Kigmi1jfezRadjuElnBZDm7pfiBh0Jfd5GeW7yPCsH/O19NVQW0IQMTOKUdIyczrUa6RBNuO/20kwby60jqUuJq+7g5kVvvHp+HKl6I1GjdFL1g8tZFi/PdatH967Hp5q24wTbcG+xsYPCzUk5U9sXjWamik/FgUMzum/gLfEMIJE8JbNu3dzd4EJrZqOpDXca+pG1dXXlPE34gxzqbMo2li1Vv5BhOMmtmaVRrxYMz3CIKMJfvGjlR6D8sWpjOxkpph0Fa+T3gn6f8bfCc0GXK1BVW2zURoWSAwCTyfiQktyByfdaU3jyals+SVNzATTpRrNHjgqSMZpKx1tgaRiVIH4PYVF794N0WMV8LX+BmMLWUz+XmeGWDGU/GolKb15cKm/bAcR+ptQoqmTT1z8TEN6CAfvyHho+VYjyVJjz0gDbsCjt8euxOruSqkZQXpdH4n0A1G0IiYO7VtZYgdk78GGQmaWaurC3p2XcrUziu+EAFy9GQybMjxwQZuTN2eaZsb4+Ref+KCILmVkaZlSGNyO1EkDh6N1NpeWslO7Go30TpUmzKgwpfh9HSBevp1HIQxENgc67V4mmBaaExjF45GviIgs6DRsRsRCY9AeCMeAa3BEnhU5zOgaBuSFZfmFWUBcgakMPkYiWldPDwWeCn6bKloUjyrBdUZaCnoi4LpizH4XHN7rVbOPUvvKgvUBcMo5gWRyTsy+NMI6O845F9HaaCHt/HkiqdyZls7D+FMpYmDxM5h88Z6SgUHzAV2jQc7KcN8boJGODrfbf5KxK6YGkZqCL24HE93lhGu/k5vRNzHvZ4pC/zUTaGfVpsbd//TPo/1EDoKqaTqO7y0ujSgue8qAJ6CSP9gGfjWDTcwVULfcUZzVudHRPS9W5n4wPQ9nbspZgVvggdOT0ix7UT8A1qNUmckJHUQOMtFbs7egK5behqg6+YOERfZTvEzcLoT9iJxz4s3qSiGsmph5nMglC940pBHCOOvxhv0s2kLtjuEPzAvV0HtpnYqZi47V6TQM1wbYSF6qObQ3Ka4VZ6q168GjSQmGSVRbhtLZgj4w6fF/lkRUY9fkqGVHYtxQOuuB9ehKyOOq0LQRQIJTG/pdAZGB96iRVcJ0RhU4rvzKpv1YIxyFf/00ooIatEcep+0A1pZ/6a7uc32zftjzfPnQgjkgOLx9srdUt9DKEHnMHYG2arSSwg4NOsDy+ODnJS7Tz2tUrSNlrRdUXuMalwPh800uoYH4k7mGIX2Ef2jV/syQSXkZXf8X+G7zE5D2+5s+sEdqtWNInK8HoG4G33VpNbC2jb+mo5mmfST+OfJdV5IMdkGJbRm6AxwJcHD9zBm/f+hVYH3OoNwHsreb6AW3O0pZiQzSMLYZSUVkYoAMZ7hIkgt/rI3y02yPAwSzWPvram84SFEUjpz9NtbszNoQ4+XOFLvi3W7K5aWQOicL78hmbJGs0WVlveef4z5mN034bQ84XB9D37UMG1fS1aFOf0mEyVWIOcmIby6WLTpHXDxTY38yiVh968VposFPmFmtw83cOxeyvy2Qc0oQqc16/tfCdqo+erDmwY62c/PSZy+jtA9vngrvEPqUyHd5MMkijJV0xOhNToD3JEIXR3clxV2P39ik6ISJPPUKxQTbPHPXgBsAflgoaYLvgKib9kLwvYIjT9jUjjLagJiATe7/hUN3OlUT1K9/3YR41QwhMwzXXKHum9t7KcYwGlKrM2b80m+WAwm0BOzow6NgYq2CjgWdVF2V3ixXusg/7bcLZb/0Ucpp0n5jF0Cw3Rn9jxePSBXJUPDqSiRkdta3A2jrj3kHtEPhhp5KDp242IZUsF6YRhbtNGubQnZuKwukb4n2c6zXa0nev6oM4ICZezJcYQMUHlC4+k4EcPVemmYIPwQLukBsD+Kxs0ykmyCMSSSZUr01c7+T4sBaktT6LrG/ElBtDLuboNNqlioLc2DHdEY0lP1cJ93Ja/qAaJzhMunFt/8nUk/qPZ056ze9cOmZKw0jdPqSGbWFKnri+UlR0M4hDU2+1qdRdogaCQIyKmW3kmX4WHd3epzwXMmaQLifLiV1/98GL8u2GnB0E5xv9B+mnAnnI5kqQGZdSODQVDd/PQ67BO5foci/MwIJf4RHAOt0dxkf3m9hOOG3CsvDJDvHmE+yx+kNFOGMeuVwR/JfQv5PvuAr+3dLyIJwsvfvIUZuOROXMN8OL2r0XtvhmFcPlofNCYSAJHTSpm7SUlLJKp/sh4o7MbOwejU5S9+PhGqRrzDa/SvHviw6bH4TI8G3XFz4xrU5tzj2UIhakBbHMJoKmfltKAXjOVT/NUBQSYCxkJvhFB6W59MrnxLsDyLYNdHjLqMK6Qed8FN0uPFSDvNuOGW7QTxVgeDquRKYR+LeUogrVFArddhEUKq6CiCtUUCp7WxAj87biaejkpq438csXpHtC3ChoEyJbA551tafXrZARIkFHGP3+0wawGwlnKXYbWNxyEfotKYyV/GjtxWEUslJe5rP0PvKHBL6KAJGnozSY/8jgbk2OvLt8JRROTQoRhYWmTfG9yDnEltj27/JZt0BFIpi5pyA7INrwYNo+/Ff3WdZ/yxC2+ourrnrVXB4gPBOzNBYEG4VetvqGyAOQe7zlHeSW7fgMV+/4yKg//cZuYoapOYx1C5886jFD00KZUPai4srZgJpaFL3OQiceAANlr2kHGkKKJ9HhcvsEEyPCVPoyC2SMdSDUQNJFv6cgsk4bfODH2s5O4dAnSQG8DJMMA5+eSwcDBPRuUtKrr96QW2glE6KePkkCulCHrNraSNIn1a/qgsUNMCbYRZE5sKWCRz7/nbYQ5GfMfLu5e6LukRSn6UNc8x+r22zinlkXznLgf3FDzXqGvHLFgnGa1DRVe2lPmItaFInHRjX0ILLYPkN/3xnK+0Yp/QBO2i0xtKLhNGrHxfmcG7xj0PaUZYoif9mbsZrSHIJCDTYnF6+O2wCKZszfc84nPPVJH2JeFub7h5XA7/SkSLSV/g0PqQOMWHRGiPM1awCCIAa0I4kUI/tG0Bz+OhCgwbiJQ80Zpu/MzJ2sAb9YcPSr5pT3jAdYIGXIRNti1oVpi3JmFekFgkePKDpL8RHd6PlkOIGt3wRH5DWQzMXFNeitLWKSGwTN7gqLZNHYlTXFxCwNYRrTENlvOWuQJJIMZX/A2YJga1DhrSUMups0szHnbnOThUnKKGWlgCLsB6oi7QyePjUZ2mwE6PlmJZ62Yw55UKlegZnqgiv3Li7FTQAzPUrtFslSdbGPM8ejf6nf3hiNXkAc3Vg5o8r16U2La2xTKH3hL+hxUKALZPwJCpc4D+rrUJcVG1NECcyTAzdJFutAlF+/WMh7bbCgvl9x8zWZfCcYt7wuRsE1LG1vNtSWScox0iRv5K2YfKT9YXrE1n854APvEdRa1qr2mPPX4A/wAHfOgRfwABSIAAAATECflqbP0CAEOHP3qEk1w2+0FGtj2Zm7dvCCQViLwrCwm6Oj3apIO1gadwCf8sud8e+qhV2mmpMNfCmE15p3h9EAk5Wx0nJSC2YvLngvMDmnHuTOYEdmOXrjdzbWnfQD8f7wJtjITVibE0cfRFkczzl34DxI5imG3bxngY7iDO+IW+oc0FyKmBuccFCsA9/xyaU1GrWvaLBobiQuSOifUrvEG0BsvSw8ZqjcsHS4en7edQw3pPnp376N29n+VR2qJroPN7bBVXzODKJTYO2Iy46gmVOST9uBJnpSUS+jY/Mq7yeX2tCi8HRTkY+34uAYXXfVFrF246ucm3q6PX7Rphp1ZZ5MHG7DToRp9Gx+ZWxqAqW5fi1a4MTl92Eff3S5kwDXokUMf/0Za6bZRJbtwWpAn5zkrmpDnDino6TxZc55lAhrx4GrNib9m60wGHlVml0d5x2d5QLGE71yhlJvUrFWtIQGfWwzdHRZK1GqnZmqcswdgSXmCDS6y8UkaZU7vGACjdfzZL3oYK6Mh6D94+JZf4tTJ/3mrEjYwMw8DihEWbgwQXjF1kzsYKQRogQR9E4sGgKpiGWl/WE1dg+hE6S+JIHxZigMpnM9rbZv9A9kTttSGoeZl59Us06HpLjYsrvyjC0sBjd2+ZYS1yfE7QG1ET2kGQhu5YJi+ROlCPD076YsamdGuLiUMYhVLkJkv6eCTlihXTajkmyHvqyOsMkJj/KWL1f55yYm8zGw+wgG/6PZW89a3tu7aM6MznQ16QDHN1uUWKt4zOjGGkBNotZWdHWUcZk7GGcNNpS76eVZtKjPE14gY6uuM1BYsOVCEjh0A0UMMzncZby9pixvjQ0AUw2f2G6wtK2Z2BMhK784PrPBBSCIXo+gTWRWW/jVdEhejZi5W0PQmYKalt3ilNz5zx6I6Iq5h9El2J+puFda0V0Sh04OBnotE6QJHR3VTQDYKrIXizYVee2YQIKsorzlLQrX6k4b+I2U0u87ERQgR/G864uHEXVmuRiKhT9mmLDXjzI8kkMBtilgFlH8NbaNacO2LGHsYgeH0mpWmEU1MHzKKPZw9psNKdDqwflakxVAokJzO46tOWuuEjTQe20tkP4vh8CCDHYkf5nhHcdTACXGoAAAANxWqWx4CAAAE2grc5w5KdUugbmSnJkjp/7KEC2BAQmMElk4F6ghH7z4h0GEG2fB5d/PW4gBCnsQSNFEP3U8wtEAUQdx6iRJVN9cTtqnR9DtrW1aSCdGRSV2AM5V9ZasJ0LA/ON23xZRCIqtWXASPbjiJ+/RUmz9ySuE8p62CSttg6hzn0nnFYgXYK7LaiP6FSIJd5H5M+9pCAeHu6JZs5oQ1C190QVbwLi+DtTOsz/d1npqKh8AOzRMVw5/zRJWvfkTcpV+AKVmjl/qWimham4pMq78YAnjjZfBCyZ1WMFSVmlXO9u7wryULwocSGrMz00YYnZqc4uROg5gyuU5k06fXoKn7cYFbDNuNrc22NR9fxZmKuig1MFvboZYWM6QNvFXI7tsPpKvqHaS4oCjUvrNtsJI5QN2y6Wdx6fGPPAbjZgFFKUz4eMZPm3xccEUoTSzsHxzm+WI2E16Y4R/KMdNttE9JQhAIChnrLGp0X9gpaAMuTO7B2j15pOVElYbSTXeWqGNLoSIS4Qe/jQV9jMfQddKTTPuFd3+y8A/lfcevDD9mTUqtvlNQvNGaP10foLdp/YN9QVp3m63Mwn6r2qeBYNeeNr83B2W/Jkbz3/grlw1b2SQTArKlEIWSFZKxOgRdzO2WHk0mxYVZH9lDTdu3L+ZKicZz40RAAAAJE0FjMoTV+RBdGH5nXw+Ty1TSY57GAM1KEBd/E2P+6EmXnaxyG3fotDBsMctjRCc5jdbzsG6BeORnkYGv+6vSt+Hea0kiQWelPZUBXbrEJijjwZhbfi4nSaEDT5uu+Waf6Wt6BAD/GyPQQ0OReBOFdlMOoQ2ehiu7ObHUkIp5oHJg8wOWNGtJ0aby5ahQtwSSyZKyuDDRZ3n9PCoHsXIw/tuIVIAtzPnkfjbvjjgGREWA0PAEf0JioDynC58e/uy8iHbZneP9EMWWbLXIt1FRx0ycEDyduAHo97B1YGTNw5j4t3OwvsSzkAezqHpHXpp7AAA12u5r0ms84AABJtUelteQkKXZ6zrhBEbuunxnQ8iRwc6EF9G+0qBpyL05NqwEcSl1mKygaVHd5dTxzv5AFXkYxcBMW7I5XA3R7usYuKyTx+vBGKHyz1TrbQNEpBCyrkiu0liq96LhR37z1t6VUZb1RYmCXqT54fB1OIKSP2hspFUBNxUavGOMD2SykET9UsiDgtv1HRfA01TaiT3i/1dqj385+pRLmGMYjmE1HEDj5Dw4OpIjZewR+LwxbGJ/o/5qqyBDhdPBmyjk0LvrZp9OuEssdCmjSui+xtK5M1cLZ9BNpfolpZX+Zp+LXs3hc7TKQHb0T6hft3AZR+zQT9ECltVMTuoGpDl9ZgOXNc61AIvws4zN2bSSdlZf7mQ/4se3jILYAQMgA/75Ma/YlupUGD3TR+Qs0N082eXcF0MJW31nK5JuntTDKS5K8RH+BEJDJKsmbpre23Opl0y8hTZrM8YbhI4C4p6j51DpcUT9rPIMxCgCM4vQ9RZ79/x9D9478o3nasSsWLOCYLoWxGHatGmohwKp9a2PuDe7rHoctCst+bDqQbk8KPr79NPUHvWr/SgL+dX/ahvZEwgTwipriewEOkbfVQrusWHgybUHcgqmp6H6Ytzbfy8FzAy/Y3x2hT1rJW8JFVovMjJOAnU5UxWOap5HWHAZvZ0a49G6wIol1FqvMSUkGkRRFgqP/jB1jSCoQ/G+WB9w22/h4RFG7PMlFVz1AmCZ8ZhiswUhM576Db7Q46o12v56B5VuV/66Ptul0t90M7K+x+z+BWuwxS4IQZdVKSe2jPRLSW7QNHMtnpPEjDApFGlHppj6vmSZ+sfeYgQx1iBQ2KgAaeg+PWWFNhKhLdnvCp9gsgKV2GviseqEi+zoPsiRUj2XGEkLQgwbHQLRkMRmwUvWSqyS1dzJGCgXPpA4f6JnFNecQGdTbPWG4HtoPxCViTU1hBu9wouIW4QG1JozRcTNlt3Evr3G2iHY03h6Bo3URKjXeOUwoyHnYEXBUZWgf3WPsjdPbAPSDZvFTNWtp+QUV1idqXPvZMztRmYwEAmEF1slyf1l4IH4XRrVoY+h5F5P7OKYg7FtdLOFb2HON0M9ei4GSMfk5cgEiYLQyh+CuKSWtuTAjlfu1e1M6mg+7dOyjS85NcuqDzxqXBmewh8/JtqfQ/ij6Ejb577kXRMERI7t53Rwdw4aduZWN2AGwyBRAwyV7ATEEUPJ25Cj1b12D7s+lcrSYdnY/ie6Qfg0i/ttaXRf4QF2VDmCxidRKueQiNmZj0m1nhKf/PJEPLikPwtfNJlj/r98vworgs7D+ge5gntY1u6C9pua+N6t8+m7QrsG2AjEjQnfYvdwLAIRY2LHv4OcrBDssT92KCrS2o8mgJ6SkRv15vQV732bK7bKWfm91cnuTci06ByxIAgyWJFoXDxA0t+8ltLBShTyogAAMaWaVJb1CPVFcz+n92QyQ31cK/MNUKVbZRIBqavxDBJDxnZWYZZglFEK1kxpXxIgu0+nSxAzLPoo2YxFYCZFal6q2dHVGKfnl2preqsnJ73xQ/PTusEly9SZbx25R4M9jEezlxYxeqIY50pAjSE2WFlGWqpeTMzYZ32EZYf5Y+O/7oeNzgUNGi1MlxRYmFzUBerKLxUSM/xqdfSYeUjFA/W7dV7tXQ2OvMefxcWhhbQZ02Ur/5KyLUvc7AGibMH/gpjLnimTmYpfkGjX79dAL21KSlZYBWBfxQPCmyCAJeoOINdYYk8AZ7kF6E1PQPw164BkoybFQba7Qag46ozhiKfzI58I0U4gawoKLgVG4A35OBNu54FecD0vYrwDUOBJBMxTfNZv974+kYHl4H9hTctzvL7jHjY3ElmqiOInu2NK9z2Dgvn+iMZz4csXA1+8kUZe9SFFK6ShVmOzYZcnzrSzYP6CHqG1sBuplpziTwT5H16bUqXkTr7gnxtQbhtdITjy0q4wadm47GW3poHdfxtp9N4CSHDF+WJmgWCl4y8QVx0GAexkgmFQZqUl4kmtn2EWoHsMXzBqEIIp2ahYLpvs7lkUdIDhW6ZdV4E/k7cdV4QYmi4UipVc+obSNucx0l79dQXEcQ17BDd388UQp5wtpCXAzY7zyOgcnc+pO0F5rfQEMR05JEFWHgGSH9lQdKuhpGolHyUeN/b5XP628zw7AemdyqcppBmGpuBXaXTWaHdy0+QWDJIhWVuVVaq2rRPCXpBG/FSt5fK+v7XpxqSNFNVggh+pv6EsVGqxBYuqd6CaPkZA0u+yTlc8QufwJkvMCt84yuSeAxeMYGGxDflaanYuPyk89Z2khliXrS82j/wUdPF16JSaPO9cXcJSFapq1Tysb6VsY+EUExjGFs8Bm/eRkoNaDoKkevW2hP0jEXdlRlSondOCEFED8NOGVCXeMWQZW3vOLqtDTuo2WKVingoCCXY1U1WYxib1SYpUT+uYD0QJXmGcxjetx5SDm4IPAFQGPPft98IUQTiatSsJYjfdsErD/IX68LmKp1VHh6J/9jujeH111e4Z/9NkczBfbPh87YW/QtlT9ylnwPMHruJEJnnZWgh8XfCEFzW7/xYR2vgWRoGxE3D/MNZqh1o6vtNJmR4zik8Wv6C9b3o5Lq3BnTEgXvKWzX3x0KY2HgRMN6PSmRpkdCazHAgve0Qatucu/yEruJzUYGQXqsMFJOlEkydT+LOcTebs322U9YIy2DhfhwCn6dnmao5KbU5H8kpEPtwtpcksVVRapk2AR9kqvvdNSK6R4FKqgSPZhF2/s/WvoiCIOmDqozYvI29SczrGLBE6Ax6vHdlFCjhPKn366/zLc2uKUQ+yHwDDVAkXAncUNHRKGKkTV12FyWgdg3eyxkc3zVIhdrp0SmC4bS0hHgVUhpK+FBGXOYjXIUk5tUCWKJuUPYxoEGDj1J6a0NKs7+AKeN2FqkLoZqe8zNHyF9ZTkccjINEV5PlUyABJ7GPgDJuS2q8PAD+v/YrEZ4pyVUkb5E7396dH3J25ekUljoQC7jCaCiZXahJ8JiUiSXwlUUrzihet6tMIXuFICU0rhJAtED4s6GI/MrPE6G6V+7st7RxmDHJPTVko9B0YrvKcREvpZaY8/NbgDpLyrGb4K/DiQkQpnO8fWGJutdyElhtm4o+O8Cs4nNWeY2eXZVVJNH/JSIweuIMgSfyEfh4/ZOSPRDM7m6TxK0jYhR6Y3UbOSphrQiPA5RW2jVXT6OycKi361nyspuPuNNZuuBq8XHGyWWgOpZ2A/yLh0ANEpFlPlybJePKgWIf8Ze0DT1uAmZaH/MHM2g10Yq1Fg0ay5KdACxCtYjHVaUT+jjyiysMdso7ARYOI5piPaIKw2c+eL8PrYVh+HZCzNsePiGw59g3s3Ax6Q4KgeipESuQ6cw4qRvYIKlJNGqtEfYfkSJY+6l3MabbPos5ijobtKghP6EQ2dwah+EyfUwq1kC732b628rlqAWBejGdV3fG45Fqx1rKS/LndxI4C7mzXf/sVw+mTIs4mQvpqjRrXYE8fCZEV8ZoI8X3dbNVtRMyMYIMz+uV4r9oHRMIYe3M3W7SNuGN58i/U7RsAe3nps+UEjsl6R/q9MKSSn/jbB2xCoHpEP8cGV2dkc0XYyB50ozG7KqE6NPFqWauvOXKe2NDYMJWvF9iB2o0zhAGxtmCFOCaf1Mi5wg+54/AHKW3widPZs1F/gSVeAmkBb4vcTjTp1mh10ZAAEWdPIwqFg8uproq0waX18FzzswyZFxl9trAlNpN2Z6cU1gU2Ov7vekxt+60dGlRWf/1bI3boQvjmtO1T+VYkHx3ng548RX2HaipR5mra61gqOvCHN+sna3ZWZNcIvvLtHdrJq5h0Ge0zfcoB0hP+GvwSX+MgyW5H1Qh5590Exp4wH6KVh5tXNarPKzpVi1LT/YGHMH9z8TZjDsVIg5wH4r4JdBTtkLD5OpDBhK9tUOB5cXj/FuIKozYPyt60fjvyhSfLt/XFZ2h/W3pQei2KS0NtgflLLZwB6LZy1iPJLovsNO0nqmvjYmfiH/HBp+LEOQIFoxzr3VywdQj2n7EVm2VWo0moAcrTIrkw8vu8HBXZWFxaqKBxh4bcTZqcNug9hHnue0EAyv4l1wxp5NNXyLqxfKcI8wgckCjH+m05RRrlpunLkAuuyQux7LB6u450oCZ1t0/6QY/Ltsurj5aeidsTUpgjqRp2OW1nD4lzaJovIMe4urLeqp/W0vaLFWNJCpoEd9kV1H7o7mFCUiF/CGL2wkcYVzV+tjm5McVi/n9ptKWUoCVFnvWnI5RuTJhbL8PoavHCA7ystFi5nC6OXla9hRKfie5Js+11ll3o8OEPIzf8Hcsq4AhoPt3SOBvQuWtmD7qzeSGuSGZSVZSfTHjGWUbbw7WRzrs/tQyUDdRep7nZuUoJcsKXbRaN0fCZoKKtMbkvxo+ZzBzfB54e8OCkfPhz4cJ8H8Fa8dx88/DoJl8tWFliNtV5YO/LJy3DPleONIjvDaejLtTutQOU8JYqIxbtkpFcFbrmDmdtzwrQFUYNpbGOXX6Tmkt5iVlw+KEs6OGV8TCOQ637l3rMAFeTemujtVrwUplDbv0FDaietaeMtH5yrsdQdAnCUcysnbQ2thJOIalAONFGnbj4D8g3ejT8GwxjOUv/hE3jhmhGRK5KRdcgyx9DMbqosDxg00lTBQLcySo5xYV4NLWzb1OJWlT7mR/CfdqRMAuG33YapngDSa5Ukp5VM6CiQLib5S1CwknjumINDT6UL3CKSan6gt+FipbZbiPwPdJTirQ4S8NzbGfYdUoDdi1+oPcaVfU9+2Wnis9sZYRU8nh11BopYSkANWH7hDpvpxOZ0R3TpTmoQKMX5r/5dNC2rToTQxf6OuJ8S2bfbqCYBZNWjowVPhImQzMn+RdxIgng/zGyAoI6jxjdMmCGChUUpvbWO1LO7ofKiY/0QAh0LRXrK42QjQkEPffyX74vFjEXRjvZ8ycnW+5nDcyRJ0RCyRLrKTCUSxMzCcFux2UOuTTH78gQBlWo7RgHiVwhkTspEnDbmjditBcXlPiDEdFaTIQWSAK3QcNPf25d/A92yk0n/mHxmHX+sx217lsNfqD8BhusbJjRwrdQuV/kXp+BXak57NuLMYlYAT+MvPx1IE5OiudkrIBLVvpxLne1DWZ9ru2srrh1BJwngXBu03lV9p7N36N0mhVo+jJEXb1jhWNGVdbvHltMDXfkMZKPp/abbQmEN7pZfcErRto2mssH2KjNzBXV2tVYOUQeZ5U8yalbsjPDNsNl7NV03w+nNZ3xmsMrRAkuxfYm2+wBOfKhkfq+kCALj877jPGhj+sRvELTxQ/yYrhCwxGnEZovRoSzwx9aR8Z4SS7H0hPtJjDsbxjloO3tgZk+6gRsC7gHsumv1REoFk7PLbqO2pYSPTxsPz76VV8FZdW207VdBhs6wvcs9Tj6lERcoFtgca02614ioODnQtiMd3sEmKFrgYw5sxrtOkR7ZtmPc9x5Zj4YB2xwFIUXDjBaZtt77jLRlNTgB/dA1MoRW8haKFYUJePIJ3gGmU4UAIK3dO6apxc+7J1cHJmHYJTqC6vv933jV+oC+k7xbHLEbFEwJooeACvPs/pNX0fFbsqcaL6bpscboVhaY75otlMykYkOY70wmMxiJUY/FAqoVhP1d4QWYnJNm9e2yAkXrT5mKrjNjC6VR9W04kU1BNmAq621CvuYw41qwKXIqQq+QT5/0ic/LmmxqYfCOXfCUfPpOzt1o74cOAarIg9IhzH/ZNQLuzAngD/NaP26FHdAKQ9Q+jb6hoXb+1d/avRx1c4YSj6itReqqLjGn1Grz7K0O1DEND0VjFP/laXoKP9dRLvSd8Ih5tEyukGcjLhArGWlZtb/rUaSauZWG52g8I6Wa1r3uzQ19czdliJYvMKHKcN53m5fXcT5Ce9hMitg1JwXdqEM5XuktRU+Mczes9xSVc45X+4mjJ/Q3I7b5E4JuzN+2FBnRFDEIOjeNrhO0iJbxlRsrEToU4Z9A99iF0PtdTfl7Wxvhup5i2XLr5us3B8Ck1UZ39vxoqNynSTOXLN1bWhv/oR5SQTWxHF0PSBrQe9tMmLgSUY5qZ9uQ/wSNOUHudZGpkHvtk60MS8WBz2wfjHkT3p96uVjSxWP1vRTheKquBTmR1mzGfg+N4HOYC0Oq3O8uANwEIJv9HCPVSXq89uhloHn1ayvBqgiQYxYZ2agw8fzLCTg0RTtVLcXQZ2xDWZY5VjwJ03XtSm9/sCXrn5jaJlbT/cTrbYjxhETEiogBh8TtRY2tWg53JdFIcc7vCrLkmEtjernA4B5eXKqa0Ssvsg7ATWqhdaE2G/AW14jMd3/7buYbSwMVFYHOocY9xtk5akUd8QKR8AQudT98+plpz9cp73bUFflweoacXGFR0S1bnM70PMwrGWGA+qsop7e7OA+rDiTq94ezS0ftMpXIyTUcTOC1uWJe3i3kbgNvRzB1NPVOO5gIeSbCRQWsOP+nQEbbnCut35O8msMBQRNACSgodFo3dXDdwDc/BP96IdRJDOlA6UtXp3CGi0vg99Ng9tf7jhdWbIiXm2B9URzXMQh+Bfu3BDvBLzZ/CZfjTwmA4nNNsTSoL4+bLHlXxrxOZ7s9PWELc42yJNkBt72BCwSYF/CkWvGg/Qj7inkQUt6oI8kpzzMOF1nV6tqmkfI0WSPIyO96rCLKUCayh1SYx+p51eXcVGzBYY3MOSkCxBldasdO9XHj7SRhoYUtW6O+hYTr9NynKbDb7qTJyS3mYVcufA2PWOPl73ByXlqncrJY6QWaty0AIUa4M5tsL9cqKIvsV6xe+QyFQqCbNS05BlVlLDKrPkuQTOkfTKVsFhi3TvrKelvkWMcqi92y+OQleuqFb7jXg6F8u5c0xmXblqKWGJseqzYu98bIpMPFxt+WHDI+Ljzcn5slhBCmSZfpyiaqcU7jRmisCqtxtOzJcnR2vsnBp/MQ9UszcIDESRlBjh1xN1sssY9Za/wWWaoLsHT9jkAUHWmE6yU/EdHf8pY0QsDgw1+1qPDGjp3KfNUGF0Td0fYLs0waMhX7hA1M/EkJ2P/PXkgaNiVMgquALNz7qVV0Qv41XUPaqEO9pMFWzGlOIiE7s+PBuvct9WqNvU4Y5TMZFmsqVnCgaN9HXy4xmEyZiUlxg2Vt54UQPT/ZMogq/CtD2xRFOZaZXYCf3WPw+Hg0NmOFdmDppzCUAMVhC/W2MMdazfiCB656pL1WCUDlpMGfhlzO/X7nCVd7dZddtfYSjLagYIDedvwq6yKsVnAFGjxY34LFaum4attzH/0PeqNnXA8SMeQXy6PgEkO/yyMbvNoSbMG/PaKyMtOPkNjvyF19oCg6GaM43YxIpmx0qr7S3vxooql/NzXfr42M2lGQFE7IUH+PRxpSqPyLfijJ81sCGKaZ0K81dFIBmQ8lqmkyWfrKt4/TwfK7mFQrZMI2P0fwidNgfkYC6cp+aoZjsHAsYLbJ0waMNvhuYFR1jMn/MZ8lAkEso1+QAjuPTimAz6FegtDJ9yfqPEi3LdVPtHsqHTYet+NVnwQZI/nJngL9LQVSmRQdfsAxtXwIL+JFOAUxCUgKP0D7PVIQA1Ufis9Gi0oYwpWVlDWxAlpxr8FhrvdKDOQRiM8hd4EF4oqFXS8+DQaBFpNHK0NmhPbiNJYSgWNcnPo6B4urT+WkhfqddoXcLqku6BtGCMOENDsSol4Yp+H0u7s5E5KXk1nMZ6K9/w6Q+TvOsQUHf8XuiP/mNqxsBa+QDE19/5i5rZBYhQgO4fis1Z1kBU3mJcW2AQHTqdszSjOyQimhgPgUqQIcb+xPqAAjqrecp9KbhnkrLNHcSR3UEpcQswjwVEXaffk4UFhAp37rB19X2y5HRUZn1oA9IVVJcs0hZzzTRISflcH7gO4uhg7NZ2uvYG08lElQJlOKmJhw0+9cgZAhiJRm6e3IGBxkc93c0SR7doo3RUTVb+O48L+1J9VJ434k+MviUMQwPUspxAV72lhXtTeOgZABKVdvG/vTucgvd3yifstx/Rzjyu6D+FYWvUDrMfSFHu6Y+8+UrYHy7PzkrfaghTXS784MNYCelmZcXpTt2Q94Wt+7QsNa805n6atUO7C0PRPsmwSV2R2VgT86EjbrxP6XJdAQ1Sh93jX0x9Heo59cUXd1DIxwEYmi3cEhP/Yj5oLGZiiSBW7j56KKeYFONND/POZ6yi2Mk989rTkMFSLhQmA3Ys0AGVKzM7XLETysYWAYiqC6LFrhEBojThUNEODYkFq8xQoaOS8eWxcYH2hXVqGVd2z1YV51+EfwJ7p0J43pEUJCNd9zjrfEzyU3xTybBxpqFTmvyPkP27LyxjPkLXPkfPnEJgmAhPrzFnZCb7VXtZUpou+I/MOZ4mF4PB70UhrDNCFnlZi80SlnWgLvRfNQE+B7TepFPnj9I/HgIqg9yEzalGIbNdhzf4ShuX3SqFHud+32DzvKXnOSxoOAbAXko3bQUkVw/Yb3jODJliqh8ZKBh38Uu6WOKmSnWY7JI/ddVF4qRRsCf8ENZpAIQjKkoM6JEg4VUSxqLKhO8gQ8g7IJ5RNzG7lOjO1SJ30J7gDfVSBq0UhTfTjjUBi3vmSMmBOsanvVpI9LhC1a7CdAAGdz7GC3l/ACXGPfWERgNV+ndwpfMsrJumdwNrzKZL7HiHbgwSKCtjXSIv0oZ3DvcCupfhj6v/U51+ewcx40FJPCLDBUWnNGeivxXTvu/qoDY1FD85vfQSC4vDkCxMeRAUKiPbm3L5KUq5YPE72HFahEJ+tm5QWViZM9Q/NY2fEST1pVwvUwCZy2b0Ji5ig9e3XMXSH6NzIgT7FRdCk3Pu92pPs4aGYF4dVl+EKs3FC9Z6GyFEjfPoWb0KxzprOexgTuGKHRqoEFgSIumU+tgJp5lkFCG9aKrKwyOti2uCymjr5/xtxISUptk58J8i9LOmdNFyXToMjUALHsJIfZq+02dV5mfMbKomtAdqt34+nZ6XtXqC4ZWrMr2WdBiXk7vSw+sEs4fY5En+wwB8ruPxg5F/ZKAu3V2MP0+XulkZb9+Fl3RFziZtS4vapOsII23DmzYwlG0Lninjm9OLZEx8n3yLI/Q2cVyMemhP6c0S2CZ7KfOMjHc6TQSI2D4BUPjbR2Ccw7zXxV3BlYHWO+SxoWNDx9qxq22LTfDFyZUps8b9+4ZSmrpbbziMJXuArMR+2UyhUltuuSGmPHgCu4SkRx+qb6eHkcUDonQfLFWyRw7jUyp3p20bUevqKAAHV/RHTgr1O9JRnnAX1cj8ANyDPLywTixv85ljTLNCuW++wxFRrauaVSfPlBoQcKhP0p6O91pc5uyyz/NohxSDySNdqkq4d10ePE37Dgglk2MXaZ0eTpMQ/7NQ2WvfLgnj0oRQTiG5txVoh7SYLzpeI3nAeu7CYwkeIAwnsGCWx6tjMWEqmd+YvVsLFVBsliJtvRHxGsd7icwVuaFqquz9ar6aorW9K9mu2b76FqMBRi4qygnVoYpqKkzGuiKTZHeMY7SNJwqWdKkJTuZOLb7lfy3E6PLtqfU0T70BMNYrLdRYAPtu9pyyowU1a592ADGHvfLFmvbMqI4xILBjr+LwXniomra7rIgqtoB7EBQKw1vzJsXSq+m+DGa0Unq9rb43HDeCUdcBKnwzdPTtEDn7Aw3JdmTR4ChzTuJJbz3F7MQ414h/V7VEJDirl5Ynbo0DwQxXKuKenusTjY51rUjhRl2JT3913MgqXtXHYaxcRL9TfWi5/hBw3LtoaqHhYhKcCMGH3ASZGZbfRYNZpHqOL1txOs/vhEO3lN9F+XnD/2bjZDBFDgj0Ol77DOBOrPV7b5ANwnvaZEUXHPHPhMC3NrdQ8kLqUUOZswd+VMyYjdzwPlM59uDKk9eTyYtOaX5QInA4Lmy/s3ZcNN+l5KitKZpoKek5kkDrWLmR70W1TyFb4HkHfsm7fZxGw+NZPAL5W4eHlfqT2Zp284ocNIJmpesTUAua65oeDu0FdbUuXz5IRUX7OVp94oD+6Xc6gg4Z4Q+lAdKJw1zWhlYcXU2CZzTG45XenvRZoDpWCJvYSBJMqIX13nR1fxx3oGyGBuMFhndL6kEcX+gu8q7zh4yYw4XvbQkzpMLRQ9wypcSqGYSl9RCkL1w50w2egNxl6wPcDBh+U9tbvBnjUpHmG7EHMJztWSnJ9axZJVWfMg5DSDz27M7aY4lWRACzMi9PxVFqqe4gQTOLU3rqdzHxeIUSGi0R7ZYzrPkPaulv8wbio8P1SKpoGo9CQTzceHtLN/Ra/qoBTsPIS+VWjC7w7wkRjLyjN9nGpu5E83S/H1gkAq9o+8S2H2YCnXA7EL0MSCu02DJjHpn/6T4xhU9pxdKU9ZUp8yAR2n0ypQ3zAkgqRh9UQfv1OiCDHLpRD5H72SUoHFLM+rbJkdFVf+qUPYBoOEOh32KRl3xJQCEP2qrwCCsdVpDc16J8lVKN2uvB0oJL0hxNMuoWMc7wwuxQWiEc4MdSm6cJzQe5xCyo4L2DwY78NxonFMY4aTSgPu7YHe+5ieWX6QnGjlXrdHaYhv3q26y2Enf9iwJ/3AuCzcOrUsIeYxCvTZsQY/lwvxY41BtV+Lyu1hYxxxTtztg3eIUxBhmR8w73bgye7kwTKnG7QjDREko22QsJXVrlhLUkAlz8/jg5dKOxqjdSgNLJSKrwZdzMd8kRW1WDqzYBVTpdr5ypbV0cSuscY0Cvfqp7FUVrHDpK6OOG3+spLdowgqCo1q2Q6Dy9CvknQrl8Wx2wns8lDoVDLqG+JiqDmh6przSVai6ii0Y5SimXN5xeapqmFyrifbZn/m9D2StjVREgHej26Gg+oSxgvCY1IS2FG5vSE0HFfVHyiLO9vGoAXNdaCAQmLYHpqzoNXO9OdaH2EjzjXzoOj8Gl4XC4+j3NgsGGICUdZY1cnz13CzQzfe9kdpfnhsZ8W9eIDMdO2PPZIk4ATqkT/SopWmO641sNXBapN8KLADvMIaaFMtzjY5UeqkC5m1E3KSXxcGP2ZOBC3g6ujpx3aNcJ9VnfadnTvLjCM/1AQ37yE8TqkvbGCIkKy1tyXEcsEVTxD1dConxLFRJ3h5u8CmTwI/UCJoFoQRLeSVBZH25P9P8g2xHMgSjHWyz+Iq7hGcOMHfZyM1jJvgHFUR5Hyn/bs0qPdZERp4bxcnyIkDp/Xewm+/WiEIvBdeMKGEHq313/IDuPHKfyPiFpzeOTQx8MwGqDqg0lZkf+wM6eGrnREVoGDbWqbwZWlaKh4cGWJcQmdOeKWI/tffdTsU8rAjD96l3MlAMr4aWa6YhLlkq68BjfVEqVyTtct4jBHEptTAHh4HO3LCbHxua6lWY6pHTcgVmADLtyVgO6RpNg/UUaEooFgiZJg/KLOF7Iqf8hTf4v9zmKnm8F26YyPNpRQeSKiYF0z9pt5QqToGKHHyI3UHLuxz9zLZYeoxE9LmvVz6iGjsQ8SMZY/XBuwwglHwQA8TNDrRhoCejrd5FAF05WtECjx+GFifJnmzPMi0cwqL1pNzGfBY1AQjmqon+GZikoXECTNh/u8CUKqsxSrYlG069G3gWy7VGF5LivvKNRyWzTFAB02Ew3aVLBprOR8RlVCh6YPUSstMWTN6Ulp+u2g5Ld/W94fWQkO51kexgx4lnwBdk+uB08bMpbeLE6KXH6k2ThIZb8JfvcwdJ28k/O2MRNuJcOiH/QrKFiO5BgTi2edh/clMA51PaKQlI+dz7MbjWLA3o/pOzmXu7pA52LpBit9Uft7wiKk7I1AZTQQLuZLMDORdp1htoJsPy07w1HvEAnqDg1feGXwHbp3aI+sSEH6twGtqxcmAA2wy1XdtzdqEF0xgsybgUfXwoT8hoZ7P5r0Gz/+vlRI3WAqHKYtt7TTxMjZ0ek1c3cykjoIyUtgEYVzULugoVsqb9TpDj+VEaPipbW50hyGDg2VdrCWsFe7Pz5uvAmkRO9jurCFr/7Ry2pHEzLTRFKhvwK4GoVHhjSgmJb3WJQy9OH23MiZ+ENarIkSSdWJJ296j4dGe/4v4EsbCnN2WHNIRXLsJPX+CycvZ5U6ab3zrH7rkbuekbeA7jpGZnUxXxCKer625X/BnpTvU8jM3AQ/vrFDNDco3IdNAoYDodUr/WvGg04FupVrTugb05sEMKcg6scMlrxKOxueNyHc3UiZLJ4NDE3hszTGoUpg8Xy85HvGE52VXOYk1AORSRMBHCWnDCJ30RNh3LGk4FLiWWgJzjNrcV+q/ptxLKH4kCJWz8Vtzkf6INzUOK/5/poQm4R+bbuUnbJ3w6mWu8SxYpBV4EMx3UbpyZLndUoxdd9/pkEDTIJxOvtUv3Q499/z+RELwE4oB7OZkuMuV35WFFfz5Ip32eb1FD9x8Qwrf+eyf86TgCVY9xxQL8uvLQBIlOcrl6gETLoZGpAgu/XOY3MK2SiWS1YbHcPufIZo0OPCOuYU0MQoEOFKZfBYdfZRMj5vWY2UDM+Zk1AHpwW2V4CA3Iwj6nDHmDkr7VL90uwMg+yX0JpNNu7X2w7nK9Tv5uiHj5FIhZR6dqEQ8yrtM89aIu52aEHmnPGcwjoOmLCBIBzmVHw0LkHKaqgqA/tqh9JLgFQ1xvUuWdlT7W2rDp9K3mMnRXtTFZ3aX+gPMsKrhFpg4EzwaPwOE6/kp9m9CNs7TCUAAMSTuK80vFdB+o7dSDs1aqQPFvat6MSFURYBIhr6ozbc4baAknPIGcMh5cZvLQIBz3H8lMTO0Q3FVUCCIcGfxdWRoiRAvD/TtxC5qte24pw1PZaFYluyXYn2h8ibqjYCKWZQx/hXWLbCFlK1lqQfDx/E/pChhOnDfXP7ZWe0tOUJWCH9MeLH4NhE8ykE/ksCdRUHCEiBOJujaQwE4R0BjuFcE70pvaoDZmIAMTiTT+t426eNn7BVHzbMuKsa8aof3iB5kHjsIjhT3Dh00bbmpV75VxQeMxnvjp/7u/mKpFj1fVV5y5F8vc9bF/A0wk7oQR9nMwkxOPpeXseLP0Jppdek+vhGem7nDFmHu6CUTMW8Y72mO/xSx37wLrkJTJD7m3dPbzIH3zoHpSB8TnkLncsEqBimAWG3x3G+KxW6zGykGnC7aT99q2Q1UUIuhb7I+hElysBIjtDXS+a7RUmP8fREOd/Iw+p5qHq1lmpLIybnqcT7CaBP2daCOS/Wscmh2ia8XnbDKqi74AL0WHE91+urp8FM9pf1rYABUELTZB6LA4VFLcMP3yI1YFJTdioTDaxmBjn/FhxSDwNHgpsvIAMfdVlrkMWYsCK+C6jQ9pT6msD7EcmShgzTzWp2MzBzbMs20cH48Jyn4NXG/bnWHYCPeChDyT43rkGp4bkkDvhsP9kCBOxFVewppRlcrFHnH1Cb8WBYWssujaU7nuGWudVRKwrp+o0qj6Phry1ezW234F+Vna/WIBHbZUMW8bG/iJC/AXYGIHy1mSi/nATPGrdbae0X5Z/FSxRiA/8JxblbPqg0gRrySe0hky5Roqpux+S/GwfVMiB1MNnDAkCpeKSh1fQEs2+sU1ah4XpzTvVchdsM0b+8zj+NSZeS+GnvmSEnffqPBxVGDaLDeKkMwZCHmPPY8PI7K69SfnkzoKOczz3rMmc0slpaBXDb1TkVp4QQglTyalmBUsSERfV/5wM8xMehApPZmtSLxTxx4OPVmADRdimGMaPDWnjjKGRKKsO2dkKIR+v9/LelhUccFOXSU6g1k3BlH4576FGEG8dlgaMEDy6bwPJJ+C42c/2deEam9vACoL22TQN8LYx/9IvPiRUvyu21VJKNiQOyI/OMx06ncz6A7F7M/nN77+cLlTV8eUvSk6fKz61xLSyD4lEhKQ1foZi+O/lZv1GlQDIm9GtQ4kMSjk/yziFq6bv2DxZr4e/qXYPRcplajwAN6JdQKd0FM1Vtj2ERE1/iLcol4ojjyqKexsJwriFlLVYATIww8BGPwQ6TezzPldu7zQSxxcvLP3wXqS/SMV+hF9m0/2v4PyAsrqD+nG0ahnTp2XyYkE65tmONSGhad413lUjECYSgLd8cN1gmIAk3xBFCQT1ZV1PRtPDFWDqtu7/Q7UVas7GGnKM7ZPvQzj75dMmFCb570Y2+F3iJUap6/2INcKbhFwMk+jBzv00YzdweAtWWjt2dCe004ARNNXhU8c4BXpDoec3pNIgWqx1YcFHBoJQo8U3hM9qBwXfGRxLWFzAb+Ar1IaXRAzPmI49eVvASLf3x3+QJevQymUGW6yfi+CoueTuoCHeClCcGofW8jrLeBLmkU2PVnIV+3RoYoPwABYtOS6OcrWYPKj4KuoAiFcAlXf77W9mVLmKMdSN17acfHLLoTZ2c8aqNa49bn37FKoEmiX71s7tZTIfzdxRM5WUip6/YeIfPJbo7W5wFAps2D8252KW07kpKFG91umMAIaQLJ81pI1g1+bVVW4DzK71uAGX7/49LjFGjRaaMOASRGDswcx/CA662pXax6XW8Mu0tau4FbfiSlazzfEbgg2j1XBuGUGny9I333ONmQF64ULs7hoTMalJU3tFw2RQrrDmgl9HWbMZp774VJyzlptn4X6iXpOMP8kPf4CA6Hu0HQ90nt1z4EFrr+hCxVvWl4eh7fxzivhrGB512lg5zjR/m/e8I4/6dr8FHXbUALD2otJe3ERXLqHWG61Lzu+c2ZcBzqlXHXppXctgzupCM9e9zvOqBqJida29g2q8FC10bMNuRdjFcbNUK2ke3rhGzGzbv9NxRtk+t4lhJvmuHiDpbolnhb4h12nyATPPl2yTu1jkevsN3362deXoCJwklLoVo8FQWhdubNLmYK7wdfnSePia0Gq6bl5wVYzpVZLTPShpSwYHqMgaR114mEysCK2EiXZdHAfp6/U78qPKjQ8zOP47AT4T+imIaiUASwKf/DYfzbngTHPpgXfc2AETeoMEsWJZtXO3CHsUpmw6XCyFXRS5Bl8wE2sOLjM5F5bqeK/vco+URpL0yq74K6Dt3GKt2dCVOnS+ow1mnNrHI5IPLG4t7tfJM/in0uHhVszvB1MgitCbrWm6PeCy4Kk+yb7Le5NxxACNdbJ3NS2B+fvqvTcmiM9ilNdjJO1ETrYgezn8CRg6qLLAe74C9tL/XHiXFdlR3rpovwyO+wH+nSQVZB7XSI7Sh7d3P3d6pwNdQEnLyMATeuB3/Ryxwh1LCc5KqH2LspGImD8Bycl/QjD9+OtcfI2O7i/vsCaKqJcgMoRuiUwBlTN7m2+XmjHhXX9gwRfBlcHFfFDsvQJaKjoHcYBI/4DykcE7DEkT+iooFsGwUKjXmdW7aw8rVC6+EZbv6VdP8sTpClGdThsKOi/a4ROJP5vOO38+hb/HCSQ81587lELaZKGnWL+FP71Cu3BmNRTkh15CljNd7vXjvGo9/qPR/H6uYq3vR636peQNIfB4emvoN5KGUo2pMy/LMKP5Uw5uXA7grjbio2GakSN06ECxYQPv3uZ9ZSRWWhncZNpcX9lupOhN8MwbtOrjpJ4grY4e4xWtdw83djoppipJw/jIARmjcp7TuMlXVdXURxfo0x9JCKs2Rt7euApxZkdtylYMEcKrCiGX4OgKa3F6IsUAVbJ6+2oGl2kdlxON6imzXqMnxcjb3Kw7lPEtH/0d9RbmpL9gwHakcnKc9cxDp4vUoTHijl+/4ED7ijQ8IXuOInwxe5yXEonSvG9/SkK0PXv2uul1muRkn94fQeCU7TAFFQSva8KFbgH8rFaqaEKcLdqhLSthw21O/hNytsh7Ljqec07yC/m5JudpZ9fWPrAHUd9p1Kn6xn8LCg2NKSko5CPsl+ugXbYR6qVtngjX0E8CZioaD81Iics2VhgZTmhZlCqrsPIcu7s3t1yFJDXLUMMY/9JoFW2xt8YaW8VwbKpwSLEDPCgKw2OhG6AgRPJhY2B32O/ed2AD4bOXCwbqChHQru29Gr7Xjir7X/X/KyMqlGGWp10jsC11SrStLmaapY9vYRf2x+hKZQNFJYy8Pd6A/tqwZExzWiCWboQNFLv9OGn7n/sADyCE5JGqPn6omZKkoolEVsL2D6GBKsbP8lxMRhSqinxn5T8qPkWw2fruxugTOqvWYPfAoqhbkD9Le+y7AjrlABuaBWtMMfrZhrlGPtWEOl+A3E1mMurmly5YgPBmdO1lximjjNYW2ANVFEDhNf3ULm4a8IKZrrGBHaaMi++Ughot6F7WB+WywxGSQo5doc4Go1CcP+ugzlaeJNAn7Q6eIaJsb5bpQK0PTjh+lNQKPIgmh/7BKhlnku5UP/d4fRe6d3D7uVtDJHwoajwDg2dHuzKTTBmG1R4oKikze4KBv2GUq4BnmZyhyzoOa2VyAhJ3reL9eagWTpB07e/2NVohGG11nghV9ya785Rq8VfPOmIUMl7pLkZ6G1KaBj1+rLYCcZVagm/CNbwFJubJs47Wyy3w3bBSWiLAzBuhuk+d9MikyjglPu3x39JiLtL/1DfaPHjKkWoZeuytmUCJr5jDnrprsCEOI2avjNYOEpUUoowkkay3XzSBWU8bxRXUq6Rj8f+W6P1A7M6rt5+N6nKPIT8Au1qmiTHTU2EOYnK4ssaXH5AS92PeuJj1REnoNMIlfRmSWTAOP36yZy0Bxq05+8nllV/niFJ7iuGXJKKkMVAI13e2+O/I1vrlk3D2lOrNyRf4L/VPoFUv8OzRXYRadmBa66SSgdbfHHl0Uq9eUtrULlNzuS5FgeFjxFGryqd9WQli5RofcoLGJbBVRmz6rhSSL3+iuOMOooWGM5JkLv0bQpOgyGq5YGTjR5LyE/nQgZkOeeL4oFNRbQC4aXwyGwvIdY2LRI8fuo7dOWd6SEsswWAv5L4w/Sz+wSCg6g9poYT0qHks14KMbAiL0isuOQTv5AUBUlBvQtEPwpGCuzH2wfWD0R4Nf9ftWXOKizSzVG6USXZrcuGRqxjs8LgMl6963/2h2Gb7Lniv1jd65/WwWki9NW/fZC74ff86kAdV/sw+UEL7kZwqFLmOdmfd6T3fCjbC2Ksz1r4c+neLoxcgDyFqAIbwAAEp/tU4AA363AFN5j3FU166OEGQadMi583SlIKwLDvMwfEM+LwDoenZbXAAOrgAIw4/QsAAAvj0ZNVOypV+4WBV0hdynFkiJ/YL6jCHYDmLktQaupSUgaPwVprs/0z6VBYCTU5UN4yE1im/srxgnB3/yHx43yVKUxrJzwW29aTRRn/XEkOMxEdKPoTjOtDq9XJ8w1IvUc97klcxFT5djy5/zj1k9gMd3p7y3fE3QTLUv6Q5uE54ydKXUgzG4nD082Uydrjqb3WyP+EqvVmGNz9LBXu4MTAN46+EO5szWXWS0VaOHmkMSmTRfTI7p1vaocl4AzJMWbns4vdMzRBXa4dlR0inJ6MLZhab3faRMqTthKVU4fPAiWNF/F/WUTqyFPDtRz+zebE3SaWNPjEYzs2GAXbv2o85i7DOCR4OMaND+9ZrWEyHMXiE7sMUrVrgCzShw6istYASJ6V5JmWFc1IpeeCwXmRaF42qk0Wykm9I5bBGXJDdDrdJCdT1GnKGsYVwBC6UOWaMem3qL5oBV9CBWGpAq93VkHxS7J1uQye/BhwpwfsT/H5TbQ2qF/H98GsPXXMGSfuwwpYHT8uzFyzqHx3dC6cpqirS+j/RJLf6NCuK0cJi+2mS4h3dY3iOucK+BGLbfum/fZJN05cD9BWpDgQokta4A2QevyfcDvlN+8UZ4RPrR/x8TL+DC1HCDyQaSC/kbo+p1+BNgrQc1pfHGGY/jBXz8JfwKn005/aYtzbfy8sEDh9M68trDanXvlcSIaFKv/BSxbd9mMrUMKprSkuHxdotu+Jw+1MxiMgOHFdeSr/+2qc3Q58RjIcswjkC5iUTPfeiWRm3qYAH1W6jYcEG3jNfNIA5gCz+EYYClhR6SrmUmsLLqSVOUBzoGGOH4QctF5yF788R2quplXQh572dJCw21NoftXVdeJWhZcKMyOzPr1+e39GTTDajqQykvyxUE50d+fe3HiwVgXPZzI8rrwzTeShh3/kmjzKXwtQH5n2bH/qTYigSBTHUa9B0/oLVW7v3O6JzIcufDrWCrN14O9x2mOcYwPMDgDtS7UZw4IN3sHOU9ZeO+004x1T379fgjDFqeB3zw5EuPTPO6pd3Vx4oEBXtoQ7RVzRBbjsf6VwMwZO02kpYsbM7hRsJb9QX21o3Ipc1TQjXN80nKsy4AfFuKQVDaeoTnqnOTytfhzph4evpDn49vwMmwx/VA6re8ebXo9z2566o3Pj4qEeSeXoVDM/EeOLv0Dip6fnZ/DTktMU9slZglKvtG+SD06kcyl168a8UjmXh5hfPZAl9ck0+fH+bJa0V3QAxWRnr/WcL51HBl+HwWkPGiAP1NDNezrYzT3nRSObXD+Qde0JMMapLKmAFMXmfBhF+j9brOx+6K3RnewrOFM7Eh8gNfVkP8QysytV+yTe2hUPzfN2lFPMvmfjbmN47/OcSp4qs5qo4qXKD8Zt7wdghJhglwsSC9KYu79fZbsuG5RBXuTGsog26kJjw02BgBdy371gufqxeH02aNyMnGTpuhv0ebA2bQhiqWy7KbeZazT5jJCbpFBOB3D2QdUeZz6KD8jcOSVQuHmNUc8EbAMxK6EyCpf5MrwSvVDYDW84N2oyorRSVOac7OZk3skZa/9ztcEjE9Qd6MC0u2/2JE9qwg9WvhtQw0+TYYVyTUsNYCiauEBBhHaJOSnJgVyJ8VQ858EOgMGx9iUE9SW5TtNaEMmuN+O0f4z1ZJKfFf/RyXMMI4avJeuVFyrPULs1DxdWGTujZtIhh6kPBcgyxlS3EZjxMrHAgXRsrkmRQDH65gsZ5X121TfBtwl7NQibS6KGXuBWzXj+b0CS0EjVWWz4eVfDZVEc9Kzdys3KCE5/4fPQvsNqNDoqktaJfgqeqJpIsno8t8//27oxOSSpSoyz1NLxkiECXVC4NFrM22IPqKFIyIUBNlNIVM4TRVbPrH0DzYkw3eQD4kR7qkgQWoFBDVWGV5nvKtdTvMpEyKzOiKXKQ/XnCtGhgzs9hC6HdBFD4ay822nWNL6rDOGQ3iMLy3Mc6P301bwYTnmmQC1EcYqfSLhoCb8dWe5cM1/pcdqFMh+rtZeTc0n6jDGk+M7JtXrooHyTc9kurcCFsTXKijRn4xO/BveuyYuG//JEmdZxS6Xbce1IP68CiqMOUqf95BHvqMiJbSA+7kAHHoW3xrMYmW12DCBLdMT4D5WBZCfb9j62bCtGOGeiRfnzbhFGIuGZJNGtmDFLeKet3RvKXc4jdRa/8OfFTWjllzeyT1/S3CsevwSx3iCTHBXAj3T9JnCHmziQTTHX5iOTCH6NIQeYbbqv1ENzVLLh0BlP1dpi9lrfnsEKAG69yOhXeVBjAQqNmFT3HjRXPIsulMZ1P28JcF+mpXqsCKvn5VtgQz0J29AhppBQIJNQ7AAbv+ECbSxlmkQsks1WIqe0eoDPZMkOkLVG6P5SIAH6x2cYO4Sh/vpN0XTmDkDEQKgQwEDZ4Gd6bgj/cZbQttFiP0ZlvsVA8GpVRvjSkx59W/B8nVvGIP7eb59sAxT0tX5tbGFXgfb8jh0TYznTAhz9aaJTMw23o4nSca/D1iUso6ejy0fwjt4g8MH36CnYQOvfawutpdQrT9D7DRc0g0pLVd5V0Vm7+sYWybwCQlCz5jtFBqj2h6buepXCzF3g2t7Gc8TxO4YJo51cfuGSIhR28MfUFuPUo8afAgsOxuC2wTXAtJI639UUrsrSGu68gCqFhDUfCYSSJcFiUdshbgF/FtWIi8iTzzUQsnxa7rngQk7qxP/051gIsK6h+3WZzthO6Th2RC+/KeT3RMkPD7Heh1dr0LftwWMXIzbgq+GalsMyfk7lCLzN5xpOgWI5K6r+VUrWtNniSUlO6zEy58FwCxHetbV1WgTPIDI1IAariCB6wWveLE6+kTX0FNxtqJkyitxnkUCOEtW1+4rO9ZkxfwzY9B4xfAntvukRdT2GXJ/jAwg+LXmjuRP4nSou0pai4OMi99pBUuLjSxOY6thhbSaZ+JfKRB4iFTzK8CVu7cSQ1iuTJfOoJN4JELnv3qKqBKtNMpXcrueSnnuOTgyqOYnilnE3D8mURCoBvC/Ep9R+SnRdmPY28nbIDQCGJwC5VsrooOiG1GmqqcW6gyXmkD6M+qOxqeh0rf1Rci9zLtDBjKVPA9tdmdCEHKk1gXOrU1eePGl5z9gk82GzkFxOe1MoUzUnEFBFVsjI4YsjTtrtM7IEsDr6TXjGwY7oOwo6XAeONg/FQWcwzPLCJ/XmXS6XQZZvs2G6J0Us9OjMaL7jOHYConNL3hGxiq3xjKuhK0f/NfpIesKPAkHhftwQyjpRpQPjXvKrV9qubRCfh50g6d5s1CTps4YsfS9sIk96/8YUAdikKgG3gj2C6otMq9SHfDCdO4xzL3GJAqTlnY520nej80lCgyqriWib+PD3XHOCLRyfPZI9GQVmgp7JVp7jWDB4EIwFNrmymuLu1P3ifC9ndoHzWKbspMXeW4nLgvs49tDDEAr/gwAcws7Wqg8mtpxy3rqzqEPLFM7TPdaOMUFHP8N+8wbjOfbXRDb84MB3+9oKUCRvPZH/AE+YCAU6NRVu+7Niy5dc1jAEfx2fzKJIrdEVktVuDEgRUj/3iKUylliaOWdLBxF7/KkWtui+h4SvbYQrU/rdvo1FehytZCJQA1LNUIWYU7uL7SW4ODNbJqSRbOYmlegdT88WK0P2kgUH2MxYo2cRt07GCGrQSiVxMqYRV39rvyw40WoKlWSYW2YyxJovYlW0jYqkHklxU16tO8xoeFQMRNJhRXHLu0e+rv5f2kQyrGglSMULBGxrBrwZNz81UCyhlEnCzsZyDCpPWPTf89w+rhYrc2hV/KKq4W84YRmawx5KJOp08GY+d9fOEWyv1Bt9aVPJyFkGOfFiDx+omWHoLu0Wm8D0mTAMYE09LB17sVm3uwOecS6R8u2j9Ikpb+q22gxZA8oTtNaQiE8bjYIufALSDYTmyC5QAtIy+iS20M2/XgE6WIBW6zGyNGXNEjHOs4ShYpHx1JNfTA119+0bIsLKYZYKCJG26ZSJoyYWXeMhzMHBy0+8bZgm/iK156is1ONr8DDIsW54/TyEanF7cRPLl5uZT3hsPHxpWL5d9K1rmle9kCiDvpe5ZjqGKpPA7r0vpml6GxDJhmY7ucYXGyJhKvFVNbCHNa5KBOhphRKp7gSVMbjP2g/Mt5J3XMB9dkBc2BhisAcq3hWABMVREJN0q4MX/88+TwDYZJkbtTytt/97+FCPA/pxFXf42CypajzJ5PpZ87DsRELmFsuJALZ1dMoZXnyhxePXJv4tM+CAGO/3zUz46aSyvWHnhpZiiOogWY3ybr2FBCFSFLVYX0/8UT7DpelUolA3E1tOHddG6N0gYo4ktaJ1GgA5mWkK/mRdfDarWXNECSase4yQNe/LfZkyH4y2f/74DXanpBEUU3Fu0cNiKnopFAUsJ7cHPhencx/S+4x3GoOaCWQi8/m9YI4HsZrK2txDJVM50s6Y5sSEzsgqnqRUNfppwfcg+2pHc6H25+2ZR/cGiqA+SxVO1iRwCQvL527KG+PsKT2Lwbc0z8Hg2E67HTkBuQu5BVlgJOIvlgCNNLmusEgDKNbEc1fz4yN3LuksP+KzKT3eAHvzZhimKjpxSfshz8a2+nb5ga/LanTNzvxu0SAL1Vr2DDdNjT9EuTKD/PPme0qNo0GXkEAe9M4W23I20sCf/+t3XLOdqtm8lmnySTOQ1OFQg+t+DA6Rl+kBoBuBY2uB1jHgKRdSrjRr7GD+Ubo+KdaRx8kKbjkqaWR01au3HT3PGOYqGgygh50X98rDrVamOuN0pnUSI2l+EpSwx9hsj936IaQAsfsDUSa0oZAjJINkdMsP1foE2WEC1qDlBfq4me8VtPysROZqvEzYmbGy3+MlWpQ+TR1H03GPDEC6o0kI/zpytqKubj6lQUtmcqa4Svf58bEwBB74g/B1ZXOsjR5PP3mrSdxCAS6r0C45WjCjlvrb8Cu8prHuNqYWEm+EfUrmdPn8gGFwuR62SCiJp3WRycAv9s7btOz/Jl96uK7wleGwoibN6EfIHCQZT6YdgszCUVyuCpLkHgB5BUzyYb3+Trb1D6uYb1Aub4xqoYug77KFTuECGgtTs3Z2EjYLVUvShIpww6U5GD+rTFYkY/sKcajsgEScJiBFoBiAWBCgqd0lYAMUYaNgSaRb4gB0QexsVwUfpWfA9FikBGV2dQ/ca1ZGZARwxXoQLk4BECf71GTFBqNOlE2eM+aL8LTp69GTRJ1lTU2Ps2uviMIpJvWwENYPT7S4qiAgrQVP4dEkMmFP7gGjlVIW+euLXBGn8yI/ZX56AvDDgW+3INRu3b/ApAJTuv7tR2uBsqMkewobLcHLqI9Hs7FfYOKVtg+GtpWNC9rRtLtnm7y5vEH1IfjiSWETyTzeP1gqEtbZtcQqQlN0Vfapuo8HvtooI33HgLOhCpW45z6QkR/rBq4FISt2/d1F58fxqfTyGytV74iR32uKr8jFml9ztgQyMDddiOjzXkA0WI3N3MMUk/MRe0B07DVOBK1wkcbDuMdGz5bMHG5KqNjLDyOpPMZKz0cdWwe8vxuRckOwfVLik2JVAUCt94CxJRexnfJYvUda1Q7AX+KqeRpbzrspScy9ecCqswafAjRlhNbTnQZkKLVMp+rHQ9AgWceYWuQtp10oE4CF3XMB9mKnHyZb5FpPPELn6Qb3+dyck/gmubRIWNFO0PHon37jPF0TL1YpWu2hXH3he1krBPJm21hF0LNaQ6/z9naPwObyAT/PcF5hZO77RPU+/cUEbW8np9P9RbTUe/Iw7EWGBkAoQEd3mvYwe8kjKorf8E/U4H8oGPJc6In+d7kWbrsLbOwbZcy4OVj20o0t88HY2chv7Vdga0MUSr3H2FmC3xsPNa+hyWF8hj4gI9dTrPbg5z1LSTpb+6k5iUnOFmNGAr8vKhwiZmGnJrkZEqPo2kfFm+O8EOx5a/ad/DXpMoKfGkYsE2Oyg6HdUH9Jo2QETPPrTo2uw8/oIs3wr5fCAhi35HbeVv7ZLymPVXhemoR7s2+P0iJVrU92yG73Girf4btWttW3oZtHPZm53f2SPUqB4HKBK2DRXCph9dC62Ffyoeov8a4PIbtAAfmTqhQaz+wQ/t9gBEBkNLBGb/AUCt94LjEkFIiE0khuDRszV6xlTGRTYkXdRA8wGQ22qK5csR6Y7y3M8cbErnhBEmUQdW04qEVrY/1xgn+hRCFk3PNtnF/5J6xAxZyNiVr7O46XFni3PAte6k7u6JD9Z3MDuvVBEZmcQ8zLBmkD5flFs5+gd96ZPeV98DlOwajMWelrYuXsc26FXFLT/RC3YOQVkRrewC9+aaG9ZanC/WNIo/d8N9fjhW4kBxJgGMIdN+w/nyBLzLNmt89JKqBVYLbB6MYPXY/F1GJsTNX4TCaI+abzFZe45Zr5b7TKulQp06JyiTvYRf0orJVNVW6G7f9pKBn770i1Aq82cA4euZb5WpMGlddmIGjiDSjK/uUOuXWGIwDPBQCLhCeOhMDd4CDV7OTOk/p8uSu1gGV2CcJ+LAm2DjOauKwN66tFbLn9y+8YVsaLm4BoUBZN2tmmkAonenRq+rnYyMYuX082lH6CXl4Xum9wuRlScRogLohrbGBWgHMuU4hqUs/fMRmOQRI3gWqO9nC5824+9Yhw4cIYVEs6NSg+ukEb7z1K4T57nYQqoLfuzhWx6ULj3pwXKmlR1heaSNhPuXm6OG1tniGSQVjlCD9Clu+p5bCJMkYTVXR0t1T4qCRXU86gaJsPEg/7Uv7z/T7Id6eL2sybbOhEpuH0CR0l2qvb6q4WFE8zwiu9s1MEbgQFv6Edorn/9vN2yP1hT9fKR/OBs1T+GqLS6pigBwJQtho/xiumyDM6jVBBSPa8wZZWgIsRm+bhBTbm1F7pejqcrRjbSASwvw5MKY/wZHQ/EYu0rxh1XGp1n4CBKsi1g7U6VAlpFo3YklqJEB5B3zlSCyEnVCSuMH13HJYZ4Bp8mKuej4qOU0XK2l5EREpQaoxutg5bSmLi1lioFRNRwYsq1hphPs3yvfngAA/9MZi8bJdAACc0CKQjLoygAE9yzelrbKART0BNnJDuLxhTvr0iVGkL/ROhxNtrhUuOBTqt2+HeRO83fYl3HlNDRXHaaet97DqUXcJPrVjjdyhqnMMpiV8hf45VUCTuOdq6Zm3U0fy1fWiqhblae7Ku+D5I6ipoyxfKNpUP5KmrSX+c8tbpHS7xXx2fU6m7DK9HesG55qQKrK0k9fN5qnhJdcI/plmgcKAhiOfeGcpjOAKsc3FUmzlDb93HNVGJxjkhszA/+BR0sIhRG8gZbuAuByXriGSShpmlatzLr1W1FVyoZ/iiPP3kdInuNGizJvG+ok3fQW48DjtVfYz4OM4pQp4JRcucI1kwuRfJAPI+8e6h6JvVQt5xOb8uGyx4QoY0OEC0alpFgb02QtnJyoz96QPGMKD64JZj9oyuI1KAP9kkaERyK4tD5bLaC6BZ1PhibvxEjHfYjJVKEidzN9MvC1GwVMiS0bF/yLp5p9zeA63AIGAAfvADsABWSa95JvETTP45eUSJdv7nMksPGvxKoMLzOZO8EOHgALgq6FXQ5MaCAAAC5K0prk4SLMaEuVrMeVdrtSGDLziZFJAAHS4F3NLLLPu8ggiJ+Vm9VQKCXdYVnJjXu9RBupT/y1qtVyqG0+KpbJsh3KDJdc4JQ0KVwBBg4qCDqGhgIH3OklToyYZmy0HXPMylBoKGqkySnhumarnrTF/Gz0GdMRxP1e7dKXEfACEUGXXlNoRoCZ1a31d8/kCXnvm1sMttL4bEAsoaea5+UT4vmRM2sP4+I6lSVDnQ/BF4lrOD3S2VIVCqjQ5eQH6QwihvJVB8Jw0K6JmZWS38cClSfzaf4x5+5PppUPxtm2/F6+AVsbchS5qz7uPod9qJS3omjgw45YpUrM1mvCuiawPrOT2HGkuA3J9K5lf+Iynv2AlUlp8SREQGWUkN1WUe+e7iGnH+dqMc3IBOosDxfR8sDKe6iiYLyTD1yKzU8Bl9BpC3icRbb/IIGU2so9PZVV48T/sAHp907DRDa1WpryrogxSEU2G+BFhEZnZ8gk7K21pXRAbWA68w66hPaOPSEvtR6bZnQRbXgAh+2e9azdvCndgkO8g6A5uvzRNSsctLJjs/Kj2si7h1uRjEkLxIFfqnE8RLepP+v7/VhzSrdvNkMEh6bEKOPnDj2j6mrPy7gPNxydx1BK4CzCq8tSsZqDE2t34+RT/rtBIUEGRNDhPXwhDsihEeIEIQLDpykoZVvPL3DucKdWZmuOO+cUUy0K/ymlyqkKAR5pQBdPQ0Jh5qmVxpWDHT0bwBUbbXKTjo30eRahvjYE2fq6n+6UWQEnP0bQ1x0JciTetCwoChQPnHuKbj6XZysDz3TZ22efPauWS4QmnIm7J3V9kMeGVMIdbIV/1y5w0m1aNwLQg9bBqPIXcWr1KFfsSnVMqUWGpm+NKcSfbrtLPy462VUWw93eZXiCr/abVccxyyFv+SKPOVTQUn8FgCgoUnTmiQPTA7TvlrTJ/U5iaZXmnALM9oDK4etJPnOnyUewH5Q8UVBwZl99aXwdK4kkSQrwh+GCntI5teTsauEhOZ03ALMGTJiC8bXYKF/u9Q2j0ii9H6eaEZYACu0x5NaVVnO5Nv2WWT2jo4uFMG+3qP8+dq4Ms2JTZfaOrG+xH73kLGwzW7Sa7UDumTTMeSqxU+WxsfKYRKqcVFUM98Mr8msMH/Zt+/P85Ih77mHw2TS60NAnb4D6JzluFnjV1Wmao6OL1fo7gUOueUF1WZgxu/5lzNmq5BVSyHJHIvDK/ZjZ1PeeT4j/rhZDci7YlPLQKt/VXs5X2OyHnPT5JcE81vnhMA0a5xt7hijfEOt0kNWOGaacmsiEq7gQNT5S3eIVxx4DVUhHar3YWVZTcSLlZ+oW8S0K23D/x+MZtyJYjSgI6A2zE5C/hiAWLi5gAufCyhd+b6FrQ448KhnVzB3ppmefUBWjcgr08QFE756wktcD/bX8fN3J/sAWwR36q0usuAAFly+RNkfzOHzunkQE/x8owXCLl27Vm7ErPRqtwY7YolFE9GTD+2O9meMPOcvvXEyjraQUKRjsLSITqsEXTgOaqsdj3AAAAGNVibt9mk6Z4heT2rRXZ5FdPZpDqjN2rW+Vk4XSGRtgHqiebFsK2ZjT8JNdaSRmySk1s99joQuLOmTaFX7QgEJQAAAdnpVO4oQqxq/0J1tsVgRr5cqzL2mLRqcCUrz9plDuqbTzbv/uWG22+f9kRJccMl2xv3UJa2uB1Mtff1UjVjLCxwoDO0S94rOYn3/2ItWVhsBA4FlO1iuiwFIGZQ2c98M3HZpN8O7KYNJwxnafiW8/gnZqz3iucWr53oIrngYzrcgOBD1isawPlPt4yXob0RbcdAKCMOYmj6BXuUDM84Djfrf4yQq27VA0EOKUnD7P+p4BOCcTV/y3+gPhthqqKhn/a+INRKjG8TXzOXa1ln/3dB00AABrpqaI7X9qz6fSoNhTA86UAtCv0DxYQMZedkLpIUBJ+OctQJlKEt34wDUnpAlNNzTOYtzHF8KYcPGrD5/oqrlOQ6pvCn6sHLcOBoZDp/o2lOdaaKrhA9GaTMc2KClcpYNrdqeW6LhnB7HyaiGgbU4chbzxKJRl/JM9stFW880VbU+mlP21LDk2LcXijY0PDazfbtI73ZHd7IFZ52owy3PLBaW0EP4KPrKB7e/LUYqP9uOnJdxPN1fcqP1+rRk6swgmUEihM9gQwVCSDW41zCUudoDMhgNK44YrdMTNxn18Zfq9S1cj1m8acmr531UOp7TzPxomCjPgDMJ206Qv3cNuB5p3aJPxDHBr1iqbzfTZpRjkWkb9p1Bs/PjsKP068UMzWX2ytV2YIvBpJXLH5aq0Pz3WjMxJ7KUoNKWl5eBcBHLSZAab7Jl6w2z2CLmxZPrgDQ07tSf3WM8dXfN+AGjzQpSAwmr4tb3iJ6mU1QDnzgqSnza9ss0Agivex/6BdxoAvP5vwkSHejrJq4DUmQqG8ejsOB4ZAQryxAAbCWfvtS8YAvu65KIiccoOZNK5nQhibtGS46OfEjqCDznMWoIW7eHkjTIaKvyozkh20E92gu2gPaTiVyKKCa+aNYAa4PhZIlaRDghOV5JlRlYZa8NkTfFkUkfntTmI1ki8WJg99YxO8NyftOuY4KqFuAUueiVDPpjOJFfHjI2hwGF8pP9YTx9SIPdkBJsoEGKDANS/dAS29nf932VVCjbGfaMmr1Pjjc8sO8WyO2yC3oTWC5SxdbniGA8giS80IAHw5lpX/rq379DnWy6gi+sEnDBzBDqdSgTG+6kWkRafQko3azFBcd3CE1rM7T55k7RbuUZ22DVHcMt7qgXAC6Q2Dk3F68YSk9ZEshCAZ2JR/A2s2semaIORzRcg5p/ttfVFpqBBX6Xp2r0mQn3JvLfbjq9L3nZa6to9sHgze5Le9WAz8DSo1tJ/o4XFmqFxDsqEuVD/4kWwwsxTtUgdNHgpkr5PnwARn+8cSIWhr/TLm2bjePIz3Y0pX33vHISm7Tjs5U6ORySchsqGLDBGyfgSyvyF212vPi3EDGxqX2vWueDdf5QyTI4yLUrbXW4yVH0UKHOVtdHR/d38SR79bEJacpY6Vo1Z3TesmalMasAtm/T6RU8IWJewEo8tNpoTfgQL0wkeyx8aKaJMd/iyaVda3UINmnn34Hbal+q1bJebWkGNqB1lZvho/Xb4AUox2vwYoMhHG4bB1pC0NnqzOCLJ854KsVsdxjSIntgpUFfSA8IW1zqADHQC40GheNAN+elIxPqX+ArzKhL1inwS02mfkihCN3Cd/FdWg7nM7PHbNUUbvwMV+KHRqYopZqg3cz5sDdYr8+owMo9jPEDHDfIa/U6wb372chq5ZopJ48JkHJoEQGVJgSceI5W0z69+uEqyTq0hzCnt/6lPmPZL77d3UeeqP8EYWcw+wZxdgjR3g7adYvevstifYnwgodgv99oDSrRzpDA8P94nwiF1EO/QlhIWb8QO92mPu8QigTSPVMhOUgVTmOuz/HoqnHB0/22af5IlssSE9Ujc+TC9v4tjkuRc4ZqZoLQKL0NCFwz6+K7eO94gNtYp+iCz5K8G7JIy7cBFF2tp0TrAW5DHF/etvxEIbRZoJdpvBylzFxfaQeKTZtI5uUIfGrrMWgX8nb5DZf9DPpMW1F15AsO2k6izasmx6WPr+sQUH54m9B490q5BM+SXGkbsiIzrX5Ty9tLOig3PsuG99kTYwUcG6cnNVsY5CDrGBed7m2nWUgvjWuYF7CBMjmyBN6fxa/hKJ5k0fC7RFJR6L8YpN56fbGpnQIYfJxfpvmE8qkAb02pNznO19Hh4br7zMM6inW3Q/DnqaUYSLEh9t5zMglnZky3aMB8SMCkmN3NVGZ2exkV89bxuLUWEv100dIl4OFQwpiSQFbDLS4epsTubMXxlPMaUIWQo8wK5L+oab6yQ7QDm6WED8Ccf3l7G/2GwWoAHIv2kbU0+XGqAMuvOXbuxBPBoLN8YfIx93LTikUSjhyc6mHoqxrO0htqCZigZ/XI7mYy+4cWztePjKWapznBO5l4N37rVoX0r1fHa5S6lF8Yqz9hqppFo6yLph8zKUo1YSC9sSL2wElXTaqvCg0fJVdc7enSuUC7Vm5hcPEOc3cu/7rhkoiBX9Me7VxFyoFxvPtQqPpRUk/pD4+JVucEArLVObOYN3C+qqURlqnYz9ozFvWwChiG86zfxxLiDE/LIjzag7SXqe21xa0Jjdrl2w9orLf2EFrmIrfOXmZ+W/eUkDXFvN6Njro8QHsCoHZQo+QmQIGQsals0MVHeUlNEQZyZYZB1zpWk+iasvCdfFRqPeMSJ84GWPPuMJ0M4sNMfvCJtMjQHF5myTISd1cEsavuK72zbGll3fne255JRtBwjFusWQvrtI16OPmsyYr/TwEnslvyz+urevngg5SRPlulH0Ax+ETMRlpJ5xx0ba2Uib684K2OLHbKc2qXC4BDf2Dbc7yifZe9l7ihBw1zIosiX223HcEJiL/NPSpnq64Ns44sIU9sQ7u/JhyglABD9dnCat7Orw/b8+IS0QBiPSMedouvCzLrbyHL42fJe9B/37xhA3X5fnKHX919vmttTG5YUIgto8bRWcVyvfyHjRr+Nxdzo987gsvcJwYYKzwfOuo7aZ604YS0FgxEh1Nf4ogoTDwrpJuzoQSP/+Q2VOa3fmXI/l3CJHb6T35q2x8BlWbQ1jMY4SCSyIo+UWrN3pUeDKjWBM47MgGxamo58Q7teV5a79LbRM9hCchE2cXVw/zwg9H+WNgMdp1u2Zx0gUKMwn92GPdCCFXG34w2VHnRqnQuzvLQg1Evqzhlj6Cqipln8CsPGW4ZfEPgcVGltvj2xTYERBzcE5AdkkLlonta2/Bx/jRDqvkG0uFwD+SqY1CAW8Fs+CYekf35FMlTakoDOwIPzwaFaf9RqGImdL6gwBKBkBm0GGlfVfWyBHrsFak5GaFA4dAab/iHtbkoz5C72uyI1hi3AAWQwR/yCLs8qaxP0/ORHRjvZf1pqqsYLLXkwDNg9MhN3FsByFf9EF1+9ONHkDcDusNWh6o53msL7EL/OkQlJP4fm6xw5WExuZY/5K8AqtqWtxX+8vrvz7DsWgmhmLideqKdK0dnrktL++W1yiVcXGfjzxAX5DjTfpJzfLlXvff0iOnq+3FFovhopTMNV0e4lKv2+SyF6vkKazHIeKrGPYLkM/lvGMxoTaE9wDvo/LnvC34+UuIOpo8+Upk+YeE/lNtdYRmKExADTpVX+0ZkPzMz6r22m/wgJ6I6rJ30iCTCAPIKa4bKoqeoFZFXTLDW1uzjmYtEG4GDRIhB9SLPEtJ9Qhcl3XJ/x/+l2XoqtMG6q4yAsywfG4ZXn16yjxkkcMuQKAHly0Sndn9FYzqsrW3QEFKcuj7ySwTpCxvMKc+1b2aS+/kePfSKnOEJWHQ3qIWVj5//I8bDDOUSx2+PD8sFNIhHExgwhmneXjJQzZUxYV7eop80Q7GEmjMsBxrAwCIz/gNWxqNbJipOxwy7706M942yswFPrrbFYlGegR+1CaeaNJ3H7ooKbuYQNVZ89Pw4z+mSs5Not5NIGESbWz2oIvmEXehUoMdI+0IF5KdMQ02380VgB1sjhfy3JZp7sgXUROvV09hGBDSMs/Scron3kHZfmXdQiUCBdcnRRDNU/gjjdpLUubsCtIk4cPommszbOqJo7HAayo1dXBYubup3RAtPr05+DlvTH0dL0qQvpKpNS8vnV8fwaWiNivexdMu64rzvMVeRw43CDhlWzJPuge3triNymHBTvgVOk/cpAtlW0oAx1VvepkLlTgQxiFEyRvXHjpdnB1uK9UnwbWUTGUM8O3wXe5DjoEwCPaJk0zMw9U2ju3a7pevhMle6grCVrR97u0hXVoa+UfC3NLoC0bq2pTpaBCX8kGsJJe/mgxIURriytN7Sh0PZ9WL6K7aV/2sB5iRM3ncb1n8qPeamo2LeBN8Eu3s/ZLqMGXTZ/G07v+NVmw5kOuxA/C0spFozIQ/id0K1m+5xOR0CQeI4xUETURLC5evO/7o3YpCx0yfnEpuOhfZ0TZqGxgYEkNBvk0gTqQoulzKr0dfcMD640JcF84f0ZiNz3j1+Nd5tJh1CFPV2K5nUL10At7Rk707KgN478FrRDWr5JN4f6hMBhTh0YvMfzES8YPLNyy34Nv4hGyldTWTW0iWCPoMCX1+Wz8Sc8DN27GGnEEpBNb8ASmmfgPoOAU7YSy5KBvkfH9qVPrT6p1hHe2ZH51cEj5iZM0TBMnI2QMdqc++AJxL49GcpSQh6LuLT1kG89RNEybek9XxchfzBB4IaiGLFI6fs0nl45zPEAnJRSoiyVa+OlcYtvz1JeLiHApOPwkEu3YWSwis+25KUVmgZdDn+s8rXMDNWcmBDoXYCAuIjWJFcIoidJKb6YePJovJr3F72ZE7zDoL2otaIU08UvMoE1MsNWVZdJyBuXMpT/+TVaNgOOjpSkNZ2eYGFx/FYldnJUd7IhSWMerCyEx4h7XZAz0DjskugoUNCk6l52uW3dZx8R25BzRX9Ec5FC++mzmHmewsHcxK1QHIUoI5OhPfQDa+I66cNq+m/mos1SsqPr20AaJuPva8R/HrwcvOpFwGgIOgZm4lxzbcnTk/TmwoxH12ymEM7BWVP5cfdub0zYHrMKsrIlsxHn/5u36ot8XH6DcEnbrd6nuPql9I4FHAz7GTGIKJ/ZSnhRgF4jG0XP3/SFnoV7thC5YE84gNP26yIg897o7VrvE69OPL+RJ4ZxFHxb2oSMfifoph9sSb9DA/3MMyZmrs5pLU6mSU7/pnHWl6PnJt7BXuqWivNoKx0HAwEP6Pu8ueQt7pJGpaw7sZtNltPjn+bZDc9RQ8+dDhtHky/fnt13DQQ4QP9h4ab1UuNNSoJYNxFXTMfxqrkPJMB2ijHJNGcVGcwjpb3Nfp6vaaCSCEpftuaNW32F7NO1MTdIGyMeTPMS7CzW7b5QWbHzRWPk7RWEcSlbLncW97JL+6kZVPx+fHHJPsIv7s/bEaBy1I5tvtkXR3t88W0xIDJCtVIqkj28mHksIyov72xdjfIEsIQ6BRRHPOfkpdrERRIwjBlur5o+caZ/Rz72+b/Cdyih6hfeiqkZxB4TAI7AaY2lZ3s6R2YY6g+U+jKT4cqxeUGLYEfXfpFqduQXZgiZ+AUGnUilk/4oXOlBLT4tkIjT1jh/0PolqJgsn0QnHlJvcWv+WLo+Hid5o4tqfsNIhTKm7XiGcaRhVYh2XSlUSPmV3paFx7GIgZ5wbmNjiGkKFphS5IpjYZtpFTGJ/SIecT0dNp0yGaf7thEmWGiVfrXIKyRjClNtl604KyiGccRv5smxFlYEIxnlqLgoiXQ8UqKrYIXMZJIERcs3zoufjqWvwmqYxr2G5WwxoC8D8YAsq1rtIj+RS6DFJzm1bo5WzC5/RttG6cg0h85rJ9/oFdlfndz0Eh50cq/iVuaBo3Zt8ahKRBZ9YStjVm2YIICFu48JvN5GeFsCFW8rctky/NZslrJk/BdboKGWIrC6ROy2qTohPTOUNWYecWMNwCY5HUVoiwVBKtZfqsX2ettC93AOszuo7bxSANnB+Iw+O+LELdzwf6fbmG9KxeIWsfGTXU2n06ObiYloxheDPVFmNBXHvuPXqfNlGPN1NP1Fsmku8S19+fGhOqYOIaiK6HEY1DlOKYP+RsP1liIJIxK45WQQVq+N2G7cuEwqjUPVXZ6swB59rsa5NvwANO1UtjVIbfHzrfeeRi4DpIkYFTdFi2UEuWloGU+9LO1Rbry1peN3DOnjmiEaOrSmOjB3dbvvDKvX0o8wri5Da3OzSrDmq/Ylgpd/dbPwwvTxaTAHE+mrIrqnb14IV3zKimRDZpVjZ/F2puPxOZ1YvFu+/4k8DxAn+EhDfrwC6nIHYvWBosh8ZPbOYEKkLdy8SEEy8vIQlY7chZ7aFGAUvOwo0sBLavSuHBZuqQfO6yO0419sVNZp972zz262wm1dTPKDs9egE+CJDv/AqhvoEpYK2mJuuOcfxGGaDdVbBD56EyqDzJ2LfwLSK2mo/Iqs2hHcoqCb5XB+kDoHyJi35TumJUq0BLU0HmqZvC5aKBPz2spE0vGh9xjSyLMw31QgeYCovVj0MykIKtpE/6BmgGeNJlWT8YZqz2h9zmXgVPAOXob9tB3tNjrnPOJSznYuo0DiMF4K6EwIbmSAypGY7pwQxfzPXwk/7Ap2lU7yRPf51SioJhggwdS2xrEAlomMHEFg+Rbm4NVwU0VMAbrY0L1WcBJgcA8HaNnOGTey/1R7RvJ36yFOEmM2bIvmQRdRQXs8hW3K53yODHgeA1UA21b/6GHahMosUtJPWIKlqLBg702sAHC0almVFoML1o3Yru35MGej/0SgKNQX6/I4FFCQroNyuoWz1TNP3mlfLb9lZiJup+hFvGrEGCUFqCtdyrh/mxKqVrgHdXKCoGXzilYsGBvRFPMzAzqTUQ5MPPVo7s/0+DwXDgmnl57HT2QgM36jAvwNskXBLCwGxHrz0CgpeG6G5PsA3TUrA3Q/GzJ2NErRwR5orarxli5iYFltYHD8zb0kwaS6wJQDk4CmEcANNlOrfdaib0+gDfAKwb3KmJIWbyfNK/LyB8vPMpmMPoTOSp8TUjRuiwTlIBuxu2bEU2xVY4HB+WJ20XaquyFat4vxbni/1bphb6d5fHLAifIujdhifVqqCvfbOb7KqgEJRWilBssJk15bUDYuyqV0pT5LiR7DY3FWa3TCU0nbtR461QG9CbYNtosbDcK1E5d3JAJeH1DGN6Fa7tl2V+tz4dwKMBNskwYo2j6cX+XkE2LIKsML8HK48w+0Cmoe5SkcXhrMC9W7X702yW4h0uL+qiUw7f+dn3npE39eq+dn7pwzFnwYq84FVVwG4Eqk28ckggriX+dwnKuv9a42cMLRlmvIdhKtlP96S4Lqe9IIRjepCZrf8Ti+crICXVfr/aDIZgADyb6ONQ++oq+ARrRRpRo5To1CJcmKoldcmdYoe+ka42Fn6DgmOhRjaQQSH09IXFE3nWzbDkZPZWgfXKfPHKIMlEXslGERoM3itNXVLZHRoHuCtb1LSTEqy7mRsuOSWZP+yYCskcCav6Z0bOxUi/XNpMpMhoSPhKbu+6aQrAd0oFnhc/d1t/6ERj77ySKoZFJmnJC1WQQT4Fix2dGhu4WcH3/IbShz1Z+AinTvtK2qpEKxpH1MUogmP7jL9nL9eB6TUNo5lo//jf0rsI3FwHl13JSKlVq7RiVS6a9ts/UXB1ils/gTjRoGw/byFCylpWSCs4Gscj9Uzd3zO3+ouk0TA65BIxvoWjmO0A5C4Ozyf4nVUb9NBBAEttiaWUI4jCABw6zHNEdCJNokJ9f2OVTt9fnxmDKgPhyTQwug6jQ3AQRUVDEcR7hWNVw4HClFsYZ8NQy8tmfege9bfaPqgktQAxcQ7dNDX0NSGTl6Bj7eqLEUztoZEI7vUKjKUmG+gjVxK70PgtQ284ncAsxALyj/qyS3j8UnUtDC2SJEI2fXvPaRMsVM/v7+QtLhbdfhg08o6g/pe6Bvubwwr/8/qgcpDYIPXmAY2Wf1RMcdd5zmYJhl7d67/wLY82AWHTFwneCeCkYs5IJZqhi2T8ZIM8zeFCyDi5bGGm3uBepApFTBOZtr3nw2sgbJq1vp4o12bf/bMgHftms/w9BoOxkxPZZCBAAAAWw/GsgEJaQyIjGdqGgdwXfcjTfkZ3v8LEuPSUEtUkBMv4+h9TcDKBzKV4JmjfZDqYG0GWng4edxmVHTMxHiPRd3RS6W51+n7Morb2l8flnUXQzf2/yrwPeb2GZgT0QAAHoFu3BXIqHQd8s6MDeBvuzHXzCp5jxCPKrit9orx+LPu596Cpj9o+wsS49JQS1SQEy/fS201Fz3PNWxKEe0ULfHfB+CzCOR6N1y2K9+NS627+2MY2nouhhyf10Gcqd12dhy0N9/41Av1rET4it683BmUAZIDGIDhrRQimGbSlZxai7WME7gbiDqwJNTa18aoNyamZixch7JMutIw6g1EIjdxsrKpcUQbVqxuYoyR63oCzf7fTj5IZwoa9bmRVM8sl2OfZxjD0QMUCvzdAam8roIAD70pYH3J7EJZFGMNuIty6m5Hlaj1DJ0wwlGQK4C9XNvLiFxqxWgdjGj2RP4XrP6G2DK1uNIRMbjx2s18QMLuGPuyXnJyCBItDvCB/YYcqe0Rt+Qn/iEGqe8QmWfo5hRI1jjCgQDQvcLRtn1YtxVQKJYp4Zbg+MjEJRFb/4OiRJ1SkYsmcsldSP67LWTJRN7BieuuUXoSoaKTP57QlftKpXNCCmB9dLWLx8bF2Fu0DfXzsUrl7WvsjQhdTJBqqMQnj2XDJZ/t3kg4LHJyau5KyY8+muSHtMIFSglDdFMxjxltZ4skRjW8gFRchXnGnDYqvetWArCYruZ0+IMHiVJo1/uOysUYGeuKXaRr1NK/o4sgHqbLwMQMGL2waHckcloH3F7hUqIXpp9ccZE0EsHhB+CWW1dDFNwHMVyLlrxUvqFJVmsHnC0icSrh9bCM36HbccmB5CKvqktExd8JIdL9NvdigQUXrJddMGK1a84nPhG2rVNe3XJ5ufi5uRrUOUhWEsJeJxWwkemm/y3vGNbUIQ1OloZqJtPGy4gZeaNzKqR5fWuijpRYzx+FOlVElt2lu5a6GxCEIJGD7JkjODGnLpDBFvUww/MjGBFqyNcxcwVuGimlevNtP073LDo+JaNcjJuWEkWKh+ZJumHUwdCCWFGCNQIQaG0jzzVBgC3mhFa4IHkm3OsWBZJOXdMbYPlpiqvzdsEGNbklW4TGF/WCSmWhIBjzsjnhR2DG+IecUycAe62rZaznRaZMQEqN45LZsEi4sikywJ2Zbz5Ftt5duiX9i+SiuvRv1RuW0qVQshuFDMuVRAQYBRMOUOqbXWmzdMfUBnPkaFlYOKi7w613P3rnQKDstJlRi7LRUVGT2JE0BKSEMWCeZa8/nb3LgWRgLluLiQCmNZRVSLFn9doqLcB12LvJQCYNUlIjD9LRYAmLcb9uIqChD/gRD8cFoAm9yR/99ufUTACDvQ9mYgqge3eD0Qbky3Sm+Y6V2qy8j7FxrsF/pQd66e2dg7q59ep1S4jEcPrnq2AzNeNNZEEKn7EaONbCtm4JS+GVbRtsOxXW8tdJNigyHGhkw/5Pi0spsOUj+d9f+S6fxW98JduYCe3dReg2L5Mo32dN6VJD/dm+ZMiSSDqORe0CTK3aOwzX18jKmz3Ankb32ioeul3iuT1eqaDVH02TVyO+eCuXNAqPKDsNiDImKLFicOgNzbMAAAAXUKLqprN8+AlBIfxsBgXlQjai7boxlJdlFPDyOO5cwz5pmKY/x/pKBdsb4i3C0Zg5wJsNzucEBs+Rl75oton4sI3Pff3otWRhrNbYWkM2t4hULRMBh6hfxgxn/ZGSf+0B1P3SDUXxGAhbGIW+Pq4cPVm9AzbPGfQyrf1SWKRCgYbepkw95/1Yt/t44UpE9Y0aai/e9BFWrGp3cBr1xdv/TPHcYOreO5BJZqOiOpXKdCwAXSEBg3EvDg1wSB9UABDCCyOQs+DLk71aK1gtSMU2WiRIw61hek65tb8pdxUxSPFZ/ZSWMK/6QUXW1XGCrzot3sZFgG9yS4JlAEvFqLT6T7Er1i2iu6RFzLBGkelNqAlHaV43N4G4HGyc3GcvhKHsWPWhInQBCIavUo6wg8Vxez4FPreNNHeFOn/8O7JH1hWCKHsIphcHzsBgecckWMB3Q4QXgDnwyqwZt5RhD6i6nCoCvGkWX+tgSM7ktA2yQlcpQuRM8BkaIETDMy+5JyE5fd4MgjESrWfVGioYa6IPoL7jnOLqTezl+9gYpySnWt7dVqtt7irTDtwYGiRjieF2U9PUw1ygRgLrwZVhZkTy82SDYCTChDJ4LLTFkMuv89Wydj/DHdeNt8PnKrrPsXdryz5vaDNHnnPhsTkmfEBRpnREF4nJvPqHnFiwanx57Qopz+IpKJMuHXzYuMnvgrT/U7AyL+uTYRp4l997OJjXDscEIONsajgAkPkTAOo/BdDld7PiCEoPJvcqi1clvpy0gR3nzpYUcmhn6HL3du0JMTEbm+uFeEk2c9ThhQR2+EQRvT8SFugp7HVaf0yM8VpViLg3VIRySVRWPBoDlMCFsTQ3UP9wgD6Xn3tQt0XH35aD74vXSbvJ4aGgOxdPWfjoQnmSHA0xAJvK579edTuIrLuK0hu0Zy2KGv8AEZXLvfMnvlpkhJikgAQqALDCQmTpqVm/l/B7KBHOAhjqxdRc2BNThf7s2y62On2iSBwvwnCj+6soe1lPYdyppm8dDP3kPyRgajTTu5KjiWbuqYyRaywCgEVa7w6mG0i0otGQ/yJ0YHVnR0h/SixRSRYADd+q8SEC3UF0OBaiza/iX9czvP+T9HV6VgG4HgeUSX+LdnWvYCkpCnolOKPRnw95Ii3m3FPRq5cCVGTZ5vrVmMRLkJbBZ1M5z0t9fuwH9bFdprk4y+TIspBHTDd3fdjtLNOI2GGaHQZvhk7Xx6ZX2TFjrUsofXu5UwjJ2W6RW+OPZLsckMS7+VIgvT5MkRYeDX2VDlTWA0Jg6WNNmJHtt2vntKfuk2TPGP3xzmQzoRVIyVUf7wm0sPhcfC4z86coR8UPJtcD29chkeBBlC1MCWC9NIuFSWWGPVGnF1yDp/YJB8OVRat2hKQJgs7B0BzUIsdb3tpizqKKUfNspskdRuScNFTSzp0EXYEhn8E1isED1rlaWzsGeSyqybKVCnRQgX8vxhIvJkJARM36hX/TtKqF/kaCIqspnp/EN147Y+Lbc3eyupHtaHwoPSEppM9aTv0okRPzGjEfRvITMtY7OVX4FQbblKYxfQXc+7maSch5V2G9Qc4gE6T/ZSQP7RKaF7uASuXcuLfVe7keJL6HIMkbHzKComTUoIPrI8XDl9I1L3lz6b7bAfxHCYhKU1jV0pIJ136ZWyDMT7ndnVTTg+fnPIQy6RljDE334FEu7H/HGRy80KnusgwwyON/gYLNjt1X33e8oYM6tYgEGdyp/M3u/a7gyWc4bzr0qeAmmZcipXkNZQ/M5ycCQ4nSMF6tt762lbw0Qe0SzUyC+yH0/oDFk0U28s8VSt8NUSO5xEuz2VJ7GMmFFMpGkdNw/EKZGxfK9An9XqQAly6lZmTtrDnslDAkslo6bNoKh02w8BcW3xV67RrLIk/KoWVjEL17HvURFfch4NqOhw+QPFJCTxisp5XQRKxm1xgSDhAPDkMRJOK86YeM/W74e3ZSTx3cJNOc4OuByZQYFkWlObJYXKxWJsaKI1HlumK0BK3Pu057JNH7H4Pn2cmaRm6fOwB/sbjMiZprJts54GsI64VE04OV4pJy7FLOC94mILx/3ucJLa7D3+9CFg5Fi+fiWQfCbOB6r3FO+3+htRREZ+6q6IoS1sz2OGWA1StLSJa4WVZOZIzK2xqkGFbR3M+6V3hZ6GfxMn6ytBlmdWiWlNzZtvtcpeb2lRioX47GqkbYgR2O+iGXCZPtpAU0SGpAvlW9N7T5jNJyqnDNSYGTbEfTLa0HeJerZgHNsg4DDes/82qPvQ6greIlnZBpHL52WxJuspGs3OkWvuNwqHfXaUYkQnoVPI7PLmsi7W8/LLVzK2HyjXpLxnpFTjJUc7g+VoMIQksEGT0VzwhPgkt3eG/VdfaCGG052Q72wuHRJys0AUmuqoqi0kO/0vs5z1Hf9uMjtRf2cpHVCwy7Ee3u8hCnGidcAhtfOzJke3LHmxi4+vicMVGzk2zsD6j54o4MmHrRgsnKQB3yf2sfCZRZoMaNWEHy32xnQJEUxnZQE7esMj9Q0Cl570FP77hGmC6abIrBqTuK4fZ6jmaR3x0dOrViPPymHONBij+Tcg+gDjrHklB6YnZJE43qgnHfn7cgqVAf7SWIZEj8p1LHxgGfUP68S2PJKR6f13TIj9p0b7m29AIApOVAtW9x01r8w7nUEjtBZT5r/goCUcqQKHUV5X8spJfJE3k8+pDbcm7aGSDSxWDiZPuwRum45mNQDOldK0orHtCWTseThlquJQblnnf0LwGllKbuPTeTKd+2Ruuy3DK4Fr8fl8Su09KAkgWrbySNQt0tlVom7PXBb4I74AV4ihV7U4q3XRklR6js9Lr+e4dk0+datYEpbU6pxcpHQg959K74/Qd+dktwDdb/U8iVFe6vAcbQ6pjoxqmLgP6ZAcJP9Wj8SsGaOTxpRPjstmXTbOWUQHKZDHU9THZ4PGMMRqdODvVTFK+tHyABonz4t+PEtWeK81bGaglDxVi878Lv4xs1MzjuvfkL7hyXkTMeUbEG/f+9mNswQZfcK4ncF22X6DF8Fg/JnepocSLHOBCkXDxXKRRl9izfG4qqQHQbtSnl3JEjoMKo0aiNUahYcrR/X60frhjEdSC4Y271EEpjeKh0QIfXeMIIRxxn3/PPm2Qj+XJsxbpkjBp0pW7iXK2VSqzbCj1tfA028kAm4B4Nk4VkowMEGBqPL8gwVI+j2LM+FansdVY413DtsoLKBE9t848pIjciubMA4oEFSwuSfVtJWF5XbGhi13wPMA5gOZUMXHXITlrcwDiUPrdfy8DBhZ/1dMDb0YsDcN0AG47jZNa3C0EcUvaNvLiGqkVaD3fNGTeIXQctuv22OCezgZSjmQ8Aqd2Mv8LjxgBS2ymdt3UKic3QxkMVUjBm3SUKjGylfdbuaeCZhFgE8KvXguiklQnuKQ2DFXhrLpJcBjJ2l0GJLjQvQkwcQO7tFouY8nWlizeiAMiVLHyWJfEILbAogaq8RnabjT7SBgXi7XFHG1SVMjp4bvVxJTYweuGAPJetydZ7cKM0Q1YRPnVylqDqLvjxxwCT+ofOlNSwpNchB3+uxK7xFYKKq88c+xnRVCxyFplREiAhw4WnsvWlLQhwXdzPWuZkayiV7WPdABNR6sLUEDOWVrZnEmSDGAAAY+M9/02uowHs04AAAL6909b+hj6IpAAjVtxNV03Ec58oL46nVLIf8zl5HAPyexpYt9M8+xcO0S15TVuej/KTPnQUOByU7xa4XCvnD+c+BNRl0+SNlXQZSrQV24LHKXl2xHVQxh7R2Ze+axf2ZGAD3T9jX/1cJB9e14Fzh/yaLzIuDRIF4V3fV42Fbwd9ugsyf6CMpenq8IuAql25ln+bTILDWUjPmc0nuKL2kcPxJjUmjfKw4Ao21VgYbYU6r1OIwkfvJ6TcOZaD9HzIxzi55lTVjCTqrXv5aaOGq4hCpREf3qD1hjEgVsoWH3f49NW4+bU4zc144hPFGGMedv1F6EIElkP/dLNjGYr20BdQKeTuhxao80YhIsJWB/oN9dWLQmM77e5pz/jW0MQIPftRRoBxCAW9lGJrIgXgIArZ8sP2ky7bp7Pj/zwCV8n0bVO4OdRj+rDkowWRAWKCVxQAFUMdr9pCdlqTTNe8vjZ5N2jdwUVYCNVZ+WlqDSeEFh6xaI7lnX64wr0lGR5tKshVb97ot/R1D0fMLTl7Ilkq5PScSyp9gu+1aZrWiUUx+IjovKaClNzmsbtZqZY4QcNwOzdAde61bGT+XxNt8pdydpcubMan4TR58oWLkljt0flTEoWdzXq4dcZ0etkaDg0x1ltlmcbw2FgRiQLZjOa2xE60a2PB6NYaUSBZHOm5Ct3RWmmmRwkb3Dtv4aALxgLOBCSf4Ld9GHTDLTZJsSoFFvdbYK/aaMJgSinQOIPbR6VQZ/iuZCLYemo3qZPeCvSB7WB7VPxNCLsxxtNVn0vlE5+R5qnUoWVE4ePYphx8GNlHHWxg8Da+mjcyi6rzgamxiWBei6pT4UMbZPvrK25R3pnoo1fUXSgIwPKakRXZfIHZt2GErYVbbF0Amj0mDpr9G8c6ukjLjJazsHcZyFWNTBa9s3GZ+FUdA3q9TWN3RUBGF+QJ1RBoAmANrTxJavjswEPhhY3djC+oEcrqMK7vqYXv8Ly2422xPT86mig8UjMBP64GLAJ5eEnJC4bj9o8wKDpAOdCC5ijvLIKDglAh/QXiieCrQ1+dC/1rPyAL0E6GtXoTAXc2aYp2GreRZ4Ccok7UaCfq36s88pFYsK1VTVYTKAL6KIc3HwNFKg+I0XTCIoj7vy6CzlsP/birD1yGDFQ6nQyfNK9MlT7XuqWYhOLiKrqu/jSmRqR2/gudWtmFvuoCc6YlXECdjar0mtMEOM9tjwQPngNmsJ5BPU9vx4DdZXd1ubdmWC4CYCjYyraw3yyPevkQy0/8vmeheD0EzsL6CO2mO1+NikuR0DKhAzULgAozSNy4CPw04JFIp72msgr+Np9ZYCE8hGpZUwWwffNPY+RBCXJDuIyMz1dkYwRVIKSk9BHW8bWZ46lC94PmFBhc3jVy/Daym0hkTZb2taEAwNQZ9pGCIowqy5JuUIPdBPfR30TlfH1D2CR595Br98sIj3WlVCY2vcCxOxRapqHaIcdYqdw9ikqY3l++OKlObnMfm7Uo5DXVdmeI4+dtD8jcA9yAcy5ORG2J/GRPecKKDRw5g4VKBW1rrWsercvFSmQ7+J3xOB6/8h7z1P7k3G5ZtzU2Vq197aYU5Ufu+g5BNviA6wm6xxsWtNA2Vk1fvYJdJlivkm54HwkMKbjUkPzjwOvswjbBh115PkaOLod1uXcJbPDQPUi7S58y32EdmYY3psN8RMMUMgif30FEXAQXpG16Slg5NrQ51JSxkw6fr2M8foK1Te3OFm/Dtq8P7CKx/VI2m/GFx5L3zXv5faov9mnZiow/Ky3053jRHx1iqkjkIDK28DUZOiHIrVDVHE1X+YAzmacC3D0m6t6mJbjzDdrjOZYUsfcB4sUI59cCdaHq7zSRdj2Vy19LVlrJI2a3/Yq66UG58p5sGw21lL291kCddNkkKAMCXP1NGK5ZnoNovnAyXsJRFXZZl3rVd9GKwg6iU1F+xZgFY/pjd/lkBqIeJkyReGylQOqntg3+gRtxujSwuhFly2YUyJWzA4Vv+JlnAu923hLz6rQOnPw9kzbItFzzAF70ZC7VQODPMwRJpQjquAdaSyjm+8ezo2TzNkpdTVmEKls4ZSgjSTeMYIx5sYfzlL59N1qG82QNbHuQxusMtn0RlKVp5kXK01WfSPu38DIOzZ0mN3VLenuAr5wx3Z0/oQY5E/4T5hDGPY8Ix3kk5dO7FAUVnqiH5YELET0++5ZUdONKxOiKQNJGP+Oh/VOeAF8M213tsoQJG2R1MX5U/zavUqFuH011y+880mhX0eVJTnCRZZF1Sl8DV9hvnccRPFvDSqRPJf85SEnejaUBHkVR6X8snCsVsnr/LqJBTWdM7Fh+lEb0nvZ78GKLHsy/4LbPy79aoHb4eBG8h7NDFXIX2L4fylxAweR/fGX18WHqL6s1ed+7gwhXPmrAcmjhudS9X33hUIm4/jJxzAMDgxezDMlaD20IXXetVeNkDmTizKs0PW027NJ/9zlwvEnM//7jaszbTX+fG+hsfZ6Ghfddq4U82xjT/VeAXiI5mIX6xdL8W592VX6pvQMchgiz7vBwrzfY3WOLs9jcAlNsZyO0j2OIoxobUtG5PfihNRx+xaCPh2rYOoQuv86vu0DaBa1Iwr7SeMu3gwR85m+8ezo3Nff2BWwYpwIrALtAzmSKO6nAdEHNsQRXJ0UQIJaZKdisrNCJB/CpVUk+RlbaA5aoePpFTvWmczuJ6VJhPGw/hqLEte1wpP/h3cTjO3/VwbcnQeXO1zGp0vHVZwpPVSEK+48tDJS/mUTS5dkfEnICD89DddMXJozHxSSFCmC0sBK4iVPTBteHQwdrq6bcxtXQcl5L6vqgACQKl5XmNHCNjogXEwZWhbLsRsLzZLLt0xGAZVOyDvvLOu0qZOgub6XplZq8JyY9R0D0s3YFL6hBNTUBl5YvxGoKkAV1l94zCKzKYb+UOoQSO6nqTsJrDoLXLZ20IbXyrnYjdYkuYkfBMRqJpfYdeNHJKYinqd+YTIva6E8Csve96PrtH0+Cbq52Mt0vrLO27Y3C4SOeR9I4o7KTbCc5D8sH4VRrihL2lFBvCx5U/ZOHahtVzNVtR5+TLuZb8Jq7w9cyy80Hn+LZ5q5xRzrTNH5LvyfyObQ10znZgqVMFUYGjq3bdzJ239unW7VlddMdzHyJXIGy2h0ZMQo0h+ksiLR9VuMWrhvRWdtlGCj4gghWzR6ZVuZjqOM1FdWx1cAY6ZBI/0BqQFSk1o/zoYv/wwcN2o+BGGyY9VGkffFx0oBQpbr/+Av0hZwl/oYk7/3/3RpGWWzXeb8mdJk45wVeXxt/XEacy1Dz4ArmQeIqD2Ygw9XV55Pj8pSSTIcxVUeZ6wkKn8ilKxddm4zF1cy45P0JdDdkhnGNkTaR46slauD1fvGVRLcrQC3ejjwEPwNkK8cKiL1XgcVumh8z0u/JpFaui2RuTqThI18gLd3o/t3Ah9+Uh+WP3BWBD56a7AySLrlO8sITZh1G+V5Sos73KQS06fDWBPLblrX4PgJomuhUzLSF/Ius68ZG8vI+V64JQj5CmN45Q4+MhKOsklqrx/mgFJP13TAYmPoP7NGoIhFpgX+lL6phX1uVSDB23zJCBCbclcDrVzq/FcgDfKvfiuDawGvIK6T7vNXMxgIcgjdF8E38unFSnmDuFoNKKbhbclY+upH/BW2yLj7LdAVBvqQXQkpvlyp8XqJaV0BjvdJM6YZ21j+j32/9xBoGsyzhQWaM2nG+LDozTdMN+bmfFSUHCBI6SAFYjjWnZinK5ZbBndz90PI1jF7pICY95a/FXPcdLNO1Go4V0ff1xUqOTMtS0FrY/uQ1JeQINgoqwHSHkxmeRn3PVBTki765tU1coNhfVamII6TBEPL6RZ4vyNYIHkOouFcrVkv7pbWU6GHwF/iMicS4d8GrutaJQc2aXjNVliA2b8ZZi82+mOUfRuNsQU4twiwJiM01ig3/92KiFownfY3n5Bf02rHHFCVW/s1qffqEHHgzqKEtjBANtSE1H5bFnmvguigZVldW2LqllINZGSd+cjlJIq1XZnbkNazFrTJjccvVMWeAHwLJXFyuuWFsNPJEST9QkXv6lQsvqTf/+NknVQmMK76GSNpiGvdOkCkGQONdv6Qfpx/EnwS74RpmzuD7Kgv7a0CVhIhSoA1tVOwqloJkX1lDg1voFKXMExdRYvjrNz4927TotNHToJ2mQRVT7FY8PaSutNscD1F5EWVm7En/v8tg9Tf4vam8NjEH7+8bQ4Tv4E9SjvHQqoA9ePRohvb9Vbq20x/tl8ayfwmTRlHEahKeEyJtMeTax7mWwBp4eiqAlZXk2Okd+92OdB+QRsPonU9sdkxlTd9xZKPMfy5DlG0zIT9b3lfgAEFXc08WcF6uKs8brm0k50WyR1df3uKE8Db+WffzIUOKWeXCfuUdPFBecvaeiLNq0ENHxYZMc/EZQyvNehy8DOW+ylU8Xoz2asy1gaVqOizsAq8EOgVCsoHTe/gbwQSjvdOj7zZQNUcz9tUM1JJG60fwAvw0XwTCzHXMjqrGnVCd7NedJlPZO17RQ14Vql01kQ5uOetq21opQ4Ll6wJkYvyI2/kMOX5v81xDNYIvsp6LrGVKPzwuoJET6J/Qq806kughCmjhe5d3c/V0Pe1oNGNVpzKhL8tl+J67M68zKCteCJPf6SmbbKw3HYi6yAZurexrPC6AAAAASBAAADFPAAAAAAT5APeNI/s7COZeqt3W5hmf6WD+C/Sg1YTKlcDaxRkcATGhZ1/VSgySPv1f4UP3yb3A81eGqDj+vFOEEgh3E3aeGXqAb7Fs2WvfUmGQABtF1G0MJd/UFVz6JR1URsMmfO4ymtX3y0hnV0YC2hdYTx4D6iwKO9Ks/4TMphv6SIXVK4fnVU+00TTq0oO6bNRG/3Virt6Fc/J7BqphQ6JhckcbjegBC9I+TA2Jw5+RVCi3iJVpymHnIpdVReVYI0CzQdQ+6OVxXMn/WmhVJlpE/RM3Vw5sQKGOLHaKelldnYAJDd1Cl2ftyTSl5j/tSgLiqNvr3mCQGbCfRExwWD+ZExev/6lev1/1x03Dvy1nS+YzNzA0Hz8wLicEgUrmMFp9nbD48fBiE6uDmzKS13J3cCc0fyrwab930Eiw6GxSH/EsXDM04pT+SNAdG9QP8+VmKz7AVLLHPkQlig4pq+Arnl9SYjAY/2OpAg2UdkLj/VZtTPPIePM7IiZYF/Rwz2SLCAuRB9cl3d/hpbtGC/cwO5rBUuvWsba5QpHF4aq0tQcEUjLdnl+I7eZBF57JHZpDnXC6ReuyAtmSx01OhoJfQ15OdLrkWcgy44AAAAAASWIwAAAKqcFau3onfNObD+qt9Mqgmt05vI4Xs+uoqhT62WlLjLgm+htVE0YLyos4Ix2Tq6yD5SAn3QvCIXrKeflZk2N/KRKyyTa3pvNqBv9nra/ls1FEpzYSGkhfA/bDRU3J14fw42ZLuSjCYInB/4p35TRQ+/nXMU+aRDtcAAbPootg8sLiTjXdgBfPpCd25n1P4TiPoGe6pRia8aBPpLn+1tmK26icinjr1ZKZ3ss+OYzoC3nX2JKwfrlEOLs4q9IJsH9y4NYIJZRwJT/iVGyCFiVkwsMANo8dt81geI96gd0SvuxixIBuhHQdy9GBj0e6AAAk/NUjpJ0p42XvX1hSwLacS5C+stA6Zb6279ghjMJdjCCUPBbEjQK5NdaojFh0fN478J7C8PGhQiz8PZ6hMjCzS+bM898Rp6+S+wiLmHAO2PkI2X/WXBiWD8hJnvquvUyADXgalnqukWYVVJFf3yMdHDi6oAHDHzxxfCpQRpxtnNrYA1cmzUN7XdzItK4mSCAxBKZPmbTCmRUQV6ld2QMkv3gJHXq7Yj+R6qdJJ2r92xvnaXA8ye5fuXwMYALZYJKd0QlJthsStPb8bdlsYMShS7VZaNIOIYBZBS49BFQgB5XBo7LePRwO+paGd5QEnuDu23oFGPaQzq2wrA2KwLdHs8pVV8DA4IFAGTs7b4qBWzgOHR401/2oF7+4S2GpO0PkwtnQ5A5N94OiZk0HYaLhryIyKgfjsEPifoBQkiszTbTTBtR/jutR19JzNeqs5gQq97Q2h5ioUM+KwYo0T1krgKi3j4EqOaZ8aSeXuZ4kdSKIa3C0EWbMtQZrVfboVsEeFjoTc36YYCss/0Si0+Ktopx+sCKjJdK9kHvHTfhh/QkjUzePW9/74eT1vBLyl4ASsKIdu/7NaPXJiHOmuREXnRQ2nP3lkPnhN8bTIR8M0XV71aErtDB5aHovhi2JRGm5ACK4qL7lhPxiH1jvAnNIYmv9VEU2aDnF7TQOYOJIQ43ZQr4Wb9bgjUxpwOMp24i1XcEUlz6jpffL4q2Dk7yU6XwppRyYIcMBPSYvS3Z+KxaQZ/Gl4Z8Ng2LMpx8QdOz+KA1J0kVkHVUZdkIzPnsu63fkNU75AoJN4vRqnMvfXnfbL9Oa0f7/ucGZ59bZAp4mZa/5roDsDDeEd4sn7yzhWvBy1mSC59wWVoEPcRiWYewJ0/lWdEJMbw9EHCHofIguESUh/G9maKDluZ1hvuC6KJPU6+Ljz0BuWKR5IrukV+9i60FMPvSOgDkBlHyORBQTa3G2IYueQ913z2fuwNOYjCd1pmNDJHWZAN3oAuOsJcUVuQNd5p8pTGWTkB/DAmehFlsDJ3edzDC3gEEAyFBPjVm5mUBymYF7KXh1JKdlyOpPLFA51twA+dWkwkpiE01b6a4Fa6uqH+rlP5DIZF2LzN15RfThMqwT2ANouGQrDexl9ZP3XqF2XiUJgKHmtpqKeb0ccm56NY21BftPvxHep8Oj4Ti+oPzX/f4Iruy9iVoexFdmXFRbZ4sfSvmCfh4jIAU3cUXCcGF+1AZx5xnnn9meUizxcxJxDa0RXiPmKQFelwTRqT+K/k+eP7B0Y6KiACgv26gGLX57d1lrlO15anMYNUyVEE9GGMjDeyGXkAKCl5MeM1i5jid+BBxf71oFIA6p2eGNJ/KW2GRZx0oNKgRLrmw/ZQwZxiHPP5bfnX7fQ2lf0koGGCY1kvEt9UJr0B852uH1/bLgazz5uCQG+Hm8hVfq5n2oq2s2lgzbYDS0vfWZCl2LxTGdAzfbMeQgUrSFHU98SZZVqZjl9Eg7hJ2NVFG7CpYq8zKdc0ZSWfwH64DuU4/eCjaC9xyWjD32LKCP5Zj3GbonBbLb72yZ1sE0yIo8d8xECAp3+S1WFhU5lyRcH+swUKnmqQuWCnqRpyvA4r9jgU7jxRTD7YOef0HIt5ty0H4rZWtjVi6UVTjcpGlimtrUH+0DuucNUWojOW0WzD+j0Xx78P+ENWXUuCuc7M4zWoN+Rs254rFe8xn/TA3fYKKgFzEMTsUMw3q5X5wb+H7Bb0Poshwy/F8jXZG3yoBlcbhSrrmiREPtA6FdcAZWKhDgAUUmYqiZyGmCQnxMNNoWhle6hPA5uluJjJsp7wCG7dMTdeQTd1StdsU43lj55R0a4MQXNOCFGrOUg9sMzPReDETQ5QbhQhoALb43wwXVJuS9XW/6n79iQD7rh2o2YZaPNFh52njzobtiW/2qqxqQIec1SeKPF4BX8em4N0J4dSdZ1NmLweObHFBeBqOT9TvQFVSrbXy9wW3H7lkTh89LR+aajIGpy1s2KP3N96vqYE6QA2yV4fb2v95lXccFIOCm95XWexBnxfmf0Q/zQX47U4b0xc30cvd4p7s1yaami9szII5+33rKAmv/iN1xT0FVFtDyzZ7Bbk/tCZ/CoK7Tt/T021VoqUsCwPk3tQ3rEaKF8KfGMYAydM6u9D3z8dirPPp9F3vH0ijny9CSja3Z6jzsnUmA75IDraWGXa5mmOZioDfrvoX0XjRwFKUZPIGmd5ncZq+p3Hn6OqYeuHEIH7dUsc4VMNKOL9UD49fHW9Clj4oY4PfFAeclwhs6aIthYeDlvypVwKTRVXnC07yJ7d52GT3LASjFvWQnH+Nhq7f22+j+rp3RiTuDS3NAYCfRoq/2euBufo7AHEOGlbB7b5E/0ObFqk3ndsd5ErD9rdbOgTLuFO+Rp4rEnZND0vnXBlKuyiqpHMnoFIkGgbteOlOQJLqxgVql/4gpIRE8Ugdt4ZKQpDLy7XZ9BlmvyHdGSb5Ev7mjVVouHbE1kPKErbsAtknB2LRC26H/IIDIgMycSBzTLcD3rsH/kO+QW10Mmoq/wXzT/rvo4dqQP45VWZTDNPk9LNI3h8we9OVd+6HJ5lKi4e99OAjnEIiTRvd+hGMxSKeRxMgsC/KwuHFFa5twx8n8bNyXS4aHEWUfGBcPs3/LzE+wc70rt2CjRfdflcVP/00bTfSJDGEXylq70hoQD4KiElA3C8Uo1L9r99/fMcBK8k5ikmGNYfIzalZqdHkITsSUaWmct6F+KLGU2ogQo6e3/XwhRk4N6p1xV5IR9zg2TBMYPACx7XV1jmj4fllRsCG0PXc8MgyU3ZOnkDicEhUGKGZbxD0sDLNXU1IxgIqEyKf3lyWISElG2CJ5W+pePc9Ff4UzjGrPrD8SG1lRiB0HjhNNhJ/UV/ObqDJbXFlcrxY5WnEovZBkofbfZESu7S34RHsTQH9ISrCgOC2JX8A8HG/ult1rPsYo8CvEiO2uZ2wQ4YYk1MzfyTl0sMQ6i/574XV/KV0t3riiGBcIhKxAnbZaHMltakutDNYZ+4nlMp75L1KDZrF0RuWCXfF6BdteoAXbErflSBkbo8OoskYPAWdgkY4u9LcwMHQgu3QaBK0aeecL5NgqUDTkA3qIQ8YXEyWTeIsIKRPVAFpfM52NGxCaHdNQiIcKZbZ8Posq7RieB4FKa2wnSVxVRmV+xrYzWT+2YGRfvVMKiKQmUfYqj6wbsigEO+SL269iBWMHUF0hoHnPeo8hMGz/NLrYqKHbv8xWt/LK/naY8lpBONhz62Q0v8E8AT2nGj09zWbMSF8t6UtU0qDeSxf90Qn2+ZrxYf8JNYgRcc3+ENvevGmRhOD/9W+7ITZPZG4pKfHcZIjcM/33bg/V8UJuh+CWhpJpuoKW5vlbcSr0AdtyVZCKlOGEDYw79moUsjHVZW3/v+QsmRvmLr9BgDnvdlNUPLMzOsYzF+I7QV/GYk3hgYCU5l93M0BzZ7iO4uDv5kYmY+VwR81WkUZSyKGjmHL2+D0tKNqMhoqt+JTcL/9KSM5LpCjrYnVc2T56s180TKSZkbutwMjmwIjVTFdWXINIZpyiZN1Vez1vlXAlNRpn+kGBPV0Gynm3xXmAQzV3te5/Q4kzwKeukTw3SMpoGYCQWw4+qAdXQxzDmTHlYXOP25nvlzkASxv+g9AaQSEa8sgLuu2tIvd2LLbBcQxyZck70q5DSUGJ9r7OcKxJVxuMZcqLEc6GVTC1HFXF2mixv2ULdfNOPLXuxrKj4t0Y/K0vB1V5kTqFC9SX23BuuMS0jQR6hhsCvfS+ZuQ7MWokORH1pBH6eyHQa4uVC9yCH1xyyrmKyRlG9wqbv+YgPPUUINpok/ZmT9srpA2gAVwcSrU3Eo/jDEL2s/7/+HOFeyFJlg+IawQyvcQn2eBdIuHOYFK4jBxVOUH+1m+JQ+HsSvfgs+yglaDvWZe2mfzbOdX6VcULHUaYZJC5TnhNgVSgzsDd01uU6iYPOa1eBqErBSjymGqUx0rthjO13N/j0kvrKrlcH1AJzUFJUk2ZCFbOuwYPZXTzJO41C0vLZ+Z5nuI7cCtIeHOuGnuu7bI/bGs+XWz7zsCkQ0q+UquHVcRyrMF1t9g3ii+/2/aqUwOFVMy9vp1cM4onXKk/w3nf3EUiOiqKWpCeiraiJY75Bm7Bc50uvltXFGz7qMT6g5uXTfcwWlvPTvM40PEc9e8Wx4sk6VsHAp5LQ14JL1gDeoe/tpHwnt+SkNlJUEkR55bM/Cd8I/sAvxbub5Xg8ZZfbQmZZ2LM/rcCB/7g2GcjZBl75d2LCIXflfTwxZEbUimtVtWys8f/1KDmPT6EOdazHEEOkMAsv/RTp+f9slFRPDSplkWlWp3AqbxRGDq3juUO7oD9R7u5HYXFjLgwi80EUD/nap4LiYR16AZ3k0mQ9NkHxKWRDuv8x63Rggy1sNJZySxv5nayQGB+ishv3gZxE4mVtbk19y2MERtnU8kHDqZ7TVeIomWjqmUeSDAMjSfsUIM9uUGrY+JJgz+DZEXGBF6ZWiWVgOmJ0UC//mzAiCZQH4G9Gmcvzd7ZejIG7K5vN1JapIn4JiFzu0z0vczPmS1UscySJZPzxny4FPBjkiDEChXvOxkzQGpkmDSRN8z4LgBDwrqTOMWs4kpXMo6wHS6ZBQCRiC7i/yLhgflb7zSk1X4QgpjAgkd51kWLuG16TaGu7xGxu4nc0Ct0/oc+bnZU51JANokSdCf6MGIjuM27hFSUydn0RO5JHse7rieszxpjReHAheZ+/J5YVqUrx+fLG6/CfgqvsLa8y5IB9+9QbRfwI4lmFm3ozRHwocoIAgB8vbVjJ/wblopoWpuC3nF0OF26HaQiH4vzzT3ETlg3GD/pW0n3FKRpTqeUI25cszdxrH3EvFKj5x5wY2aRC6wAGj3Tr4vOPtwIwWRZ+BT4542PYCqP9dBwR+bmFYwMZVW7VdDluZC/R+SUUqZEM103cx1En0E5mMU6REBr+hbEqcRahqPMYEMQqBCensN8YhIxg9T7jJ2KCakp8/EkLOz4mWXgBJE8JP6LBPKoV4TKxx3Od4SHmZrLmq/b9vs7iscTUKDMr3s4EOb6RxzfMcl6XNmFdQH3msbkon0NDeoypMNTvObXf93i6+qgecpyrqrFY3fcYuETK/kOrlQ7QguFwfbNCoFbJnTUp4XFLR7ni3ELrKCSRwoay5Q9PJJGemPaJrvDjDlPXKN2iP5GfBWahuYvL/TalOIljT7XoysTov2IZINZ8qatMlMRDN/sDtWbphOiuzr13hgj2n3+QaLdMiNZMBOOj+hVhqWBBEN2bqmSs3f7+4ZRxWPd1tjLrpr4/TCx9JWlfpfnplLxx4/16iok0ay9NTkRGUEq+hvGcq0ew/z+uFsKQ5qPmd8ub/HWwP1nLLKhBZO8AUW+Uvwykw2K6YcOa5ieYAvClauOfOAU1MxzPfz9pePzaDmWS0MZMTk2XPj4x85g3lUFY2KLStUQX0o1HzTSu7OqXCu0t6OOXVUwBZC9ajfgmMaTebIhufF/jVfbD7F9qjGYud+oKNuK6wbIIdqQTevCie0bRm3HTN7Hmt0k0SsgN4MTLdOukvwAXBGQy6GCzvztvXHwo8L3TVsjGqW23QGt+iOCdqIt6o0MFKDjzGAyRXUm/9ZXHWEZ+TEt7L4dWvfX903WcSfbpBGrhcKynrIWAypgFa4fXr5zWUj+kl3KQiX/Lg0kxrOqa78RtGZvvyE9qKjbDoJvNwltyqBIsatQ+mMApSRhdd/Znht2Zt/lUmIjGfFZpZIJX6yD2LeTzooIXvMIymftwZmSMlDfK8n7An8PHPigMbYAKXtCgHD/t6zQRtQSThflbctugcXCE4utTfSNAFcjNqASOxrlOIAQMay7F5OX8OsgYw4772cBrofP1JniXkSZ8/xt9iigz4Dzxdja+YN1ULy/fqD6Bzatxnb1L7MICQuWDU/FScrtHzyQb/Lnz7UfVTe2iS7i8Yx46af3dzzTG9U7BOfpBbxAgX24cPvHFo8JMZlvJnB8AlB3wLT0Sgz3TDdu0U0srlFJ6GkVFXzQ/V1NYFvyUO7ZwuQwZVQVu4l3GC0jMnZ36xcJpx3JV5YN3s7mpJsg02NIC2pJNNz7GqhcDb0zwAA5uiidA2o7jFXWlNKZaB9Qb7bvhXGPUmAlZ0gTKXFrfcqlmRB+zqMRytwdjCVp5ZefXc4zXwA9z1calJdPPpyNFN1lkGRQpmZ+p7l5v3zZiQM1HuzlUNE/0acTiodA02/tkVsLo6DdLDMIxeZc6hCJbz+6ibkKvrxF4Rfp+cNzWM7Px01EA9ZCN68aClMfolr56up6fAa89N1+FyXD3i6D3numfqPRNOmqC7cc/yCKrbuBTDS52yp9Trk0kldaY21bcpxGU4HwBn97P8MwUwJh0Hsuy39vbt7BOFkzrTFHfsFKEG7Di8CECdrkErRuv4Gkea0CjvQZPH3aMIiV7Mu5h7+yuB5Q9+Fv9MW3NFrPGF9WPVnFoyi6o+HVbKG+iXzc0ItS2FiTvzpx5524R29EbKBi9LlL1Q4DgU9+txqSBdp1fcakMp/oP5nXjPGkLEEXQKIlKQFdfesVJuYqpZ+5ydKZCt2+nmSA5cYO3KlhbBeBA/+hca0GoWl5bPzPM9xHbgVpDw518XTeNfW0SuGux1DvCwumqLXekIwIaerCh2fbch3OUz4byZRjp5uG0Gj7iR7C6GdunNxPq5d2emR/LcG7DGmQsq/bu63qJaG8Aqd3mOS/f3fGcMC9S7lJgphCSKaCpX7/vpey8x1T97DkD8iF+G2Bwn7E/GiWR5JEqtzoSEmOI2hGeSsBxHCBwOlcvOqg6mggrFmIllUje0tG6GnTZ+pTcsdEO0hsXGarBxZpSg2Fp1Ld3eVnD2Z2qLCLhBJ8NwKEDq9FvgtJ4dNf6N05h4TtgwwB+ciZAe2yt0bp61aoSgXzIkoqzjfzCAX7epP5/dAMW9Z0NiIeVp3HZckngyPS9VVzGNE46v3hMjEPApiZeTiYWaQxJpAT564wGxKOZBC4HowTQ5pNRKMLqJiLnxnVgwGtiFA80UbgDpf9G+XjWsAMJPXS3K0HbIYgR3mKveLiHhAo7K2WBsMPzeaQytGk4CqpLLAQHKs5A70j2cmlfXVjGappfsSZZMWWPp86z+BjZZzG7EFfEz1xBC0KHKzKXD+XIok4nXJgd69XmfB4ADZ9OiDujGAY4vJF/ujGTIMrus+rvIKFY+2+tDv0ZJ44g2kIHc8mAyPLRLp87DT1QLK5VW8gHuCGWcF8Y0srpzUSjGdi2YmhnCcykCXxUerK1Vmz8xI7LSCztDYVeBbjJsz+JonSMVKg9bulqpjitg4DOa3ozVKrG11OsYxkx6L+gY53DyNR31JDcJdsQ8u+wA5qr5JShUUgdAhKna+k+eGACzFnA1Cg+a2BW9H/RV/ZyP5mh9zONw1SSLcDB2WiAb5dIo8Vw1Wv3x7o65tn81W12821iG6XHRcesDDky4Vl0hYFANTQycwNfyXo6G9fyrLe21WtCwXbG++Td1QOtvt0uZyeGmbofh7gNqjh2g94lp6KDvWQQnT91/n4a932rLuKgbQR+mfwatld5H58YAt472YDZPI4F/qPN2QH5+ij7eSx95gh+zZsaSE7SSzefERKG1fdaNjUL1hH8yELJeOvAebUKotIezzu9PPTN4CjFFY4XxSxY4BvPRWmVh9eej8WkblavW/foynlHKw/FH5fg/2TxT/cx9vKOuWrVTFLVmFm0x37sHsO0hr+ZRGDH2vOt2nI9Ia1AAxre5YX5OgYntU+DuStI6bqFB6kul7C/d3HemLnss5YKK0ZJ6WiZa4kQmm0xhwB5hcWGnP+49zskhynHplPtioCw0adS7krTZNh3csQ3rbkQtaYBONpZ8PRMUNX98QMmDh9T5Nr9uhQ58gr3xEti7+63GoLT4ViLQcD6vieBOKCszfUZgds9ohbXoAAh5gbswvMtxIOmWVrkQWmwTPnRuKhTS5p/wAVpCYadYoZZHCyBmwzGNaqgg9Mz48U37IOv7Z92LA7hkasHyiFMAZMcvnys9nNgB9+JEWVMTNmJBgcwfJWn1J7+XaU8gCWSqWpL4+k1fo5hjMIHF87Irx1KAa8wGYTKT2T+CdkYlCDXCHzb6nL6cxuGELikiqIXye+j03TUdUN8h7CmZH1494LUEAMGJKR33YEswcc/3TWg7p/ovSaojeLsgZyElPwe2HOnyt3aqcbURWZfASXfWaGddTAf5G78NankjR53n+94T/5ov/kbPCFdv4xWOmW11EFntuM8tgge9F+QrnnrioET81jBsmjxLHGSwkcLYSLf1xnMqu3U+utqCkjb30tyTX3AR3y6AbqlRwPx1a3spdH2vdOgKvGQSR3BHvMG78BrtBASDRR7E6+Zx4yMQ0yPicHyPrHCtZgXh5fYA8EXGCScWs24lVzfY6Ug9x0G8fOb+nmnIZ/Qk4bQmuaHizcFIDBRGy6OARFFuWTpeZ3QsZ9rqhNE6saf7hrFST982AMyQ+4js+THyG+tyvJJYzl72E1L/DhLFHhb5m/NeOomlvd+g99QQ7HkxJnbdKliXmm2naJAdfCT+B91cZ9+SHGCoZaeZjKLHSQeGmZcAqGPRCrzj7imB9M/qNoRenVcRe0St6dY4jisSHDJAY8X5g7Blc+jHtm2KdlMcOgYnFwM6piPuQriuOaegRe20orZK4m/lTWmZ9cFjJIAu+SHHMhTyOgmatqz+2o4A/pP0MLLv3X9eULJp2ZqS3x/yFH60UidlJjWZGq/vIa+4/jn45s4zpFTr19XXHkm9NJGZtGWMNxI2xtAsEHrB2rdq2P1XuW6/T7UxuFjnfLa0yMNQGI8TauklwHbBCdr6jU58p1/KqmbzKq6+hx4vKvGpsktpzQi4LGsmu8JvNVQRAvZzmuV+v6dS7DeQKoRQdzweMz3jB9xONsegQgbsJJi91EyP7UzVd6LYTP12pcHTBec/LRjBYh4xK/2YTA8CIbT6MrBnNAt3/i1BtRRHbLEHfl3WNbKIRLvMwCz8uOKiTZ0EnW+Kwjceiu+HFdgaFnzdTpHNBDgbsbAcB5Ou4fGhfPQDXPuQ2dwJIDGuvLZAcGnmGkMgm/ZrNpE5/SbPMuwWsO9U8UrZ9H/8nPDn01z3VXcU6FLKm78N/VYxQFHDFnluboN1hPXyIgw7erZPw+0dAoEOy4FABIDx8yaV6xZ87Nrk38nPlPGvbTg1mWwshIP8Ezana66BlVqQBCHBCYLGGyn9Bi1Xvphz1zZxZz/mLTVOTmB2b0oS0LME3/YYLtzaH7U7P+P5+0ANbbPJ71q9K2rRoo5+8E5hRIXBPLqJg/RnkRRVG864btGHhhf6XVy7CvbE8WzuXRGXXAHxUAaxTZ1V7g/+dimHQuy0+ksueTMpUvmwM/xdRiHRV64gXNS0fOpxx27m8pMuCIYZf92KwTxXAWSkg5GkETRFxB/ALMKltlh9dHWoUPUX7zm957OqoT8qQz1kWS7/JVXA6al2cc3BafkF9Ghnfvj/dk60mYZ2atB0csKF5bfajnsA5nRuQSil7K+ZzvQ9g8qvJs4kyev7MyqoXUqLEIuOCMgxcvDJQuo5zAbLNUySm9LmxlY/wLFQo08W9nzVY5ip3TeQovTauFKgm3Rdq+eihqcZUtKSk2MnjILOMi8QjXtaDIQmNRkCG+8prdaekg0r8gs1qLObPlQYlSIIfo58jXU3LsU8vjW4XEqyeEs3a2vPu9Jy//0mt7LaKlW/mJBTMr9l0qGgMYli8DXci+AIT8hEcePjCOVKn8KSUFkS1nr3h0hHFKcg9kDP4fyPvWjCD/oGuR1caXcfQS8m2eMx37cE69gYyVAYSwjesCYPS4sYQAeWs0OF5hfkib7B9BFGTNKG6sUpAS70FDX2MVFOGgc7zMfP3RcKj9xwiNvMhmgWB1stVfsI9ddeFBVUZ4TluCx/GZw23E5zu5e3MBZyTkzt91rXqaC5dcBIIh2kLTYiFAW860uacV8usuKq0XM9J4pLf3aUIHeaFd1h2L2AMEEZ+EfSdgTsYuJWZ4WXd7dCbbYVLTw4EHaWVFlIrOeCIez2YPTVzzjAht5HLFqVaRatqRmQjS77Chq4AoMquIIWNQY68jy+WSIk1eXxrQm9U1JokFwSv8Ku0MSEnMlX7VbqaVJcpmo3PgXxddH47p1GHK4Mo8tSUJuHKz5i2Efdj0Rs2Rsp0Z2jT4eG1lbtDIQnCFl3Y+0b+es4ATnr5yhufta0+9cANSSBYuhiXTpB7U69GUHxHZXhT2mXbxixviyb4OmgvXHRHQo1nlpFHct+QmSnbXSAGbAM83Pk8VTbF5GtAAjMOST8g7fKcORZQvFSxKsTohYOGvkVONnOVkdf9aoHubrj/es4cjgQcsCrNhxvOK8uQXB88RUVMQJnxHYZ8MiREy02MRjMtNUjmEVyMmgOPVeM6w+bRdqpYbAj//X2Pk2AliDRuj1FYZQ9pQgvWA0p7XzIy6V58wjQHf7OIzsgmtzk0cxcFO8ldWfLk6zJJtIHDNEaZ5lSG/5Gl0U+gSFUgujOPhkrTv1IiqrlN62RQ0kVPecpnrK8xZdo0asFNtR0Z0QSq6fmaHCAomKnply7iGgT3i0aCn6p4yTxff9OKfkXyy47RsfQrAjC8jvjPTiT0LF8c45Y1+J3u9dilGGwdPqzE9rawh/Q+wVLMuGdyQPbtGe4jpDSiKm6yncBop4wmdTHWNbx3iBgbAtO+MZstUvXt81h950xOV9kLTELugPtcLnMK5OHnkljsUXjpMK8DXOU0Q98rn36X59X/urwy3J0tFw5T5e9sotCxSSkWv2Ry7SlZNZEf1/o/O9YE/xiAqQ59pMD0EQU7nY8StuqKCzUPgzuFJoQYs32h4TD0BMn97C/EEaM9bSi7ZXrP/R8HycgXYJ09Tb5NALDtE3E69Qtzu7HbEMVby44Z8ps207PBfGfr95sBOj9qwDb83IWCy0t8VnyDHJLYEA+PYRbUbhoxW3wXoXRwPbV96cQHk4dxRiVJOHB8haS22x6HeHr82/Zgl9Q13bEbDlBrszCUbSOts08qQq/DkazvbLN6V50jvEpSjmPZybMe864tMRN11A0ZxdU4980Mm4Vgtp40hBvQSPhhil0+X7rlMiyQF0TSdCOKXKXMKwdNrKCfDd8T0BVPJzlzwJd4hHwiUMAtWrR4v9atgtnDPfFUpBVtBgglz4PfV5aY1SD1P4x/dq4ddGN/5suaEypiFlOdkGh+77qp7lVa1Gjf6fi2DX+wbaDwFk1xUt0HLDTM7fihVb31RaDDi739OKLhPW3HofVnVm4ZJ+g2amqY6ZxgBXHMQtohkup7qiAMTYhkE4RvvIQpPILCOhBsjQjOzEZRMwE9BYHHRe4ACJXEEgMbTcaj+baYO+pvNg1WU+YuBPRuLPnqc79wnAjoy2AVQyOSDeR0ZIVW3cMb72bGAhTlT1Gt0D1yjl9A9cpv2BrzWXBu0yHhm7cOxpuKISM4fVIJB/mkN7cikCgifN85Rkx1DkmFo0q72dEh+jiYgznnqu+hefu/xamT+7ROBK/OyZx90NWrgzdQRGV+q3EZvcM0pyM04T6wSLN9sVl72XRbpODvuPdA9YzJEbSI5jeroExOH3opuLbt4WLGBDS/pHpsckbvmEX6Gg80oKpDAv8RN84MyU8KxfMoeiYySd7Dl3V/oAVH9/q9UpCytcX3+zFKBUtu4Mh9ZotvLmJgSfPC3Ozi4w0nOjHAArSRG7INNjHyEml+FIH16RYmmrq26nE0Nt4d7vF/D+2qeYhXofHc34/g7Tf6UgMcz0Y+OTJhQ9T5eLY3RPI8uEsdfoT+tVtr28xPpzW7R2j+Dfe83u8Mq8oO6baYskSCE39m7yXMUCtHnlI2n6SXJB157dXEyHvTfqWOVvn6sZtluO4s+fIPBXBX9oepszMHOL2qFPl89F+EEKwQZiiWr9jiLNzKj/EiaeKdBLX/z5fk/gE8gIvcF04Z9LED0Ew3GcVCSvhd/9WezX31SUncflhmWvROOU8XeIxLihKwr2/Vrqwg/jUQweZiwcAiuO1eviMX1aMPjIy13XpuxD6tk3OxgISi83n6FLwmewzmX12ehevt/09+Osyf9/KcGhF9BqTYCuGBWhd07chldVQWbxNO4w/OJUjhielEihpUejyuHceDV/QpZSJ175MDg2cfl2iPNoThX6ThE1GJvIFD3wVztcjAvcUtuLXPthclpjhPjmUhnePhdvXuxYDBLDfEjDPOn9s6wqsBagQtNX3gDqWQe8UjEA5qeHyieIzTXe+IaFx+kkX154PBmFAkMLcj6Y0//M8AlgHx5xsl8PIlPCbun7ZQ2iCxZDVEkvCNGJs5sT7Uf2oJeSs/QgyVUZie5UUIn6nYdR456X36orqaBOP2YX4y6rrSno44xbq2+ODsr4S9ijWpChRsnffmv7H3tfsHrDcNwKjFZyuzlVnWgcPhlXsFN7fhP4niZFvjQUXEjwIiHitp0wh5X1/e797E6bt9r9s8ws/wM12Mpkj8kW8UmnKm6ncX2kDgXEjV/HvjVy/Daym0hkTZb2t1VaZ0k9Ee2CncL3gDnF4FBCH/ESblE+cUEuQhf0/u9TNyLRO6CNnvmpTJdsZBk2zCN3iKxE03OTMv0m1PZPX42BIDtCIIZ1Xws0fkYVNMScgidIQ6xE/BMz1ai/hK0pNx18SxYLhfBgvky/AjwlJkXcFpEpoiuqON2GBUxSHJSZ5bSh5kG/iWhg+KMjMy4dXEI3pw+H1hHpAvJVmepnNdwPdqqpobeqKQXiuJoJMEU3qK/u5rQe0gvBg+2FFo/C5rBWCPBEqH/Z3gUGGaLmuFgJ/nRqfWukt25L0WPy/DQ3CTcEdB4m/h3y7SqPcmsbflmegfgA3w2SqRjrsMabF1C0/64mmX42xhC7cTpKXV4c/LyDcQHlkY1rJCCfwdLbsvZYKuR9cBIhTxvPW67jAvLXYiY8Xbjq6vMTDkYECrEo+O9iRD88acaZ5RwJDAbduh+Njl4yqLs4AFruzDGFWV45Q6ho8/Anmf8SExuyEA9KWV1lenbe0qaFsfwy0eBJ53hHaz9FHFx3blPm8CVnySSqof+XRfDWL6nBP7FRpPxVX51aGd+SKHkejKRl+Ph62mbcaK9sxM/mNTZPJRz3iU38tVVEVr6s3MySncHTTGV/zXkbSGL6kWuJ2ItoE8PJ/3MjxhT5C1pcdYr2kcP4Vx+JRLRcAk54wGt5oembVKa3dSkMtw68oNGadR3EK63tath+Dsyi0JhNZESeiseYd9JqSHvUcQ4nR5PekfyMnSnwOtSzFHOfCsj1gwjQdIcbJNQoHmdViDo16bwJcRb2hnIfPC3hbQUZ/GaeAn4Njy82yOtSfny2S3hH1A1McwZeU9/DSQ61PE6bxundpnd9X5HxsQ7eNlfo+knPv1epDQu7qtUHbbO9vBZXJ2zXIciuWpZWA/EzA4uf6vBTFKta6UliHs1Jd8JdabgV0Relz4szF53G+eM0/UHHGAC85AaImC8wbzDRFw6yip5sYYiUjXFrXSKTD1WjF3bTllPJljA2hqfi1d7kI6k+g8OLQR8O1bHe2m3HniujcDmq1mKv3b+EYTIWonQUBIualYArK11Rf0Y3nBahiwwZ+RG4TNm4g207B1C4nrx90TVy6ZfEm+rz0NHXtWz03EAl9x+FREQrlHxzV1Z4sTb4WfMLXfbHPY8i7iOow07AG4hSBdPzICOQBOt8JelTWiutIcmTy1JAFj4rf80wDLPrbL/bpgomzWDZ11eYSDpjXPdWzM2N0WBAbt6l/ZB5w5e8/YpmcOqYUFxg7QaTEPivH+26i8zjRIfxYmOiqPH+tZ6z1r502uNjshTB6ckBuOincdUvRxMO9yA5B54rciI25tdMDW4zDtAv8JPv23wZZU+wSkRrSjN31zLlkNfJ0DI7eauduLl5R4G/w2apxjlVWiit6rzeM2L43v3VzEyUkVwsAehYySRbApO5ZTmFdKzENrz3a/RDMSpZqJLp3dY+BzCzCVMu9xafzeJ5JgfCTAQR/MlrpiZHqOKabesq3lSOcRTey8Oo8zdzProGRwVsIvGluFBIgCAx731v92c7cF8NEkzHG11VOEphLFG7cRSYhwOxT5HPuql7Oe20U6CKvDhHEMwZGP1ti6ik6GZTTzJvAnMpY5q094PPaS8vecllD3J/9gkubJb0FTvEl/qBjEzShtyy/wNnyo293br7mxAI3TQbhse+c1zbgsjYQmofw7WF4lzoaPM4cjZPt6V5so9C9en9pceedUHoKY6hMqJs0C6upSlEHXK1TizpzxURdsWtAzem+08euo+jowSrNwUGwKKBk5z7gGZON6M9D33sMokkwC8qiv5L/u87a2RFqmgAA74JASSCQGtQZLnEBxz7OMkYia01AhhZVn4xAy9zyOrLt9TFSsaWfqdko8MJyC0swz4wwWtMsGRgGNzk8cRzbZE3jUVgat0JN8oKNtyDtIoMcPt1rJoydvKmtw0u9Z32Py3rVFIclF+eV19nRxOrsyGjN8IoJDPaNGGr/qhO9YljyM+Zyub4cxENQhWMna5kVgq62xfe6n2liztqkFYfAnA+ksi+k/BpSEqbfAKawSo+z0caaphylKB1f0R1auUO2qc3gnGQwDxU1fIpxsFgUWNXKvC1qJoYliMBr6LT5Ny+cADqEKFz2dx/2cRR8Kj5+RfZP2CZCzDjYpRPF/r7Kz9dgsYZkMp8mjZCALWasTqHPMw1y/CuBOZcHuRwfe1MwgHByb2lNRvi/NX/Z5tuXw2zjtFWCGrKSPcOzgRuajQy8CqZL6B2dkt18XvLlk/LyoDBzP+4wQ4bBxwqb85783yVpoY5QQBcaDAFe/SAscfwJbVd7kcFG2srzC4wUl9SzX6nAu/TcivyEuDYIomw1eqczP+JdgfdcOkzKH8BAQI1bo7VDI12qanKG+Pny9W5a/REqVwJro8Usfj5QaMYrUxNFtwAYbjJbmNkgFX317KrKI58FE/YUdOXdhHHyjfcqKR3dsWxeIXqwIiWMFsU/uFBTkzdCk65hjPoFjTa1ltUtx69kx0gbcp8zSa9vDrGSAFW5Cq2BMs4L1cVZ43XNpJzotr8lfMZD31OeDsVjudnQzHsokV4KXE5gbvopRS8K+z02ooOIXQvDx+FmEXUbo4QOTCYxjWgUD488PkHQqWboHrGgAMSPWp3li5sa3nOPMdoGHCHBkhsots6LFM0HJwGQzgeKGDmlT8ZMG0mizy3sev1+ixTJT1Vozg5XQ+OWF8YiykJsiWhxBVm6xcKlyXVPjPBRN1g7g3alZou06zHrKqdWotpX7h85Qd7bmkAlLSVtEk6Qo1u7ClqZ7ULw2qconXynlIqNX9zi2wf7d3ajTOEKf/qHoyZ9FHJjwQsI2n2JJVWbgBEByGhfwQEA+g198zJi96idWxDFNkV/r14dpU7vSBI0iV3iPK4bE67zh2BQZKaVi0oV6J9Az5/x/tW+Y9oPhMGgbe1Qd2PzkQIXnG6UdQEn8iI/qs1KMWRDE9+eoGvQKnhgVIleWl1/zWTDlsrK7i5n3LXpDMGr1TRlO5bXHnrHc2XZWZoVTzaAJmzf0XfTCggvvcPkr6Peq/DWiti7QBuSWEk/vZUrqX1dQB1+PJEFTMQXhUqp3WXfNotAinKLr9g2HglPaBJhMlOteio7IPzat23ZO8UusHwSU72NGdkb8O7tgphOoBhdG46jniXKGDHbyF+v3lxTJQ7CaT+7xC3RwGzYufGkukzrdopcp978iDB1FctH+c30MF82oH7wAAM2AAAAABLQ8wGx358IOt8686MtlKpsHkUTbVbcspK+5dgD3NZTtzf35D9brobMurSVCThamKWGz2XZqhrkANnbf0kQuqVw/Oqp8foSOkTUz6CD6DIzT60Clen01k84+PYkRwQT9CZlNjWnDn5FUC1DZa95HcNmZKL2HoTrQxLVmcB9nFFHlXkzl1loSgePntvsD5lcpuoNlCrtEqq7xggZtHEChjix2inpZXdS11H+DGUOWPDiWEqXrjGFXByMXsoGS2ccIm56iEiwLbFZyrlwNwaLY2LWJ/NTW3Sw8m8PAbz96MzVsznpe2YeyCGIRESJFPYgjXcn+2o/bqpREwiHIgEA3H2Mjga82gw6EbJzEOV/LQ3NoorUtOcrYV/vLcbQdIJWiQBXO6Gm6AAC33v/kWACFVVt+JaTvOaCtkytY7SOPWjNsuPBVbkxixaW8HOupN8phUmdLF93rGehAsapGZQxntSHjx0+oBvsSdpE7CgIIthH6uxxwjZE248+fyUAAAAAAAIntOAAAAHOz0m1B0IEM1l+e5r7VPGViRi49AAAJeIlgry8A/E/O/qekJ3YF1Eu3VNUFxFKF3kc2thvmaDjBvLJyghLBOurqrqFhOSNlmkZVd+ripFpS0xqfsnL2ksPsldhPWSLsLCcausBwE5kBddGuFGAnKbu97ClnUjbgsSImBhaUFDyP7F7Fw8ACCNyVqj2VhQRK4AhuZ5jtChBUTZdVOSkka05ZCOBBpY6nme/y99ynysPGFbP4t7cjkcDcOxXo5KEEMUHWqpovhVWJAcyx5dFH4mJlbGgl6IzWNyg+8o4Fe19SdXOgjzZM84D6WyFXKHMg1WWcQAAcZb5Cb++0s/gwm9X9/pG/iFHDclJODPdu4MVp3qHLVgcxgh43MT/cEtmZPgrkwrgEK9w4AhKE8bARu1ZNMi7AG86+TR5VC5wbfRqwSWYmDh8yHpPmgIMISG1kVj6sj/YKEDiYgtgNB4I7jj0m8t49GSwemTisjTw9qpqWeOWD4Xs1pWIQZ4jhmLEBenJxI0HD4UBdoDnfanB8EC5Lcg4D3JLEo7sLX7S3N8p9uBOg80hRMVKCGCv5dzTPzva+OoGhMkJX3EE0f5JX7bNnUhQgNKsFa9+i4lcUSQUBvGmRq969tnmy+IPLLyR0EpJ/2XQ3IaSU4P4aK1xxBQ3HPYSZ5P39GxHCv/brcdhyPK2N/ZwEI/4xtF2GoXb/k57R99EissSnmAbUboRrHgCFjSVttUw90wwUI7bzUlnDu39huLvDs4XMB3lhmcpitlKgPyOa+9ynR93Yhs5nsKVe+i66RPrpmcSWsC9s2ubvO75kM5ATiGuo5F2zZP/ljeNoAfeqaWNypApfILsa1Qs3g10oM7hWCdRDuGNipXUYOtGkQyMgIJP3B08exnlm40QLrcl7CIfFEwaYyMJxlI8a1CvIm+bLmj1p54mmOEsHrAP6TFTYHxyKHSNQ2QsqW9Hh7A4MQ2aErD+ndE1yoYmdGkb9STB/l+et3m3cxZSYAcgflefugJYWDTfvPhtZLUm7dHZFpgeHv+umxlGrJmwfWTA3T+1vtoreT2T4tzc6BgosMLMJTnKIJtXkr/ALxQ6Z59J+10MZmPOB0k5At1EILsusZDztS8DZpVc4aQrjSH6YBMYkUSsOGBFFIleYlsxfFhzePI82/+HcHMMp3N2CetXV9LT4CrBYmslW2b7IR2Vm9cxmKb20vGjQjU4O9cJOZO7y9hSLGIiw5Oppiv0quStPDMEdRqGuOeaqL/c6dYWXUBDTYTx13uChw8BebQmY1x0KyQyFxO2GZy0ktcJc3SEcxwe9nrsDZaXjBizg4sYcMM1UB/sUqrSaeg1EFghVSmsHbqKIlyIMNyaWYMcQ2YO/FBTZ/IvdulivnuI7+UnpxrTFuyTXxd0FpkwEHO0reGcsto+h1yLS5OVwW6NMVK5xCUajNzTr2c+B/xRYWpUP5jc8nGh1xmDDRIS0699YWxfQLbSM8bnEX86+yP4rLRN8r3djdSBewMhUBqsRvUMahbK/yFUTosWaxNjfTxxyroBIeTAHOuQh5zl7/Ba5+uEoxn+JvUeSbvv3tGcpZ4hchYqxYFJudiTTYmPJ4K4+Ht/ayPjEj4VpITIW06yprJj6PTQCVtZGIhPiLSJytHWK33MXkWduUeXZ6ejuPZj1WGeSMDVlFvOIrl10U2goq8sk+3liM4tsJwjtp+6zH3NJEU/X2WlcGVt3FOUqKOeiaAygpFJgeil//OYkm3Xtw45QVw8HFOKL6b4M3Pt9HZk1and9LW46rZ2MLPrL48gpeoD4ad0gbds7bEOrZA4oow3srtv/gKaguEed8OOEji/AbowEiuy0vkJSy3VEivIxhxcPZomUEVJ47QYMLzjfRHaU71BHJwIS69gxJ6U5AY+i5qhf3OBpx+7oe05QETJhFFPOm+v2FEXu9W26MZCc3cDYnBkSNEcxyduP4A8nnjDonNBv+nkCaM+hcXgDW7badKRVGvgOxvoHZPqGjSneJVIMgKbZ72NrMupqlJheMms/mtabiIjf1so1sIdoJFimg6E0kSJqUFJ9IGxYQ8eikN2mWSAYNwqlRK5KzFSvxUJVvxgQKiREfDYZBTanECvtyOQs3bJ39RLL34ZrM5QC8/El9bSNnYZhcjz4t2Cm6zcxoNTzZQqGu3CpsVGmK51Lol2LCONEZlGlfCOjnXTNLREghGVEd3NDWzY0MKbLVtIBTb8CrlhoiEva+gHE//0DrQpId9aO0MqyzM1XTEWHqbhIZcIfD8VREdtHiYDtJLYKjMyx90IHDYwqssZPs85J7jjejTmjUoMnwesmKXpXR+tI+HWUCQEVuSuWJ99tV5aXe8qdwjigaGBSNl+YeYgeJJdXLdQtIJEG50VFRWxlPPHZcj8wNThKTCOF0cJy4ebxDCMCWtdeHf3POu9xK6mZTLiqMj3OfeeIzb9bgGjUzR/olvv4pVkTp4GusRcqYJCSM8fzZVbOWbTZ0PyO02EYrAukM9eLyq9QiP/Taey95nZfjojZXz1t4Ko2kjssTgOkE9tdiiRSaz4FSxVWAJhRoPxfgcK0PFW8ENQTzzZqFW+IhEtEOO35DNexu1r0iB4dBX/EUpQj2ynM9+GFX8ddcKTTog30c4LtC+/SViwfxwjBpUpimO0a56cmwyRClNKXK8D/6Y1pqf+82EVTkBUBxGnpNA5au6VJ/RKcOgVAfRIsW6XSfZQ1f5UCOvDXjY1Wev+bRGGrW8v40YeqiCUkGSFT2lvbbDSwGCkCUn1XY0YwB/BBOWKvF5mZZ/MNUyk06pZj/aLuplrAXc883w7Ssc5r3yYdnKCc30dvAEF1b5QLMUDc7u4ZFPp2j7OhEwWyqyuJaQ8BRMLIHOODygG9Zl20Gvng3k1wJo5FSKvqOtXcQoE05StlIpAaj1/zBfBkmMVuFnubYyQgwtLVXmOB9gJJPAhiaR+NROXGN1ZFCof8q5ZaxjWQ+EZ1JpmAwDPSHZl69qCPqvMgBukJ2vM8g/FpGbrbn22zuxTgScOaDWef3+dd4G5afcKSEXxyXqqqPWG731A6IHoe9MvtkNtxbH5olsAVrw6p45V85bd+t7tpB03XNXcPuoYSdFeMYiNM55ZRclWRQSZ2ijRecPscPUgF4J/7pQGas9V1wQN40fgow+AwlscfGRpiA1f3ff5hPS4K2V/Ft3eRXAZ4NzPmJUbujU7WWm3a9AC7Oj+5YQrSsjre9nCgKnsftZcMiZHhB8k58StQ/IiaYsGmaXvYPyA1CMErOt2tTBAh0ViOqKy+UCtMNRczoeu2o46dt6IiXrO2u+AYOoQa2j/QcO+vebq2NQagKVHRDSrZcb1cVcDg22Y0lBqhuCAkR5MnT9kfMRcrhGg6p83Oq0W4qIPXVjlAARzr0Kz5yThs8P+ZRk2HjXlIQ9ZELKHywBWu+MG6ZPSAEsLk0xCVn9FemZjF5l1+xRzpXpJ8VVyJ7bmxrFn2vK2y7Kc1p8M51jbeoiPQaBPX7YAlKI4VVAeyKCIw4YW7Bp6JZhXwizxcLpZ+Kd7UzjkMnBO55EsPOQ53IgLSG3zkKTjnKUBv7SryWSV51jKyyQKVRe6cXdVUDpSKssebAQif1znb9D/6+crfd9ZK4IL+UTpYCRFBbslH/pIMT3z7P0C9Ok4/x0wJtzMpkJvC5XQGFBOr+RoGaJJYdXvnDBIkEiHjgD8beknuh76vNzWxSRMm+2mxvLP8T8swoOMorINCbOtbIxXvdP/D0z0iaqMrKB//Z1uUvavGdngFAPvVIFASh+UYSOqNOJXVc7ZzgRz/Y1Wqq9yjFmKLNIU+lRFqWtTCdqg9CwO0m3dpAIXzWWERHRNcjlbKQ7fR0uYV3IFPe5w8nPykMHZrLGgvmIsZ44ZOFlUiaFsOaz+ykMv9e4lTwIAUKg9mf7+r3f+LKnMCF9iurO4Q3sBIEi4VJYuVntSpDtSJb94pj7328wYbkQzWUgUepQpX7WGOysi/XJBkw0H3uGwL8WfbwkiQlg7p3SXBy4E746HHkhon9BYzHqM9RwPPJRAc2X/DnkixXNgd9TtfoTM7HqDRYpVDkRY3RHFA6gXRTYaREVkk+uEVdl3omXFF5c4hsqqv5t14Vgbn52Ck6Lw27aTxpX77g6XLw1OO/oHK3bU9PCFp8bre58qGGqzev6tAhXJu6OrT1pCd2CvdSJynFwu/rHH1pcA7ZRT4IcM4Aqp2pm9fUhtI9INnPnU5NIwos71qsxoJsCWEvKg45MuErPFEaEro31X8Hhb3TqFW3HHLkUPvF8liTtNA2DShhCRSw/eZN8oEP+9y8DeWheMjjlamXdLXeRHcg4prGpPqGEL+2cf+mDepZi/HYp12VL1lhfOsmuU1jyIG3qe041zi2QublSfCHsHlkIw9YZadmLgojqWIFFdtw6a6mAeK+S4j0qguNIaIdimvhYQBDaEfwtJoebmC0z/H7W4HP8wt7DlGFVTp5L1UWhEnpT1T4zWP61yF2UeBmF7x7NWJ7VCiesWxccPVzdHsRJfg7EzGAw4p6oUp3SH4HxiQmxg+1J/BWgkozvA2uxFzXoiEY+73cgtebLn4WGK8k05/7zmoCjkQszN8wOp52oIkjxWBLQeirI2jY9ehTS4j0hkXU2O9rc5xBBgkuCdhuhqIuYWHbQcRHJxfkbONAqfpXKSZzQ0VWblJiIJrAJJUMlF3seWNkufnMPRYpqCN35QaTUd8jbSOUAnpWdPD9pKA7PO20wO8PWDDgJcGTzAd0G5BrnOMFgSiigBE3tMhek68ZWmL2VqZxDbeyy0Kt3iRYuqmLMQWxOThPVblw9ee62TfrvItTInEdBp6L5VhSoVpcpiwEJGYxm1dQFElg0MCqBCG+B0TbDXl5VeQ+Na/bK3mCr1PSrppG7XorfGlgqJDQFdQ/dO7Ebu0YJQoXya7U8+pLncmfSv3KEmcIzNzXQT5HUMhoKazXv2Tj0XbyrJyAFLvgJKCUd7iLmSM/qdH7UwRgxGLFbbSh5IvckxMZtvxifBDg+AndFbpnCbBJ8NWG9EQBOoP2OnQCjx5mz0Y3f7aXw3PQ7gQWyc/JmSgvvTEKvSNcvFgsDHWSsYRBUT3wNzSUfJqcWWWcdvP4SoamoA8du6IS7fyCCpBlIA9C4D9VIWJDVzp+fEZrmHmhnCNFdQAqLEMUbAtj629GhHgx8VT5mrrhDv6wKiucfpcAdqNqFC32dj0iF8R9Ffgrzv7EpFT6yyTp1KtNKqhRn9LlQjQRsDwzt8gvKO/k/rGjBRzGcY8QCqJBzQ5s46LObFwuQxo90HUCB/g2Yl7DZ2VV4khlp+30tzg7SwHMds7HXeziG32VF7GRWU/Lv1HAvnNeAnpQCxzJO/BEozU69eG5sGnaHpu+914HFG3RKwvDU5oAODq7Zp1k2pVixmr5ScG0EWdWewLOJGwvTeklOpjW7cHZOMbAkMH2j8hbsUvvUviQuwnxsXAkYVsqPX3aUhE/ATxvY+Wc/2vEify4esyabyDPvZ63auzGaEkmyFTOX+HKDoYRCWUtZDdwofHwKDLfZTCfRYQaQZEg94c8rKvZDOEZA+kVRa6c0JOccEiBeSh3Ac/RRgpUThb0/EfI69wwt39nAKncLlc9MZjSAqbnzAD2DQ/xdzLivqIhhsjeKS7hFuEG6Rai4mcWzraxjgUsM8zT30OueBCL6E+tSqljje1LWfNCofO/ddsnm4cWPhtidolpXbAM/Zi9Vphfbr+5FmSW6tXt5CTDnFLXrgAEDe8RTzRuyK3oMa2JaAQRDnW4huTJt7cRUQrc1CL8UtftWHUMFe8AuAPCJ9R03N9IYpW3boWqIorsmtEagMbTrsaHsnWjYXICkA0aMyTZGg2PTnSe3vxWuFG06WUFDSO1DOa/BeqyF1idYdOwSNbSAgHqDnW4t9OQiNvW8JZh/T1FzdiF1cBuQemwXYpqcf98D0299xusoJ8R2uvaHp8d5UAVs7vjPQjlzRQpWiLmw2IVv36Lz+RpUZUy+l6uI/xNi3s63iui2kGEZugMIwSGAVxTx7YyX+jQsSLgQ/s4xTd4zbGLGL0WBh+AbI9CS6XWz54Fuuu9SjCJ9gtqb1kmoKbnI7Cn22GugXeygEUfRXMRVFMxm7NBrTqyVogNd7V80qULNbXY3Fq5f5psRYQ61iusUPPnyy/RdDxJ0xkrO/DPHvYyDExZDRqVe6uds4BYfC5deNj/mWWZEL4nZKxS2Ndp9IDcpiuCfgJcskZfIvftgAZLCLl1TMj3asT7cG1tFguNL4NxPIrjBH95eCUXmaoo6NcDOkbK5mAylUrwNhYynn6XTEw+lZFAYV2bRtcPWMfmAweX/esUQicB7DECwWkRUN5+0zYRqO+xnXY+ILGHXY++WgAQPQWLU4S4MK1Ux9E2nhJo7I5+0dt7GXgExiiLv67N06anN/5Ve0JxRnOlKnMo0TnFISbKK6l9NPXAFqkZQWKoz1IH+5VLZfD0CHmbbrDPGaoJyKJVO4FVOKKWS7Jkdyl2KPsdMPuJ4/Su1FQeFwz5wvu4Nwf+CKJ4aWM7LqmWAbfHart9h35/6Lq6y24FTXwOSOSrLAuk+YnfVuE2luG8ajFLqZeiIM0PJVFvaSB8ZzRPCLZQ0X1wq5x7wmQdCQSBx7n70axUbUnX3vRYbbl74tvJFhzhxrwOHMNkWU5pjgGuh8wo2eisSulQ+D1MsZ/+xWh3IdJuMh3gB2Q90iaCOi1gn5e0OijfPuApHTYkS6MBTE9RNaU86eQ35IQgJISKe19UGridDLrLhzu37n197962oMdb4BtfilWSo2OTdeL1rTb+IDBnTi4cglGw3cnKq6+AVul4cY1gdaKkKyWNx1EM1ZsMRoqiBLGR65H0nqQrk64uT8GH9lcnDsxhnP24Ruk2BDFWaZD/Jht3tuyITGsODtd29NoF1DZpi31ciFpwFuskECuSXDPhlU0Lp0CSGXW81iqwURzw3pk3a6Ko0xg3L+5lPVyFBXxFPDl5ILMO4wzPw5C9HOley4hBrzdE3qpIkMdz5lf6INihDDOw35AEOjG+38s7sSjeAE5vITjZOEc20FWO7C5HlwKWlJdlTh8kGQLzdLAYbn3OTwEXHPDYWhEer6VKzOPMSymTxSZIcS1+/+qYUgKLtK66uP5tksEExtPs9K4v8PpWjG77s6Cp+xB5BsrnvKSn96vezqbE6b3GYyvKH3/dkA+WP2bgSp16iQDdACe9wCmEA4cERfrj9Sju/uCk9LW3/s/PpaH39FDLYxjDmWD6Ooc3Q6gwK30vLOmenBWrvmss4CplziWPHYCTz8aaivMtMzYoPnzf+cf3Rk1kT8/tLmeU9x3FMRea6XsQmY4L6+ONJjoOw6j5KiwmnZAOuoB8R24KwQ6ml6dbsfBqvNCDzrL5oB1XCoQivjpFn8GYq1pRJ8G1QFesg4Dz2COOK3jzeczmgXduMxzY3d1UTAbrXh1SVm8W/IdeQH0LC74PXLhWsvaHajchks4i04GRrCklreAsmTJPmsIm0zsEdAB48/wqZWaMriTIQMuCPvJqNongvDI2fdMF2e1qIbJQK8Ek91rNqU2y2vLOYa0S7X9ENAwcMbwp/wZRPVnCszmV2U01LO1nmmxNvIYY3rV7h/FNR36H33YYOjlWbbhwpuNrXtQ276WZuI10+G9J0f0o1BdHVbdIK2g+BHJuHHFfJTEYcV39XjzbqTEYz6aue+q4jY8Ucl+Io8QEGOd+CYkliiCOktYj0SSBQmj0rdfIcXYiqfd3yAbVHwwQh1Ajrf6sCe5QqbGv5BB2iImeGjMc+AlASznf8y8/25yV4ZTRvvbBWQ60lL7VLu3ktDOwbL2MOSmFykLrsFIhRPlbkzX7w8lL34kw4+w+X/8sDPAN8jbGD114md1wvehgqYVRFzcbLu3w+AolXjUErGl/wfOxl5Nn5KMB783xwUGECZ4zH/sMJ5NnRUCJYkWTA/nTBgj5yb50vFd5KjK4n+p4I7r7tMSKeCOP0tuhnDnSg+gCaPiM1k3LYRsuQNCqm3/SX2W6iFr+nDcjJZM1iZipIw1+DhxJsH2fQfI5IbNtMRYEKcFqHGP3J3AavhWIstiJCuSyfvKekLSCTdMy7bsbnLVWYZ5FUBgiFUI3ebFBJ9nwkoe1OrIzgb8os4YEmbRL8HqzRYgZJHgUjK7vDIjp/2N6/Dy0vpe6kjQoVObsC5OjyUSWDstM0VGYIHjAJ3dFFstVvMAN9xpNw/SFzCQeMBuZs+AIm0oZnQcFXJ1Jd7FTmfDoVWonOXCYihlMEfMJylVQzZktjxPRXIUxED4X9gb+ZEFxYWun1faHPAz67PirDRWQXIqrTwFASXX5VtE7POE4yJjcs1+b9L93LWlU3jJb00dBI4UyI0C2HLE1v4yprgO4bfdgPskAlkteD7yEC1R8Oz/QRFRue6NO89FjNBzttpZ+K7oqHIzENqi2h3GIUcsb+P+YGPWEK9KSrVn/FasDt92QUMAmzbUL3jLkMnOOsDTG9NoLqHQaCPtJJ+5Z3rabM9q2FjTtJ+vKuihNd3yIqseBDdrMkd+B5Nm3wbd/sXUhI530GYOz3YgtAn0NqdDgpA/GKHTlQVTLXsDCOl5oC5N75oJe/ZHM0uZzBJjwnrl1LnYArh5C+OIZ3icvTf3tnOHw3FWoHGSzXSiE7Dcpft4WvJiIXhgnCV9oL1iimKWJH5vO2ppOTqaIozmRqIlti16OJvDIkyX+88Qg6gf10LtsVpLBinqFef7602aAxnk1DfBr/+ESW5CbJaooL/YYSsK9iSCYhIrcVnVZ8Xf5k9/0TEIJxIVto4Qup97H0EtwR5Etq9Bv1C3vp4wohO++ukMh/6CfgNN27NOW2c+cqBZTHK9btCp11r5ObguPJskv6kYCLJq3hWBRc/MoClyYsvvrF6oe41P2/t82oV9IzwSwAZac/mwbfv+gEG8UC2G0N8nKf5YMQ/fE3yXjrJulqcrVB44qDJ0w2+HIu3NKsbf7BPyspMcEJzbmHwEY0ZlowgETJVTTZdEuRCDk1omwRy4tMux/zA+ihO4SxUgkmLkE6qyqLQLecZMrel+pKSPjg/rxtx3ZfidTQcKaTNpAdTUErN/wHz3RMCjrvd/AZPiBhaBJdg8ukiPkGQ3sIg2B8CKERW0Bbgd7RXb3xkTm9aAdo9OmGmItiFA8isaXEWGfHBoLVbF6yfLu4/0i9yACiZcwTTqmTn7sS9CcZsb9UPhxbUxlPpm9qLJv34M70fBVmmNz58yCZJ/o+rlDBjDo065xQKUeacL+TQkKuGBLJgeb/cwlwg4rkSXd4186l/kFRerlZoiPTJ29hgYFKmlzIAFXNxcKZMIo5rKqe76pVanNyrRSR3lwtHlx9h6DFPWqUHoSI3wE/zZEdJ+nv7u5ig2/fWKi2I9/nNEPlsWIoZ3QEg3v/JQ9ePxnm8JGbj69h6mnP6IxHpmbjpTItlbconQoAMOtLjOD9UYt3W4/EeCqTNGCQAktpuS99RCRe4JQo6VeOQKJpcc4YSJzDgvqmbT+bgm8SpNXI/OI6eTMINC3E/ew3s90xAQF6byYFyS4FKPsMkTwMkk3Gaj1vNy492PU7x+ZhbPkQHkuGtFibGdNVoBVqhcj0gg2+SyGGlq83QeLfrKxZJ8HBXS0UDr1rzur3akp1N376Ir7N6oW7sB7z+VxkErm4y2P9983oOmccomSHpwx2g3RnLkOW3MayIbXNamiicI0DZXcDKG210rO3Tx11nWETieDXi4gWnm0SNgSW9vqOMKJQodGA8K7d72HxUTH6f5Biw+bM7LkvKSXbJ+6+QatSYT+1ufk6p+93WUIp/5evfSFqiAu/KephBtpqveYejGSwre9GSs6vbxZFv0Iw+R+zd8eI6WJn+lkckq93qIHT9USPxMIhjcwCHhQmxr1tKQiCAxZCPC0jAGCJVYTNIppJ7efmhz5z2TBAKmhq6DynQzUhSH+uq4IUg8puNwOSu7bYi8jcsQwkuqPaG1S3ch//Irami/i5y/BBW0aGQzFF95Q7WilcTSrpPi55iOuiaSkESLD/gkIrQ2gUR7Xn8NAVXQfs3UlUn7j1QFs3LVoNjPoFkAx1lnarUXsN/LwwxJnIWI4hxf/+VI7i+d27uRp9+uQ/iBig7kc9glkdRDypf0gZ+Axf+uz2l4K10EthbWFDTReqB5vo2xMpb7xoa6n5SU6io/CWovmKul5FHdP9ptNZ3rXgKYH2miY9YaJSslhFyyi/IeomCLeZXXE1jszTLGV3g55iR12ZvUWBaewinZCTzUTC3hNnckLKs50J2GwyW9WuhFx+bsmTyG4HXl45G92zbs22H8rKbUAVkrosVINvz5D04UaoL7mzzerian8yEv7R5WBQyiXqyk0cpYZYOzOkLAKCCLzWdPM6FwA8gyC3vtYOF4tBSFdmH50JvDQ/U+VCntMd+4uc6MXViRCHIC5wJM6po4JAOwK0nOebhaBrU4Y9piBt07nzA5406fZEapoTC9k784zOTik+rXX3B6L62xUkouw7YUy8bBlViysKsePUOqcr/WBWSxG+AZt5gNsThtSpCBAkmXp50uG/51a9auOlcedObVIc4cRbzgfKUEtnxWn5r1yONDmophDMYAleJyDPT2ZFtEu4RVR5EojVZIoIrEda2j5cDIU//dXy/nyME5LuLh/bGq0oCVaRA1V9gMSnbfUA46VmCfDVj5Cse1D2qcYYh+slTRcnEoy4Cb454vD6QNwgKWtnzu3ZqcoVDDMkimU77tr8GVXqRw9BPUiCcTodsiLVyHWVAPmRNW5gD4RD78X4IAVqovh0bOOF779uiwh93oPoZPP4X8fZdq32Ezwa+DbB4oEO/i0R+6RmrBuCASVX+ontSOUQmZDwTNpcNm7KUui6zfcyBq6s4GKHR+7dryuzkIJWwupkpWQNxY03WwHvA6FDWfKFtWeeicL3GiWEvSmRxmkQH0l/apSfrg2y0rJ6PWM3acGq2TpUNCXssiGk8aB4zNhhJmQdbo88PG7x3VnMCEf1wiqliOXXQ3EcIbtJyt70LrR8CnCgft69hAspBOGXFg/fMzoBmqfeawXXrm7/uw4nEy3vEDsskhIah+Uz3mhY+0pFBSaz0Y36VyTSkn4dHx86pKP3DJ/+KmJZszbO7pQqeCPLp51x7WR8iHTAifbPbToUsz5ic5u6d9825eqgMwW/asQJHEbNIoUI/+X3DonwNj8KY8E8Eb7PWBuK1pJ26T0Zy06rYh4OGA0NK7fzjReggXNnXY7ZD1mEk+ps3p21EhlMW6mvo3zOCt42c+xl1sb+dgk6lAYHJe+L3yyokKh55VcpZYjHiiUjb2S1rB3bZ892AevRx9LflXwOVIX22g1Xxs7KgRlxAIuHSvbgmM3PSCgQXBGg9bZRhytXH7w/bFWGMvq4TFNXsJFpT5jbt6ASgnCya7YqGnn1sUkr+6WjoHpnEJLVRoV8Cj+6AsZwoahjv2MthpvJGGsA0up75ncwt/uB4C9iACmw8YBrmn0yoIzP+OCOx/VQSQppQ2BQTIfb/Uguz3y+r08heOTuD8Qy8SBA+NXUux+lxWHP3QoLDBiIxo6SbbO8XjKHfKXVYi74NNzOx//wIghuNKiPQfzNKz6agmnAVPABUIQVeLBdEevl/2HpTlhLaLHEweF/jUotF66KZbKBPrjrfMVoII5RFzousD7aSaLyY30yAbOxj8UB70D/g4I0L2BmDnsCQNRwy8l8Yo1DKt1At7kgG4AaTvB3v55fJOusEBaDfOQ3bnSS71W/TV/ZbtR0T3aZ25AYXJkbhgy6eYiU6zd6Gw6kvPhOgMk6lHFnPIXGt5S6UXuKkLd0aRsto0xmAlJPLmxhv1Lw1dqAe0vmlqMlCT3D3apb9GZ5M/ia9BqoU9FRYHX/E09vByQ3sf+0/Yc6FUcg8ogpsKvQ1Le/2VRX37+1vtalm+OSC4JjcOlDzgCbSvqZEYrRsictnTI/oSwDvr3UnWpeGaQg0/mz/6qGX9YX3V+04B1FPwRktjc0KEbyPi+ANQbe9HY1YjNXW3IEwsi+Vrri9mRCVzozlECXIDWvdO6pe0jNsf+ou+w8XL1WcGmqtihR5Lq1OdkC3Ut7jPynN5QpQn8GerqRxxigaULBkduifp28UsU9fcJVa1RlvpNsuhiejlaKYn5zvfjFyN2VlM1C+MvbLTuuX7wVIoTFgEFs5DWrppbFe9/Dkj4BnOlySjzOYaKVG1/Lt5KF7RchPxq/Ko3bNf6QBMDuVuo8marPI56lEpT1Lkx8fH6xj3z2/DbOdQzS7Tn3IXXtLw90VuP4XhqPx1CKUpesuXGEffypSJHF0O/4aDIDuFvQ5JIrQoU/4wPm4dZQJHIP30utCBcjs2DdJsSNj8urxigTCXDpAyBBjjUBw0DgNy+xROe5Ewepb4Yh/pa70tH43e5yYz4kDQsikurY9lU5B5LekE3AqaGoZKn2E+sOnoWbkb0I3V81C5ZF/Sik6WSs19KvXU7xgldTibrLNNZR11nNFRUPjpwiaJcZeOWDbYjCWLi2aFjLQFBAfK2/DySOsvvlcCrnFME3x4KETv9SLyDB7aCeY+LhZwcyNmIj9zf7HXIen/JidnhiFVfCvTEHPcA7UhGVw/L1vvDM9QLIeGfI4TJ6ent2HC0UwKi4Et5v7vERFhCtVcrm00UGS5segqXK2rfpcX895NNcbDbnhT7MeufzpqmvtoeqifmkZfLv22AbQ4cNzs1Ii3S4Z5U/WWWYDDccKnbBDNX2IBfcQ6eryO8fg0cVRuEPmeSiwP/3liffR5htf3JScUy/k4U1IM1intuSiNUH/BM16sNEs+X2i6nT4z+pGJRIEzDKjsQJp0vOdwU3TRwMyuAPIlZkmXtq2YpxGV1EfdElOSsA2mXSSFrSHGtNMqB+qPtq07LAtXxCoxBpNpswLHzpBOa/HTkHBcnrlRHSmxWJyME2FQGcRhTolbgRLy58ewXQVtqHuH1F3JI+x0gQXNem3wf3D2E3Nj3InGN0qwho0s3KvkktqQLC9pRrLmLZ1jft1GVRMeQFKdZ3w2wZsNLq5Ex+YgokMPEYApvgTfxZ6yXx7Txmj3Yw2P14dhPFtxPbRhBceoAfs5tE/PYd8rnFR1s8P1MHqW91IyzodxLCCcc++UxtPxDSG7Q0qlthcQ3T/E79a50CmBbmU1Bb9Bp23CmwcufwCuRI21Z+YDxrJLygIOS1sruKndIYHd1xnnjAxk9UqlHJWZWQyGh3F/9VCTGp1V002Wsy9GK3K+4WIPgOI0udM/BZ6kAsZ91+AHPvBU9b53YhYlSWr6BelJnIHeYbIcGu9MlTI136Zu0kp2m00kfu6fTANqevdYhkI0AuFHwYS5LzVFxJLVPqJvPpHGjK6jl3Wl1St4Ael+cNuK/nyRcw5KGiPmyxFFlkryDmDzCFo+Q8G++/ck+P+i8uZFtK2HUuG2c/O9F9ACTnNSyq5e2pCc9jkg3OxVMDJHA42yHRuRpMrlYPcCaUZB3fXR78ebVxM6dhvgOdt+xAiadz3Z5r7gLW2Ee4PtQACcAGltZM9nPSIy4HeILnqcY0oiQ3OOsRDKkvutvGyCVIELWk6Jx1gjrBumOmsVcsfTS82V1EdJe7Uoa/UF9Nt3gWnLBcGn+4u8bRXkz4APukxsYzemfqdHZV0uQ0fOMdZKaBw8GcAC0Y65hAaVTMhWBnKgKM4TS9AcCfQIkPQVQmFZU/lwfrqAGDrBv/Lojzu0SJ1RmLpz0rn9au8lbnDT7SH/ozCJG18E6Wx3WXcr18Dq7s/u2IpFczJZIUm6ydrj0CASgJdmK3Cf18E4uBpNa5okXRLEKH5YaJsZGAuX8wwcoOaXIGCp5M6GAoqPR6LC902ZEetpC/U3Uath+zVX83aRV8DCoHMAogoF47bo5jOgUoznmaQg6JFLajFtfUDmgxudzZQUd1r8lH6YfuS2UnUIw79y/4xvRxLZSwK9zpB8ek774C0lI3tFRX29R7rAp4TPNv5YZuLCT2JmnLACfHeU9od/vCWP+A7sX3AAZ8p/NVY61l7mhlM2KuucwfooeV/W0fH+CDa/TP/CjY1GFK/qMzbwT1xQ+YpbEbfSmvxKZWaBzbmQOS4se/MW+qcCpBblDZj1FVcH0/CziJDqhsf53XXKI0myqR6o+2Q8hntLaLAB+ZD80MGVVtjMkwx4YK5ySaL3PHqwUwnCw9aQaX8QPoT3L2CyzLKe2JF3wxSUmy5161wg2AfDsX/wnbqV65Epa5HW51yrpVd/CbYCWyZwX6BrbYsQ9sKgNLKYLe+dTRmO8EWeVJcxQz+JNxk82TpXbqm+dX75MvlumMnCCX6dpBcBiB2euqggqRIDO0HN+r8lFnraJKoVflWVCUgAAAhBy3VjsikwRyCHez948wsq1ELET2KWIAvEB9R1f4WEexRm8TueeJF9d4TvIWe6Fbr5IEjDVE9gZIxQRnz3sfEzad5cfNBSthi/L65sr/TSgzO8PZCuwHgEbaBzWE7DURXx9SJfOp6Hr+sn3WUfrB2SzPjKavqBZlGeWRV6sbTFJpRyTieMUr3nmpPKejeZ6O0ela2IpUQrVXapG+SPH2bJf6gxlxqE7vAR8Y+yUKdkOtciEaLHtlqz77Ux2AAG/i+SjfmZlnSDwIUO7GcjUhhC3X6jUh8nwHcnakAXfbBCUDzBZWX3hTxbpLQaZfTF9xQGlJGwHSWeBhHhDSVpzzzhEw80aT0SNCZbqhuKsHHGS5/gYbEFo/7nlZJqsEVrhhvprgP9B7wqnzHRV8+JYl7da+I7CXKf3KygULNlQwlA+YE/dfWt8j1pQOZBJp3ymqPKou5gOsf+JnIhuqL2IlbOrhUJe0sbZCKU4d1+chyaRnKvbbo2a0pCSTebf2aGB3IBzlmqFl7GZy6PqomfK4Ohd+1mdcG0KkwDqWVu58zoqNV2Octwndxj9KJHbiWc1yUiIjLknTFC2oYud08fP2NsACAjGjtgjmWaHL3JPhE4sKMpF83kOE3f4KPyaMeGEamhGXLA/GPkAhZFF20KhqCNknekuC/phFOFZRDyQ8gN/VuWpJ+5QtEtYEmCbY4IO0ZAKPOtSU8xv482f3m88tsn1Jzl9QljvP5xa7lJLBIlX9gum/w4a7Qjnhj20c+fYWNyR7x7awc9JS2bEF0fwzz/6JnwWji01TtSpiBdhG25AqojQXX/jY6WZoj2l+15nCrZTpEm9DQ30EE3vBNe8WkQTNdOSXBEq+Ekra0Vil3bTpA6teFHG2uHwnOBwb8+iCXHpl4j3gcdwbqNCBh8iowlhspExbMHpwNAKUR9FYIlUG2EpRt6xFY/IRi1gHx9TNSxrZufPtClUNyTtVRSDvu3FZjEnUhpjwZDJp/SMERdTL1YTg2VWhf0iTtuIFkLm2wOMRJweKn14i/gnnV5tpdTCs5FCjFGbWdoXtTkkIgdNBgJxBuPS/IMqO9mCT5wSHWtnXHvAiy7qQ8MpryRzbd2fIqq4VstgzsfN5pzip0zO//1bq5liFVX7KZpqVzEG6YRbPe1D2P1+rVD7MCmvxsaWR+k9CmmjYz73gmTYc/Pf+os5l6R/xXpx8xDknRpZJb/zA/coQKyQlfhHAOZHyF5NJYH3vRuE+lLGer/Z4eH0/8z7LqOlfci+pdiyz5f7VUV1ZizOEXXcpGO61dYplmsC0BmdPbGZtbDY5VLT3lmSD+kRYCvfMOkOirD9dh/JJUWtXNmR3sxbN8BRn0Kr4ThVbH+3L8qSEw0uFIDQL1b/md+69q52njhdNnhkvDrRHlFf+OE2R2WmxVF4L7lQtmDd52zk4/dvVW3d6TPsnE5rRJYPLgMSCmYaLzCjNDGoniZXwwP7rFdF77CFJB4CgrKabX+KaMmeX1iamg4uJybgainToOGaBZo+4XQQvsXHa7imDg2w402vYpkGkq38p5WMOf/4wkoU9PWCT8zdyjKpj7ktR2If73avdCq+XqyQKsHILC5Z2uah9vdBDuVwBxynieb1hG60/bMZEeHeU3KbPl/8ND/QZRx1M+78z6ZudkmI1B3MbeSuROCgEXr8sxXaTAyYhpI2yvYcvzsQLLOq00WjaVC+iUGUyQjnuDaCda9wXdOvGA2WqX4CVvTEerXcOYKJOc2XOUFnZzcV56U9iceMoABDLLALfbwuJszYQJKkw8hn7HWVVxO5N5iR3AISoXv7DL8YkDVxwVq9tdIxlaNv2Egj8W8kmnyfJLeZY2Pp+4Y1ZREUAow7KJun5N0Zv/FTMwvpZwudj66sF/1Yj4bnKlwyAvoJgg0dZ0+UyoExEqOLkrWJPWEaNP7vtEYxSIeUF9b+QsLIZuTTrKGU9wgDk1dkd79ZcZgY5BH93pKIYxurwLDh3eTn6iWrns86DGh0BZ6eKJjm4HnbTeQ6ZdvdFzNxUq7zr7LTaxKzIEiIBWE6dWc4o9mf/goF7vcWoeYj/aSZtWR+3jUaLBAbrhhLFhzckim9+q6hOzybeXz5HmJ4lLdnRCDuDQq8MXuyyJgfim8AJNPqU65Fl4EDEOxToH5dqWpFS+BlRt8k9sBD4uxFViUIVV9aMEhlNBD0fiaQtN2pmvZ88vUEV2QRA0S3080dwNoTDmFg+zh3F2XQ6iXMCcI4liYyZhosOL6zMg+6dUWUCCkC6D15iL7jseNssgSvr35scw4JAFaNbsRVdQQDMVu3Tokq5xnF4Rp8Ko1Q4TfyW6LURfAQ5t1R7Fqsyeoy9JuoH94Y47ZOrnD5YUtfKkR98KOuDlsVWC3aXTg6wvJ8DWP6FqxUSRta/Vz6wVvhCRvy8+lORRg6PPW2HWcLvSPUQJoUxQFSOewWhaVlmbVXJCceF8UP+y1kgxxgkkjorF1tKXgfvDKh4oWlYZAp+s36mdwmDOE88nqponDalbkvwqC5XfsOdfCUwOkjnZjhO3qGf2NlIf1gtZ6AL2rHfq4kkrOttvTjxkV1QoWAG3StnnSFroWOGHArZrshLQ7LNbHmGVCodtUCVznpKMLXXGbcSjrGJcBVATn+4Ito6UDQvDV4jSLbC3q4f4GsAQIKByBlV0JiJh3luXc/WJ4vF8oZgGlcNNcLev8UfUs0GJ9d9epo8CUQgFeHFDHDugPdQQDENODbM08H80SM29QZ1H0QRdeMkTaGFFyRhq9ucVmrQgpC0W8e2zRC9KZNIQ+IggwH+7byxxF3DSwEgt/GW79nuJGhrhcOx4W6TazoOn5wdbV7xrJ98AuUzkhMMrDaE0qRmpDVkCEChREdbSjQtxAsDb8LhQK6TNN9RRgbEs5EqfUwxziNWV5gP7xVEMCP92flKDrKGmUfm18FMDsLglTDLV/A5zkP/mVWy/IrfSaGixa5LVZnVloOYoZjpa9W2XX/S9ve8FdGiZrzi3XgDuw/DEOFRnf7XjrXU5QQXgFwaZI0WCrE6dIhjevpCGHnUYNl8Mqxbha/fW55gAUSCPnRTcOUT814Fur6Z6qZTl7lyKdFP/d4xBNKXanukw3D1tyha860c6mN4C8VHEEgXOnkgxCn0w73x5FR2HB5pt8/4SADrCjSvq/2IDT31XFM+P5oZsExbLtr60JLkt6R1HArPeQ+2nvPK0rMqeHcH8sh6Gi2F1fM4ziGhQ69uKTrYbCotfr7OdO3MlP1RAjQylbTdA1ogiIHiU/8NvC33wR5WGiHNwb+YMvzzQIJvsSvzf8vLwA8i0DbxLCN3+6IYx2wwj0w+8CNNG0fDZU6fs9CdIpex7A4lkcXofa/KcOnIclmztK9PCCs3nBO+kM4qyHrNSiQV/3zq3mqlvKnptJM1Zyy5e/7BZBwMFcr6XWyZxg2R524cE5jhaGl9KgYyYD5OpWla0v57xflmaeWGaglij9zCpIr/6wXTfnngCJAZeZ2C5x4FdwMJ2Vw+wLDWI6mHXEKGfk5tHpMFt6jxbaHPNP7kjVH/eh1xBNg6rkDumt6mlI4eGISkWpWE96GoZCo04yEOChY6Qjr424qDT6IXwWc3XGVNjn3dbRC1r1PXjZSTx3YKWHZ5qn6by+AdtCHxjmtGH7K2YXtpcEBmmMljP0OeUwBN/l447icQULqR1NFutk5rbF1KdVL2WTpOsoRg99MO/EoNGLzFpmJHRd3hZHGkwa27MjCb16gwRpY1RGPEactZkIBNR/W/YtbRbbt05KROnkY/W6EiPx8/WqswaO0CpENQacgczhUquYkNDRQ0yo36U3XYKRbH0GgKu3uYyZGsuObNoSklVfB97uWMzcSVIiuBNVF/ZUJm2Rwz7qfm6ESvZ8X9T5Xqt1+6mvtOM3AgYn/JePMyaCk7LDuWJX1SMD7F3r1tW/+tuKhP8LwAZnZBatYTkyMgEAm2fL9DQ6NyOc3OsYiDbcMhmd4RYrgnsxLlYKJ0+BhZjJFaX53qcI6AER4E1QsWcuXzYqit7NApNcis8wUFulxXNXe4RRYfWB5kvMjiHVce/SYZ+Kbw3j7e2p6NUlbD6D8JmrNPnW3Z7lZrdPOVyOecWI/Ck5UOQCN373oB9FKay9Pr7plklTy6V80dBtWTTnT4ef2RokRZO/Zx7jU1MB9betivCI8p3jfCIYghu0Zq/kYGdueABVjG653zEDdz7Lwq4zezWze35y2PfdiVagINmchmsQ5F/wwXRCcVp4C3pPMiz0BmJQGVkWuQSMCtKKnVr9GxXZwGHZhotyaEp0KqIu8mwzKOg/FMxXhUupa2vrhsopLAbdQB422rdWOTOY6ISAFF/IACHMAzrrtQYKUpyNshmCDa1AAxOzgAAlqNzIAAAOoFv/3yQCV/hD6tm0YR+V+fdG5sibmyFqukj8860upb9XFnVCBzXfuTl1zeD0yJMKHdQqek9TwzNVGoK8qzrIJYTY2LDAGR0fTlBTH/T3oQ5SN98wjgt2QIasJCzz/1+nBEPkVcrvRSDKN8Fms4cbcjoI/TnNzzjSNjJZWYrg26zd4T4Qv3WXUDkUMo2h17nlWGA6dBk/5OD/N/FJ6rCXVVqs40dN47Nda85+VYDkCz/I8YESsKyKnVidxUwyjXcdZH1UAkdqnhGqa7kmAuiTZZPU1xmrtyPkRIpRuMwZvyJN+Jb15I5jLjnarrK3+qDVNb1bsCpBRkrzByLlxkN4vZMVbBKumBXEvzHACKHAcYmokiiQMFEKtgFz9XRpp0lXuTf38RmP170RYHNH68kpmUeGoQLV3FT2g36fY4ONJQQX7FIOv1kNZjuvNjL1vYbOgnAqW/XSNL1b448f/WeAeTpPL6CbQvchb6Zc9HJcSiPM8OPgr5BnJyZUaAO/PG6RvwvwueSfpm43fu6yT1zKjIPUA7wOM2y3NbCLXsrtlzuEJKgNm3AVwhyHkEKqiUCcxou/b9+cOpUsbR6SQZQuW2GTyBcFqwH8kKYWJ/DM+WPkqcsIA/hyNdUWkWkEnSKLFULGPj3vnyhMcz+2OHuLR0W/89O+y1P/TSgihJvZWehuRxHUT7Upq9zkwa6pkZULpzR3muqSVNvZTkBoBAO7yUwAQUcNoMxlkxp7zuZy9SI2eDOkFO6Ds+GwuuQhBCju+4BWiIQ4JP3yXMpDhssKlxcFiQWXvJ8T25Pi5zoVYB1vpOYZAogOn+2tL7c5DHQfoi7ntY7Wsk0441oC2TgCQbW4jsAMnx2Fyz7/+c836mg3OrhLw9xayyw3bboi3g6/SHQ7DCXUiHb2Yiphl25gLQhDzzV+DrBFCIWprzsBXGbDL47jBHMYXlrKQvCCWs4WgtC93v1+SE4g9gp7MFFeXXNQeiYHFFIbnbTkIzwVh80ClRnTZ7oAo2QNGUj8Xs6FFq0/NeHz8wAussrz5fUs7ZavzOERTnHNWrrfpmbvZPLk52MXxVWHdpF0RU0aHYhaCPGBz5cb+nRjVx/jwthtWRrBC9Nc9SmeBDQg53j3X+lfOY0VA3U7f/pHTC6FpDF8n3HVyMqRcn+mETz2/wmcaxmC8GGEaL1vOzQBOZBNDa28Jq3jNcsiuLDrNrJ0egG+LUHkicFHez2B0gQIFEoH66VvcsMJUdUv4YKYIrGSOJ+fYS9qwxdK0Qy4PFoUluEKI31O79cAt/R+WAom+2D0G+3B7C6DoVCEnBbMBnz9TmMh2sAEKBrfQrwiPQFzGaH2EQ+TwQUxCB9nMMDkY4KNfzSS/3D/2Zq3uyzIq3X/SmwfxTESHJmp9MN555bSRE0nMm1qw3IEPCVtctfghNlm2UAS1PakLjtjblA8W8LSBPTkDh3UHY6uoNeGhI7xaGpWhBWEji/ZQt+5kwCBmAC6C7XBpi6eisqRpkqP89bMEGRn1TAAXGPuTbKMaqV1aTg5UnDW60jaqLHmq/i/gO0QZh7vuk7nS+zFJddTmdq320yfczVqgwE7rei+AQUsQCpyNi/1K9ZL3D1A8YoJKf9lEFMEOWDlJmn24yrus1Zh7IwXQiajG9on9CeEbFtRzCszFivT9YtFKeMf7hC6YBBjjmXcNdfCVqTLj99nePhCiHLGiX1GQttJZsbmdaCFy5TxWCc1NJIu9nilgXItYOYZ8HSdt+mk7gb0aLFjsLg0p3qMXQI5WisUvTR1EdxgYXWDverEpi9LaKowpweUDDhTj54Fwdx6Y6U6CM5h0sD59CXgisGu6SHN3WdjdM2ecKt1vP4zRYCOC6RQLb8sKru2GeXhSXcfp52QM/9Cfq4sqV0P+YzqS7dUf9q0I38wiP7bMZkYTt4bW9WuST6hO9eMHojoP5TqVkDZCfnfXgwPPIDGk0wVUVSAtuEszIcZeNClMc/bK2b4ToO7mZ8+KnAklds2fwBVNkEISsujhuTl3URUev6sGZ7qI+ZrwBLYIK3HKArGS3P8XzPTtldeC/2FEwWgteVyi2fVrZ7c+zWbNdWcUdYY518VozUJtzYA4VzliZwivGzfWa6KRV0Tgi8cHmhho2XZuuPw4ByoXKWJIXpAnnc3KGz1uEg9E1Pto/0HZ/GxWo7wuwuGSXSJrd6lU9BAvBJMoNHbaYTHAZ3MY+Eoqj6M+C43yA3cvYEvXmXTl3Pr2YTy/KK4N7cn2JlXSd5dNvAVB5EX8dVKSpjHSAD/mexnLNvb+mJX/jzQR+WjY1yrMdxDJWtuVjsYaMJwwv3lO0U6LQtCT501Ts1/b7Nkle5mVR4l6EwgIwMskTlPrr6t62+jeUsXFjqNhIiA/maVh+2+IxfjrqG5t5Zs+KFNPdPXeBfuiSh6HPDM9XTjjn23r4Iudj0O+88KKZtVGxZpGgCI8uDtqDlDVCpKvwdHQ3A7UELiWKi3BgCzFOKBp8yjCk36mdVWaeHETNA7LHq8oqSA+1VSFcagZxVsRobj4vTG3sWINSKirAzOrUg89nzxWySgvqeibG6CXwoGUydVUBAYx36AtfrRqPoMtm4YvYmo2/RnHASYRaOMBlDxLd6fF8qVO1OuBaBrFYcsZDHqSYu0PIyrQPJqFHcifBRkVljG5mdLwDR4o4G5iuaqzi9uiM1vJTKf5idP6r/qlos75sOpV3t9tZlJTxzLkaxwAXGpDr6cAEJElRLsIqLEolWnprZp7nnKFQK/cCn9X6oC6HBh3v1VzM9wTWRbJdQKpx2GwXsQZ+xBw0CsmYyT/XhRQdmxH/y5lJ6ZHLsO+oRgCiKRJv8wL4HUUmzaQ0I3e9+vHTTkpdp57WqVqo3Jjq4vON+9WizXC6gv3GK7wqidtDHDx8Rhwi86ZMHbtHJHyJgtQ1c3lCZYC2OuUbF3aArDt+pOcnFmuY2ajdvedvz686jh6TtMl7O/YIewbJvQNmX3p9k0bC4GFdJ/Mk1WD3mhjiOZh53saqLOnjVEwpZLYttAj/b4erOfSTt28EtKz8cH93BeAuYBeUN8Wv+QPr5Pfufy48m3tu1h7g0HlZmLOECS2FFNmYBie4qto7IGDFTqwlNMU5HFPUbniHY7if4J7S8Y0VH/GMCfH/WvhkDHkIvyr/LWnOvLPYGnZC1mhr3vtdAkekLDHDCs20TDqTkwTjaBsNBmemC0zxezNYI8WHfrCtTXD+AHxDzn+nnWbL4Rt2O1kBogs2SL79vQTRLo4ei+KxyzThyuX6/2RLUMfoNdEc3pVSaeVnunLhPalvSMLE4anFe+TYkj/Yc8UlONzeDPoMQTK7SX3/9UfxykVpqDwsIZMz2/ATQFamg9/BJ0zIkvsVPrc/p/npDFT14ROHlAw4VDF+MeszrvTQ/3XwUulqhci2AWWNpb6yp1I0szSyRCHaciP0bzPU7U1V2hNEpLk2FB4q2rsaNESYnqJXV6s4yv7v3KKjGuyXurK4IQAiXEcZC89Y5VsNZvW91kW2pAW6BAsL1plfCUTTH7Y22GPdNC7zCEhyAZxZy3zl1c3QTI0tsYKfoZ4h/N8AOzlWh2Y3gywWeQkYbD5QOlohOH4C0TBQE+yWGg/mlhZP+N6tPhzj8P/IrCqEAuF5DE+wuhWUgCdQU9vgfWwKh5gT1LoC0fAYm8RP4ivOp2Y1m+qi/VRU0PmKqdpCqas+g6/ZUjEBSkcJj3DQAXOQ+g8gRNPcEoZ7JysZcSGmPLzlvGhhb1tclvFSN9WbostAmLAdTV1ISioG2Z8lbZswbkWqVgE2qIp9Rb8lDCAqtR+vU1aCAV+w3xfMFI16DTqjAjtjOK3DfogG/wQ6lSg2DqAY9GNdrF8M0+6s16kLWaQ0PxMuG37JWCShzowuD2gVUPXTZ31XkO3ujB41OmQwy4W4L51HCEjNgKVB/ZuUqQHjcm34h6S84/J6pkcIwdT5yY5UzCNcw6swfIiXvc40U/fKmq41P9WtfrYzdtK5c76EPqbGXsNeEESQW33xADzMEWJyXKgvTHRD15K9XFU01zZmz4Jhe+uXZE7cND5Jp7ujhJTvR357mEhD9N7SR9OMbHvS1m7ZVFBV9d7rctCyVoUyoZB7rvW7Dv5CmFZgNtkZlhz3wSJCXLtHejiJ6oyaKNE3uIescAFwaYBTlX5H3GTuC4X8Hl8gLCykX78J6Gv7lLJGwPR61RNSU0dkDQxD6eMlSiJ3Zl6u5Tmocf0KZpVPydWZH4QQUkIFJmqdiU2KPYFusyyCraQ7xuFZpKQL+js0KPn9Fn/qBj/x75kpGltXoiHbsm+yGpwfAUviJVdMlm1axlHDp/QJH9sluGq0IwCJEOnx9qV2s3qQfbiXzWQYD5vkFrGIGm4RpdcavpMeFOa0LPNC8SSmghGA6IkCA8bAlDD4dApWxWZmkB2ojdwKYbPYdlI5Abv4OxohUMZdEYAEmrNXJuY3fJ5AKcA1cwVR/ovibOvdr56XiE3pNtlYW+pnBW4DBS0RaPlIECEVX9odFuwJZRxNQdEJsssReWBST4iF5da4Qc5InXuILFDA++VXvd4pjE4yTtP++8vw1bcEFJedaifEDcH8sI7cJiBigsWMSqaiSlKD6ixOn3h2UAq6n/Xcoxd7kdaVrRmHPPoOXuvER9Q4PqkTkmI3WuJQhNtthWqPS9ZqBnu5an6fd96Dhww8JvWZos1SxfW44gtwkh/PPunJCZYdxBn9IdDjYdfUQ6/iTG5IPLQ7MYIQdbzJ1GuBOZzZrwtdiOnp0e0yz6z588snYbH19QrYF6jQ2b2FQqEPRNXwzhdI9zmbUjtInBECPf0kfpYJ+b1M7gs20BOn2FArx2I3XW8GO6QOZL40rUFpN1XKJr/5jwruV+qA5yxSeVOtHPRT+t0rGfAGFS80GXG8AAAAAAAAAihqnx+viMSYMeCho9rPBAq5LNZ8XzEut01bFAOdjIDr7Sn2YmJayI692UZBt/gpbL/AT6olUu36paG5pHHpdDTPRXJoNeYoy4IA8McETy3fl2a2mkXzIXNab2Ap88LuPYR/8vuHTWb2/4iWHNgUJObEVaO+sME2GuagdKfEDQOYBtB6SQe4bctcuBNR7gmhg1sRyI4+u1O3hLfQ01eixWfSVd7ynaR+yAdWers9pnRvl+Oi1UeMCZEBjiABbDKMRRiC0OzgpCHXok2bduXjqDpErFvzztIvd0arfwMWMRhnkUOmpviW7ImjChuiqDGiS/mt2fYxJsKjYi3+GK3lYEpcP+WO+2lOKRTrXtccZQ74jDryWGE9sKV45RNfrIAghMT95Tfrfj7bgjHQkJkpGmG6FrEI3Gfk9GPYTs15madp+Zzphn2ttpjy/5zc1LRMNnlwVBOmFIfH5lwecKLSCDJr+Kv2UZt64INXR5EJQSDJx5jvIf+O1CQJxV0eYwVnAulX4wZSitO7jLrAQWr70HS84SN8KdTcauiqDjrmsLv9NLl+oawkCpNPYpslOdQ683lHkDHS6Af25r2B8QAiJl6F4xWeQThMAeIjLAPuKNJXSEc4DyQaqODXfYLYGb0WSvwk2HQsMq64NWkf50M1KjxypaULeR5t9RJjY2yhtWQQupx4pCSmufvMG1G5DDune10QQo7MooACR9AAAEgsAAABMn1kWg0vRQAUUf7NB0QuycO1TBlP7yVo/lwlMdMjqyzw2XvCJAkks8fkptnBbPgF1wUxQk/mOedsjH+jDWYEWdCABWOAPJI+htoyg4eOVSxgzw6Oyum2UN9sFUmY9WBfVtA9THYbQFizcWT1Uuk6P5VrxNiShW1sD4Y5NKlW0yAKGKhJtR0bXBNEXYW3dFPKDgCx6iUvFdp6Bj+ggi0xhoXxBTi3XRRkcg8tXR9S6MvXslcYthlNx8TLkzMhqmB6UCt/R5jPiAAAbQBEsmA34U840KJbya0Bqp1BBX9m+ImPJKG96N8zTrBn94MM9/LWBaFhOozf+72xVTVIoOn6FK8g0koh4rwvx7dtRUeq4IUbiHtA9pmKDr9PqZK5z3qxqvHCyD30FKr+2dqd+xxDyw39mQarqxDk2VF7c23xCDWT5nv4cAB97IvdC5tKA3ghpJtAbc24msZRRC/pWAAAAjahGO6PuHc/xNzvDpQx63J6Ohg3pX9WhYIU0dNs31a8C/O0veufnNjlqTFmFHXcfXQxFMns1eH9wKEgnXQuzoptgMW04tHUzV846fhLm//DePR57xR6vv4pHfDSSqvaiAWhu+YfEnvc7/uAZlcJUUCtgb1BVdo0ixn8cbmtKiDnClAwqzAA9Yiij2YvLp1ZIOrdl6HYBNb0T/YuE57AeNwwgO8RRj8Luf5OiMvL6WUOO28tvJkHMYN65fKhp3h+8J5QKBNrFVJme58+NcVq7PMbON3QOUztnJYnsmnBDkqmMx2FtHW8btIc7mtkzMGHKfhMdReHXsTIs0zRSEntw/NGavg9JUzN5vSaX6ZeX1WzzRVBeMt7GbZEBAPty8qp0BsEG2rwJ3C6y7sszdgzz9GkvRoGYu5wjgmTDjyhhIlzyX/6bJsUorNh4Aomd0aLI9C68T29rvObLUj2GLmgyAFv3qxLsXP2P74SLxDVNnKBhihbyQX8jjYeXUtcigI5G/9QtaVK7Zvvvgm6dgkkrEprW+6IlM1zDH1kOIk6ak46nhU3otOIYrzZeaEffsB2d0zUEPKQ9TklUL6dxIJLIbkXMbqOuKr7avHAz/xAj6SRIB+Q8cp1viM0w51XUwCKbNYw+hr3dQ2vjXnQZ2zIGyTOe5S2/90eXWYr8btRpZzFM+WUWij84iQsuVNmbm3AZoZfxzDWgdPigMp5+Kro4pftsAc6a3ZVqrLKiHWGEZaIKBWv2yO/HT/5jW6xb191SIr1E/sEh6JlDATOEO08qs3jjB93cXOH9/WGuOs1Cp89DwJiRzjbbN5wQAPW7ZFNOix/wUwk8qRqGYvz+faWhb1yC4/huQ0Ll1M14c1rorkB0M88MUtaz7OduCgsnJe5cerRetlTeshnJa8Wmkp6lpLWtgrBR3QcK2KMw1vfeRrH4DkMtOy0fNySL46fVSn7Vj6gA7jKIDOnTWpW0bIg3N4mv0yvfkSZZStYuN7SL4DAlW4TRer0KCfxFAVZ6mD54+kC20RmCE/DjXmwoWFlhHDVQaJSkb70nYyI73ogxMDz/n9vYFfCaCpt9r1rJCVE4KjHj0XyaOk3A1okaVupqJbupyDFAkccJSI8D9orbRFh7i6YvmO8XJO2ntFoE7wBJemyH/he/e+nIvxH/4BFdZOrJPmcmowLuySQEudiCMpiGbX2UF18Y0FZHYfewfdPLCyT2SrcIfLnJB2JbKHJxOtTgLo6sMbqW92TvglX72fVRufbr9mkOxdO5sFzs+M0u4YBorn+DbpQuCC3Fe4gvfnBxk8lnoPSg0nE3/LA/AB9i5EMwiL84sChsw+7L0WlS+3OAHsbNSUNPiXd3/TEZizcU+63iXhmo72yvDjHyHbu8r24REz+mR075H9cCl5zrQQr7h149p7v7tcj+chBsRQ2sdYS0GWP5qLULrKadm9Ztn+kuwS5Fme6peXyhbQdbs5eh8OKR6e5M9Rih4kX1GvH7/3/+44qzZZp7ey3uef+LsTKIFoS0gcSFJQ/AJy0+KW8Pz56whp29GyYWQhRr396hPfN+KZdOev8zNNa4JCo4C0mif4q7qLwEOlsKvFnCuQGMHwimLRn3eGrbqZAeF2bm18yMTabaP/hTJpVHG3KwnDnb5IxENRAWjLrJ4FrToyXmbh/5wR8Blp9RPhEU7n/DmteNjOsfxaMcpRSxjw2jsrFW8wC4WA9jUNKYax2gVJAwYsKjxklxfvaU+OaqnOx0Mf22x53kPMF5RuTFvsSwKh3QrTHOHglkR6Srq7A9pvj7fisXlgP8ZAodnG0qYR0/wEsn8tLel2cCIhL6p0oNrpX++mXvzpggda1AtEsxsPykssrxN/RRmGCWhdNKlES1jQmy3rwK/6DEOzxWEmnCnbSIIEeJmdfdx/APesXeA0oPZ6v+kDjigrwmj5O4/4PVZ5+YkEj2mYbs7WMmCH3xFzdb9zGebX3tKZyZQDd+nqZOTp9dy+R1WTDACrMcKuCXnpsle+Vqpl0vmVCzWUoc/j6YxXJEVcnEm9I2NVozPUWsbmuaPH0ZQrotOjMGigHZwHBmNjpjY121vIwx16BebjZEvBgeRo1WZ8I5BOaQVMsGO5zd7zIJSSri/Mq8r4sbBhJXh4IQjeUJcibhR7W0aWGEMIbGa3n6/k5UwIB/hozw8SNj/1YZlic64vq3b0fJ4wMJb3ZWf0KdOLXRvfNhOS+u/erKdCwxIegZl6rqPGpJFpGD8Zaqr46V3+uHLP2IVAN+j0yAJvKppMevllc7eg6Ni9bpqJeW8k8gCh7RzWbqfPtyoIRfkLebEaCxptMPw5zU/S4aYqeQAJ+qt/ixK4zM0tmmdrSZfPwKtlHycNy/PFUjgYeCY04VqNDj9hqbScFtAawLuGx6zaiSQ/QeHLcILpx1HquSDHTY9fB1gZVQLDcphjlImQwINEqMb/X6NJfSwma91HN90H8eO42ebwybP3XlkChLZHtiCCvRvUuEJwrKJ+hgGH0u2jPwlmwvb3YOp/Oj9oMiUUAGFWImZ++H5+mi6931/TwETEpro89AXD+OLDWrMpUM8lQrmAI2mwzqr5zdsKm67HOSGIPK5Nmx4pF35CwhiqVH8PaS1EdP+V6buGdixkKzs4spScVK46kZ6nMCUApSyF6RTM6IXY/rTvWkSMChASX1oPa4VjValitoJPOQBWwX24CZ8AKnw1qYMgnDb/KIu8CuOoAgUkDidNSJTDmFLRsawbN8JG/Q0g83O9vCSxoMA+gUNJ5cLOUwrksMQBvd0GR/4z6Y0ITKOnLtjp8VXTYJGrPhiUFsocmSmuuNV8W3G8NIsRh0Cs5mO+J22b83lNG0bUu2J7bnB0nwYuqAZDTwcVn76CilydaLxgLs5yll8GXEa71TfOTNK8OPgL+e1mcffITEr+Rfb1rcc3p8iYtMB2b6YlnJ7PdoMi8lFrsDv5PqwGUj9Cmvzlko0Cj61NiiOn6OfhrZG9Jkn3jIi5sWotWVOWRDlXjwNzZ6zY0BuytFgUUh65vzkS1o+f6uAVrGIQ6eNIyyCrc0/c/k6/QGuemC8RWitTK2khNjlx9qY/7GFaLTFJ0EsDzkpwi7HmhGR+gt74mJRlv7klub68V4VUkf4c4zkG3X8+4fzLJL+M7n0QxclPruKtT06KzKgW5kvy235S6rbCgnqGM71Tp7OV+ayGDkIJaPACTNQiFqXhBIN7354DWD7G6xXmlp8/vjsaFWMja7yUlXTreQlJzT1w5QWUuXkU3nKHEIQpDIbmtKLYTAJOrHGdPm0UytWVtYLwlxQlj0wtktywVeAx4eMRA98b4tD3lwYQ5ph3+jnUS46KuD6Eol7NLDgd4vu8zbv8Wy1tYAyo83eLsXmcI8xnkrR6lDWxkgQUWECf8XNBJWYQk7jzjZIeYpar88jsINUFuIn092EypmsURg1v4F6dIw01Mec8oQau4udqiWbrZipK4P31qujxU8vVYB1/PPqAb8m62raZGQkHd8DtbxHoJunFcKvRxu9vQPXx6YoT36//Jfvvb6nAevlSHIF+UTvM/Mi/tzNbWVm1pkzhHXnR+mNjRFyVg7MZk9D6NvcGMn2lx3/5RXyD+mE14l2DqSQmnnOkDvFDHDaIVVX7o5CDULK+UKRJ+k3E32f/sZdKgqJEXN7NL9dWBASDVL2At4wsjAVpABXsE3yvzfbGo2RBKMrbA7DBnuT4G5EbPF+Mr11Vo5VOK3eIuE8bRh2yLJjuCpIAYKlSjxQ+JVBoWfRVqGZ7kmzI9eA0vjAZ45wBuCBZSXMdkITPvIP36eeqElLwEBIVKi1+Kss+MgJXQpwVJ5eylLwTk/Xi35ka7FKP2MWxdPaE5iwSQSMKlqUv8Tu/T2U5V+2mDN/9a8Ljtf4ofE10YtJAZ+yJPL6WP4K1kFATwcYKiLn3FcvqYhcPAQQDi7MNAeeAH9szdp0aK8jzLK/egUlBd+d0yIho50Jg8i3JC5lK0GbblP4jOkn1jTd/nI83Q1goTyrtFlzgfaj4oFWcM8853MPuGq5CPPOEgPUmDDFEk13jsD468o7Scn3LujXNGi2PvD5DYclRoa3+nUeVGXxBslmEGpxskLYRLsuNTkpvsVhL3V1z9Epa/rMOSuQ4uPmBvm6qqplpncQtMi8J0AAkb2qWivXz8c7NBUBg1cc1O6SmNF5iDcCRLpHOojWQ8kgRUrwqK4IGy9pHCCSTToym9wUr4kziM45u5Zp1uk/v4FeOe2Dw6KmNjocV34SQlJRQHOgYuS76dkJOfCWCALM2W81r/7NwlNFciGV3ew+Bmrj+l4uvtkl8JKBEwjwhKyvmCtLdm75CcNRQ0YZ+EdNSyRgNuOS5cDSUhgKYriEM3bNzJM5miybZHJ9+/+77tYnoUoTEnKGBNhpaRH10RX+unJTr5mdNPGOogChBBFJHViKH9i3vL72y3IXjvGr7ScNpe7G0x7zsyK9kIRzEI1Z0tFM5Dok9wFbWhsG8CcKES4aLcv68gq3idDNuMAYh2iQ+9kbR/UH4yYmLxUSG9AVlEZsKA7WGuK1RZORpHGqR4FnpL+sIea4StGx5ozaui2fj0f7lxiZnAj1Ps4AkY5BGJ0xs8HqP2SbrxEv2QopjmxkzM50iYxfPfk5VGUDazj1vgeDynk1mTa0HABcRtwmdNZpEYAxLTYC2C0Y7egb/I9uMDZRHhMJGh2GH8DPchyGVg0j2z8pJvXSv+6A/3n5nnLXO13ze6K5TjwgQLg78yoN50vdRf/mypbomC80MBAnWQJS0vjdOOtsSmvJFXGhBhqvjDpNn6UbKfv0nlrK75U7p4NdqeUlCC+QjX9iPgeyWcH1Sjg6hVW8atonpHkb/InZGfDAtnKXXLKn0n5oF+Uw0HdTy07vr1t4BkJoxesKDevZginhOwid1Xfm9ycHWbxa92SoTCykMxbvYxs9eIJD0UU0ccQ1q8dj7Pejc0aFztgrxN7Qqlg1sWqoGFx3UpFbCrJYlF2TjkVJWB4mMzLZ/Fg7Mgx91x/PlfXd5Oyl5O2hWGUKZbVSOukMoElKcd3q7pcNYbKbs9q777XfsSaiDK0mHMKmtkXRygKy9JU5XnQkQwq9YvOg4ACEcZTujZRTYCxofTqrM11+G52iBzku04PjkhxcTlapk/WeU8N0oU/cMHF6/Hho+BKACZ5AySYeLsz2fKPW4ImtNBx+dYYXAFTpCOhyXOSptkTNmZgvdgA7q7AKVRj90gAAAAAA+JqvKcPa9b/yVitfGpftvIs2D0yHv5qQyTmwZ2kYc+mLfnF8PRKpG3reqT1M+cZv9mX1nNWVJYofJJlPWQi4155x3++cROc3gmB67tDO8SJmRT+Jnjfxy3bCL38ctZ0UMwNPaaLKcQX/nLdvKdGcepXPT2CNU/xv57IiQSty/Z1D9LeDWdW9Sz8eXKWW7dtE9OYZ8HSJNWgkGT/lM/0LovXR0SuHx5WDs5G0zedvHujXnlo8nvPecDLjYurSal6ubJVdiH1k+St/M/f/JsepxnUtugMzzCIHWAT9WJrfT3fKuT12bMEOXKGCKttUPUgYyE8VFE2WLiAr2UEoE9Ir7cJ2c3/g6sLZGU2Tq1h1YMUmuNUx76t3CEtkn2vyIU6+S7IoGY10FUMHO28kecRdvEgfpfRof0LdqBVp1nE5479Lse5vatAlCmTZePljkr3fe4nYWKktdyXJ/Zeh5dK9Cs00RiQkpg/QGRnlsdtkmm5U3B8MyuSMXmQQmcL0sJppqrqDEwyWbBam599oHePR5WjbbOyNVPgC91Be3A3bpl0ugaUR46xseNpRIlzo7/2lH3gubVsMw+0megl94c27DFKh8odn1YMW91zEFR4tcxsjGau50a9NNYHp1Io3FYABw16XIXBW/arp3wEGOvsGSX5SvkXRvlc98dIed4eQSXeDD8pyWX6ghhBwpYEp/mzd3SWA6eIxUzJIE01WdAfSWmC0QV6FmMinYfElvmaNcJDU0IJQjWDl9CeS0CfdxrM7TW+andQS/c5ox//zSrQZsiAN/ggSvcrafp+s0hPxDJycv8LrpJ2pkyyBnFZzOSfyobDmj1f/ess1869XNkquavIFyTX2TiUmPCmkJI5+jcDvHhv6BfDaSXefkHsYWh+lQ61It7xWJnADryXkmPjftZnipeJtmC1l2qxMJtGmdSOE0BLn7rg9UGoAYY/hPoIURU2ccaMW9RSdgXxNeOddRfpS6kcGW8iQMuIwo510jx92Ncy0zUCbCdjsbK8dXT8GL1A0vCYk+K/RY1ngTWq66k8kVa36dMFnvWi/RTXsCbfM+V0HNfqFrWrTOo2yzWpvPfIcBXj6+XkKguN/hhaKYAmvE60m5Jmewllz7i3SorHUVhNkm3pVJttZ0+Nuw6/z0QfgtGr991VtVfEUXub1nfc/GoPxVv0bR6J9X+8aVFKkjU1RdU94O64AJKjlZcB8EMrsh2sqDRQCNOyXdl/VfTSUVDNv/CNlvoSjZ8JiFscrwjxw/g5eHLiuzb0DL4G4rWdboZYosVeac7w1uA9MaULi26OMD+p4QCTNU8p9VvQ8Nyf7YQch1+M+R/d0K7EMoLmmttZe5oovxFIYKkMRNJR4lP7lLI1Ot/5boQnN7LMP2bhShCQC99T+wlo6C4zbvjRRgJ0yhxppMgVXPr94RzntXN4Zr2cCYv1KJX+JXmXhoIaBkDM6qifeDwC0FWuPaTi5uDiioizImDyBALaCX015sHHw/kskW307ksY3Y2Px/xZM74soBeuQ+VUbuICce9EtfVR/XRGfKEWwG9dmko6ZEoflwuaF1OqRjhy2jj0umF5M0/fGfjHM+MdJ4hdbvmc2R7OzcWvK2Rkqy4iFtTLVNx4U2j/LIN+h7c1eJsnXXsY6ShagdMbg7Xsyw5MrssA1/OX9tG+Bjzd5NzTDHIT8j+HEGRKcDcGfOMWO0zRaBzV0ztQxnd/gTfxZlZwcCjsu8wRnDfCI4pn+iKH/Yw/abCab3ZoUYSTA6jDiIguQPnLvRoWjwa/4HpvuMAYC3vP3y0BjYAyYppZy2p8DwyFRG0WK639lVwPptTvfbKnIGkrWG9RzdftMsqkJKMCnlWwwPmLvJuX8YoDu1PL0ON7NBKlN8450+3l+890cKDoZcczWWdUGFB2LxhYn1pSr4VPsI9fcTH6rlj/lR5z9K1VIH7hrxW4NnyF/kRLfL0PrClBPwhQNd4wXc1wsjxycvX6vUzyb4jgQY5ZASvGdRcUmGx38mEUdWeKD6ZjHALYmOJjcbACb6lKmjQOXy7khwmq7ZJMyKuypPM9RqmIBtaRyQus+DvTJuPo4U1iXnwpbY/gOGmfW6YRbntuFK6B2j07d4V8UP4WVyfrAYgTx6TR3YOWW7Wc493IgwhsycG0wOfIgmIoIBTjUizXlU/qkie5A5mpLRY1Gjw8UR8XuUatZm+mXBo2badDVBhtDDZzevtO/1Pt+dkbuIaxAphKhNi16YlT/BRyt+QYOez+Sec9tZUwesEmkvvnYjFFbWU7bBr3AAn9pWFVs+DQpdHl+U5AKYqmhEbSPApvBPwvAXfTzCJIS5Di1SWWEAXuxEqt4wr+06xvRJZBEsqof1dQTi5a5FJnjiaWuLa8C75+JB1N+/UTxP5LquFgvNMXftC5ruQ9NhRZAjNApuWRwHBFyY/T9TUlPtzOcTqa9/xd0iKveISei1oG62pP7i3oKi3GBIdbSP52juSomiya4jXuX1PE4BTUUAjvHrMgBk/JETJO8eNVn4YP667t+9PiB3w2ZURCOpmf6Rqu+2nr1CUt4j11EVqoPZq8bxNZM66tgUJRkVu8MY5YWEpZRdU4tOyKHc60zSzLpNy8fWWMppyR5x1o5r8mLsWk+GN33TgMFLxDXLujcFZk5mdaj6baUX6o3Z4+8L7yEwX9Gu5VTYKWWjU/O+mOediSmYG31QOR83bcfSw7V4dFgYiHMcrnZ7BmAxgYAJs6+gYnR/hi0ADXrpuK+ynRMyhWzLyctZDK1CpT0P3zhgePCbOjTRQuuELMtPQvWx/856XStkUL2HS/c+2cgnJXbIgvi/wApu1IVzjOnyLod4UarEuthfWB31rlisqO8NA/VxSReOnPYMfqHJACoZtCSqUt5nXuYAuptloWuUgmdAfv/krXhnK62rax/QhxS6eXPyHK74yAuTcgNmY6Lxi/5ZI8EYRzwMekITGeIP6GSMIHmlekIdvyUmbCp6WG3xelm9YuGsx9Cl8uiOpeUeVDvZw9JiTieiflqFLHUXhWR/rVcawe7ipcW9y/2cYAADUPCatLjhY/zWV8FxuDWTpK3GQF8XyZmiRWgH7mX/l+PXh4XQupfAgeE+IdOQVc0MB72JbuAx0wJ4bxLxJwEPeoKL1fjXDDln2D+IHucp8KEtWJeFcb2/FwHP/eZnsDIKk1eLfdifqRZoCk4EYiM+MIpdo14/u41qm3keVpZeoNO2Wa/aQSDSsFLSytc2/rFDxDzcsaC7lmRw1X0fyUtXM8e+4Y4FBixEE2tqifLCPdeOm6hVJdU11bXx4EYbmwXGUEnV1PrLqzKEB/7v1mIcaYHqIW8AgAFLj7mSY40ufeL6iE0RCWjcxsUCPfNHkYVvGs7E541V2MUeyN/VjsI9UBrYBWffGpbzs9Y2piKrO8GtcqmUDi6rOB3JQAmRhZfVUzKc46kfJJmp8at+XZfBIn72VgNvEe5mSsI8XKtf4BdCObTyNn3JmUH91+3NTTcw7RfWN/FOZn+B7Q2NryqsLwct7nkWuwgH4YHSjmXVDou4CBY+eRXusQwQAJ5D8RUKIWMglpFRvQsjlYew/YZphzY0NsHIJx206G/po87HY532wACctmaTrHatc/tnSTRvm0zEt7WocCfjkrsxgHcHbTB9Mc7LJJNoJSLYCzwO/DBf3NNFYDDJB7LIlD8oowFrdWDr8z3MhjLIGU2kbWWhds5DMYZYWwqYAN0KRG5dMJQ0bmOfZUsVAI2zU5q9OBWpjgSNMqiJI3YW+GuD4Xg9EqchaCbkcuJ9To/gYQBjGzG+i803Q1kKmlJ1ycKt6Hu23tPzQUCzvgdNK9ezaGSsNda7/Ze/tACFremcWsgw9E+xHfLNU+ETjnkYIL2PXvELqZjsJh14KfZGMVPNi7Nef6MvDkozaDYqjFcTP7T0v/zDGs27bQ6cVsxkEva+TB/tafThy6lLytc/e+jUcK6loLYNkSznrLTW05gF0szM65zMz70zXZIhZ9sskPQKlNtGQ2SxJUej6mHish+mB9IOys21lRDMAVNQgVJCVJPbYNPbRZTh5tTwyS8LJuwkaAABvKE5tHoZpFAInQIRK4NoT41QyCIx3H0tGPyqCObkrlI9vg/fjz+hGBODNxkuK36ygabU+H+kDuxRQC+gB8KKVEFLfDbsdyB+PWki8kCOwBlqHAwBgO7ik3LAKzv1Wc2OePwsTfhJufNH/9je35rhLpXze1c+M1qzDqCuxHHlL0f7gxOpUdvhiT0K5k1q27fi9dhklD/I5GSlPtgvb3M2Vof5ALAvo9B2RfrJ+9M2lG+wBKcSjEMx82mOouchaQYshDmSJ1MmYzTt66JEdzceOkdVE81Av+DjXq8DgQTyzbZiIhUOhwuOo3ekMIg69oEETR8wWc6VmGCGDXS9XPqKb/Cv5ytNSnFV/98rwoe1grQdBDg8A4HadiTesfAG3L86vp7fZMmSazTvkzqVxZ5SqzDyMJciz3rV8FcfKHIU3I9u9PpUgr8yzCnXiWtU3j7pUmuLxXDsyzOB+soWAGr41PTRkiNHxKf+ZrQ+4JlJ3fCpLWSThKfAC7hEbkpZERyFeLBHNE7jG2fj2r5wXeJxyDWJpzOrt6nw6C2w1Q0OzSBrptKatuxyjCr0R657uE0CsPV2g1RZtruUiVjKrwUe3psxe4an+ZCOuscHpsaDf+0gsIBqkIgJYEquavKIf69oK6Fv/28A8fr5yCtmbi7bJj/HRoQ8NI5uOLGnNKXmaIup99joFBOvofjD5FZEIl4VUC9Q3Wbyn3u5egkptrqm0/EFiCGnXfBs6uh4HHnctac/WUL/38bKtATDxvcRa3/8nXjrf57LKOpOUX3fgnfOd2y37ELALPTHdfyBJoYPTtwAKAVcggDVVrv4bF+y6t5CtaTcLA7cO7pBhFBrHsjNSXxW93/cU2t+xqN9UJpUKvzF26OvO5R8RXOkYFWE7QnvZQqVvHjyjJIX905R2jY5K5T3y8UEUSJ8nApmggjWwIe+ZOTAQCZrYR4ZN5lLc4Pmy4cxUFmNhnxgKWKZHErSUKRBR0+3nYeuumT8bN+A1N8ehJ67de3nbL+SylhVUhaeaFinWRP67eWQ4cVf7Ylac8GpnM6GRtQpfEgmmGNIw5BEcvEaxEBe9yAQ5YBghoJgir1o1uxDJIfJONs7f04ANap0W9jhj2fTgeBk38Rx5idxQKpPw9Xydc1WiKyf6FCGT2Ll0z8wVj7IBb3LwGdSItDYI6OHsNC3FIZOWbeVRgCz1IJy/nW2aUUYWdhvAVmaAjcFV3mnGqmFVMaWlcqY/w5eqmYDin2GcPGAFreyHSvoTjlfGE1nX8UZHEanfZEaWeG2tUV5+D3NdNDKFkKd3sG16S13ViMsNCOTL/EyJjUMAobQMyYA23JXS/1xCytg8yFxle7Eom7qlKPb4FJbb4qV8roFiesBFs3eXoGMbXjO0XscPbL0YINRARGamjud38gEbfLWILpVJAiFxcxcVqWVoYDOBnOOs5T0tVz6yGm5WfbtjQjyV3P6tlacYzp2r+CRZIX0pBtORdTIfkqisihoN6wbaM+cL/bWUv/L9uu9BKtYOVMqZppYUgsMaDaqRMgMD7Xm4jQzzWh2+za1JcZZI84RamRq/PJbq75ki6lqIfRYvvkG21u1NaD/7P1IFvEge8UQSGnvroVOOh15FO7waZiaX25OGhR4UppCD93Dwj+trGboxKZgD1OZcCQC1NboojVblcJPZAl3JXovopRC0jGbwLxZVw5HdpmthEAJCsWGh9dELRTmDoVwImUjeIbgPNsazpbksJNXIaCNnqSbSr4HiIEecnJw89lbqz9rI12G/BUBscrBL/iOA3W6R33pRcBa7JbQz/BGQ9JJYpC7L43qfE9Iei+d/+hHeaKaMt4YmRjbo3b83QE5sneUimj1P3PH8/hveETU+7B37WAkzvFdinIYhwdwoBnbTU7wyLrqwSs3zK4m1b01dcKZaq707rBxfWGKaGtERyzEYx/SRd53qASUn6BQ2DR6/JiCS8v1weU9UTcI3clAVSbIS3FYkTm3tUrYjHE7dtQRA51BtnU6nxhX9FgBth3K+BhqZDS0Z3nwcl8GDtYVH9jnhamIGWUPmX5eVQNGESP/f37K6CjzsxedFAuYc4jubHzQZepSKW0QXSUV5zpYCDSoQNilBWgfZ27nUZER/7vNLoXmfd/GrFaL4j00NHE6nOeV6uand9KMraJDUxmWL5zQif9Wlal6qD1HN2n3dn3W6+V1BYBOm88dyaxy75l0qeURs/FgA44RQEEbr5BOkpiU9gZmq66ddYEXzJXWAfF394FaWhHFhujQn5f/LaO++K5dh6/MaeyWOzvtPvtc35bAgzGO8CFqSosY2mWZ1Kamso+3M59R9QXaOiuYls1nRttvx9tiAVUay87U1OHvfqrWxWC9mEH8WMHLmhvS9iLieF3fT4dCu3MRDbEX5HnX4Zobqe/oK8iA/9E1ScoKrXwDPobJ0TJWdU6muRAiwuqrDOAwI+h/+InxI0Zv4X4HHnC5i3jU/hT/8HehRjYsxoueKkm7bw2tiYi0rHoPdrIsu+HCuHd59UTkGRt7ZopYLLsqtHpX4jiu9ziSKxrFiLsT/bbwsmywmG3wMSD3xtRSw5b626T2y90FBG0rw0K7cBlK9Z9XvfAPDgG+88HWGSp1TNQSg3cXbUI3wO8iTYsJ/f82OPgB/1lJIKCSJ7pPsIVuWCCeliLUCkFElGQx8A7hkVq8HfLoA+3+MXRdZp3r44hjFt0S2n4tmWqesooF4/t8sC8dSUhv4SqkiWWXwza6IoPFTiDfEbzTNRKpymb9mylo+81UFjWX+67fNC9pqiHpByBca8ilR83hqsAJrukOiYcrw7BCM1Sqde1Bm/rYMJhkbTvf3qCpmjZIiDjRKSnWlMO5s6jtbmFr5fXOqpeLa7gJzFgRk2bBw2Edfs+aM7MS478Uka1kDw7ooaSXDfK4zv2kONYBWyjsatjH46dCbqOr92OkIVFcfwCFPF8AqedIkT2/Azjx3+ND7wrz2GNPrUNMHWW6WtpjMe2jIlijQNe1Gyy96AATrgNipUMUzYphlb/eEEzgAAeDz1Vfz7f9zgAAAAC+sjNxSMUfIsYS8ydMIDBRpP6vAq6VH+YwhbqUii8UQDvASkh9zT2/UIPQ796cew0G/q/fjJw7r76e7so5PyCAtVwsyyrd6wix3qzLMIBYQsA7kRMJU/ZU6TEqbhnc4txbADO0BGuAmwhMcGByoz2RPOFb2H7UwkKukZfnTgltGf0Qo/BigSbVhi+u5SuUy+OJJ1RjLXobb6/YN0CUxawm5VV6bLxn8QaPfOxWOGOVidzevTnSsbroXtJjrgVHUAZ4tsxJJmtQhcQwgmHyWt6VecLSgOQ8A6CrmNvKJdm6lo6pTDVP4UKfGv834blYckA04/f24QGyzs5ypP6lv4OA7+TUrQfpwSYhm/oa2VNaW2MaupJKLpCdLkQzG1d9zx02LZD+ia6MiQssG2iJl1+a3pgtKiGnePW4XzWho30r5jwfhJQU+qTR2e1R2YbJq3YtYt8Q/dDA5cFWQkbdXY20289sA8CjHltdzW07jAe95qciog7w5GNL1AYDhnLMaU8r3CzsJHQMbiCNkG6zV1kXtspBHpqXRsy79DDE8WxhrAg5WHNdy7fQfV7X7C2MKBqSYzWCNFHQt+k1xsy1wLRCQQAr0kV//bXtqEV2Ha8kgU9vuTaDbcq9RXevsPKbJnyIxv+EdcRGSESMjtrcmnOoJ5UEqzyZmg7BS6yQ2JcXOThXlR1ac7L2WPphBwEbyW4w/KpkPHihUIl0n7gXh9DdhP+WIW6d9IkBY924cgtssOoJJmkU3fRSMbdA7ELTEv1Mz0bRBU6aVTxHD8UnrdN06BVzJH806YsUvWCSc/3vTCnEhUjJICpXMNLiuE2YE+hKK3XHjxW0C33ZWlbq4vErA8iBjGlTkc4h8LUoMMHqXYu9PuieGikfJbjyuEO5ZaVEWdrXSYdMIjdb3Cl28rPmjkZ/o5DC+f9g7L0HG7rs24wANRB4C+vcIPIcRIg4vcrrvGhh/Q4QMAqbYNxUmRBnI3n3HMcqOT4nZ4chdqfvrSWhg8SltSMKRvW6cy9veWmmn2+ryU4Q9FjJvVQmGouUs600O3foA4TXPJ4Yjltiy8EMxNj9Fy6okf3M/3Qqy57EaG163L3kPrB3Gvmuk2Y24SgQmKasO4gGnVyv0K0gH7LRLcKRAflZl67AqwDgMoWt24acrtzmtSjjc6KA4imro6CsQGPWNe5S4+Bh8YofYQ9qwS7/SOfITomXiFGnapqjAnKuYKARh8V2sJ0pYPYQRGzGkUC3Jy5KFi7StC+Jf1v4KIgsUFyEcwqc3oRfFROqLb+smGnEUS+cSFHDADRM6BgOoH6qzDYo29fY8FgcVX+MaXe5WmBtvAh6VJAdndg1W9M5EGmrTJMg1bBa3fE6VS/fUcvjs9Aj+p3cep3CmzOVdnCi2FMwun4olkPQ9+lWfkyHtR5R0SGXOBawhpFlB6xxxrChNoskUR+YYmHHxAAMduMYkXT1RSvKsXBO2ekZc/ZDeR6Tri+GZpc/I5sH7hk/JJqSUYxO0OyarwOkK/J8Kf/CHVBrerQt4ePGIC4SeIFcPVvSnKs+2TXn4HE+sOQcmiurrFRgfAG6PRXOxvGuJrldCjJnLTcIJtDwM1zGjJxfm8+x0f/e2KLQquCf/JIWvnQsO0jLKyrODCbYw11GoTz7me2ByLWQprTDteJjUTvpDPujhtxjj/OuO6GD6A9ZwT96keSetAABiRhxwXdXhtqoKAPi3ft3UKIfv/d+tYzSDJhxKR3geKB500Bt7RBWaH9Mm7bUXnUDQrmnDCxXkGRY646MTxvttMgzs+Zi1X/9ksTeYu2Fxz0HZh+q9sKsureR6oSf7D7I5mfeCVC3hT6uT56sfN1d9vVhWhbxJUvYZvNhjMaOA7w4Q6JQMkl8VkVTncX/bDOYz/xguKnqyI8JkHaqylPV4vIgOMCEv6L3NG3rShrsPM5VGsCptmUnQiRcMxB+N17eypCG7833dbOZBs1JuZkKVCDroKNao26tLq4VA3hxIJT4gOvZhPL8MYPveWrdPpL/E6SkjMHS7+dIyPSydoxCwlCckbJxR+HJteI+Ks24MEiNJFZGS1e2aC+XGYZte+beOEW5LP2jCGwYmHUo8X56TNHZK4TZkH6tseBguZu4f3ypJV8REigPJ4mV/TMuUmP6QmvKarp4WfRBVU4h0+JrK9hqOBLxoUzQpQfPJbORL2g9Ffxq7bSqiMC8jWVUDffCS0c3w5ErPQ8OiUULr/8bMT7FVSPNJSckW7ywlrGOwJT/q7fPf2a0G6WsX8y9uws8gnRZaAXCAyf8bhO2JopYM0bEu4mjf5QOlQq1h+eMHaUNUXaLpJY1LDwRupnFNc7tXgp0cJD4eWcA822iBO2A94CjA04/hCFDAnGQhP8yFp3fmLgz1KEoI6KNCIyTaNSWjE1kzZV/RkhlDLnfXiSbAvR45PAhov/69ycXJVihW+v88iQnznDp+uRJ8XtvkKVDJtBPrU7XGaacUIZxK3BxxqOiQF1VaigMdib1t9Q9DMrOxcxHdEji0X+hHrxob+MJZyHI9ocQnN/nPmLZNd4omnun8EPjgcxR5vmlzFveCju3SxSZugxydBfEznvLeHI7nZO1W9q/2iICid9DXQU328K/z4BGbXCtC/b4+BgLHDyy50b4KKVpwu2IZmTuvQAY/PZ1jvqEhwwn7zz1YOCDXxnrKaEFkGv8Ut6altUpNZtfx4ZCo/KnCP+EkOy+bry/93pNLg4yitZeIB+Or1mKVgG2Xqt6o0qIzjMii+L8UxjFxzibdaz2D+uppRunxeoBkhjYJ7/0kVeYNFayHXMBjB87tDCiKYCsD0MFdDFCnemy01OTVfS8/pLwbuApp2uYP4SsYySojMowDxRdsK94vjsfEr4ocaLhwbStwRgYW0ZAbwyryhMeg26qLPXj7dxqLG8U4TMjz49r6oPdTDvzr60C4nJ0dCD4v/lIicCbbX1zs5ebJmcBULhymLEF3ohWwxretV24Wln2QvEBPk+fA+Eazn7wU9mpNIArHSdoYYKGAF7o5vxmWnaFJk9IgrUSCql9VlPF5/aWXqbMSjjSdn7NC4aeUUh8fAg4ytl2dE4a81r4ZAx5CLI6Sl+J7pRTGMjUZof4ihKWBHKY8SfIenJOzfXRV4NXqSIh0GEApzJ+aSS5Cb5Baxh2skk6WrtXpaNtChVSlUYuaRvCj+1fdDj9uYap6BzfKa/EZ8n0OKm6azviO9JLPN+gB0H/3xAmTLP02Zf4P3hbiejn35Kbk0uxuobhrbEEh1BmoIbGWFhT/Cq3JlHDEup1PrMQNqvvTX069jF67jsFPr69JING2OxCYJxL09mzmATRP0d3awNSxFUdmwxuO+LJxjS0CP2Qj00nvmcFx4ltB//4YoDEE4bxDWY0hUiiG96Mhf+/omy5Ovgthh8JkqA3hEB3QXXgB5EWhp4ngMmxvzO64i7SdS59coCDjK5NrMkXzD2uOeT/Kb9vTmUOeQQ2RUDnZ/CYkCslB5zIncrnt05H/WLQlzx8MUdglplpu/kKYzeV6s1fC52kof+mCrh/qcLPs1uwXwZilXMuUlEoa0P6Fts394+jzJBAbV/bc6X5hFp7iZxZobQGdXkNcFYO8FG5cwelDbVC1NAReUwlGXonKkLOyInt94bZk5fXCV5hs88tZbBt4SIG028cJ50VRv8x1T6TzNSj8qvhWEN0Z9ZI9MnCMBq9vBw60Hat3SvMbj8DOBofBofdSQIrzcQ1NBG4imW9ahCSzdREAez7S5YhEjCBYQuLzNmz2LIl6F00PBIlPQtvI5C8TEwSR6CluXCWmATOKGO5Wnw89KeHeHzvPWFmloC0RYANUP31AS59JVx53gvFoI+93+4MvkLuoj8aqRAU2N7S1hHlHbQ226j/X6xYqGyaDTeepdTTXcqTmOjAS2IzTjyZYSkA1o+VmKIDPgE0NM7rZSHBtU8J38q79s76UdsjJdzM094qHPhKYx1qQHAEJUEsjsT6iBZbHo1gstZHDxxIiKTdQq24c1X90rcHAvOrb+gsks14BAaoPHlRGvqGZr6pNB4T4dTLhOFPMppA49PlyGEkYYig0pS+lSXLctqVYvYlaKis7j1ZonkAUU2Htrba9FPw+xwLAf3gzqhB0qJIBJ87RfmyHGv88OWVLfVIaMQeeDgh947l4HK0kLDv82nEtIMJoSsGdup7Ly7rQRYckhTmPzAeLVRwZ1XPIGhIp5SdUBZXgrdsNi0Lv478A6NEBQTNptsI6gX/yxC3TvpEgLHu3DAlyUypw1L7MTz5hqmGz+tvHwu6uHy8Vo/5Cc/N8ODBzYidOB4/oLMv/hZHHdQAQX90CiBvx0MtKLbIkFsLi0VxQyQH4GAKnCxO4J3bQd36SWe5SNjCD7QL/g5EPMQkA06OXEaonLobIrEXevpezG/dyf2Cuz1LYiufRmooQim5cVPPuqKIbhmiu9yGygK2YXDs91Qe5IDdkjaq021v7ZWzfCd75HTL+QeO7AbLPea7MDL/PbRcH5N5JJM/kbviihi1biHoKFZV43aaIL4+F0DNg2moUCqVngJNOU9YBc6w47c+kJSQ8ay3zaTbwm91UNA8VcDAMIOKTP/VLXPdWuEX41cnfwmCUM56B+rRhOouFxpSX2ZCJouJhLmJeEAXK6nCnLNyHYZiEOQMswfzUR9h/3wajnXROGRJ0f5IWLNt3cDKdVLolgAAAERO9owAAAAAAcTQODVm7jy13WYd01nn0NzCElrWM0B8u8e7ZGksJsLrVU4BYWUFq//V4WtWmiJzCyRDY4eEIe2aM91LZJlKoxs46o9rySXazqFjVdkgUWY5p4KDTJHNpNc4YUjy3RFLoPC2nfkwMkAwTQdgCAOqP0q+/5uDHj+8b9iS7IIenteWpHmmOEDknDC9JeUFiBoETsZdBCn1YjpYBvC1xgeJyFei7ednzmj4VZMLfJfzIfYX+nsZwnPY5O4mYN+4piuqz7b5K44rHIELOCHI2hwhTkOPbasMC0tBJ0sRQ1OZePsP/C55hT0fZ3cKGrSGTkky0Z4mtP4PZ/pvCdrHqNYbVdBaj8bOW6fYh+zturtUX1r57hYe+H2mLMd3M+826dkiLS48ZG+jhcp0drq6XCb+VYQmMLX3mXwp5e5iy6x2JenPQwjpZcsnSiD7mrtlQxVIk/vP/LhDl/jOioIDlQ2ZqwQgFPQJ2/CSHZqpyol+FLfoOvJhSkr1a2dPqN1mONxIuv83GqIAFPBwJJcOgomMZbHLTvnpjb9pg+/DGpdlVMUtD2c8T6UBOE2ng/Al95OHyW2NAqzGd/oBhdiw6p9NVIqDHVpQw/JiUB4rzroGY10d7GJxNTdUewYEECsrVFD1nw9x40+bRJzsHQaRFrb8uMd2GUbSOKw+AGuGuAUSsKvfRINRvcGZhIwqKP+REmMPcB/JAt2DbO/qGAAAAAAkrGG4gAAAXgZZ7oTWn9xcE/Ty5vwJf+s4cJ7O3gEA/J7PJ+vd7/ptBoTERPcOV74zCvrnQxRk3qlbdquDt53IG0EJQeERZfMbTIDFurRX1ChDCBPcI3tTojD+hrflsAKYBmMBYOSUvCTSqZShHWdXeZ+A0tRXHgSyyZrGxX5yIW3wLWVnpYznvH+Oj1LxKKpxgbi4wAbNagCtq8nlHyx3iltucetqu8ruqfIh1h1WM0vf3kvpCi2iaKGUbXitDZipFdr0vs9ju/1kD+dJKR3liEhBnUutLIcHHAq1IJkKlbYV7jpkrK4lvCd/omd2Z65bM/3K1s+ss/OBLmFw9dMsHJ6dNsqz3hR+i0RMok8B0XOVKAfkGAIJb8RYuis6a0Bqp1BBX9m+ImPJKG96N8zTrBn94MM9/LWBZR2izXFJIk97jBznAdvMxPkQ9wHepaDuzy/9hzpzj/9ctA71u6jMCwudTMrBD0QKL7WCajAIjtw/lg2BXMn25NT+74A2TWrH216JaAixR9WOeU6WguGk/hzZWdIb6DIcD7xpHe1KEkruv9SC/RTlaRnoG8rJMFf9YHZY/r3PdypjTRn0XQ70kfe+EzuLCEtM4i+tGSfuU1PB/Y+5Vrl9BRtr0N5m3OAuRItrgIGenoF+w8atkXrcXeYpdXmw1vnOEB42LFB9nqQub6Pr7x0qoyphPrsTYOF7YEEeA/GVWfw53qzek6Ko5SXbzaCBMW/A1moV+cGXSjAe/Rxtuyx2hbjjscDknxPlCrBDdV6tLsrv6yix0y2FPheUlTYhKqgXw30HbfmXev8EYtlAA6ds72I+yRAKZS1Cnx9VUp7uFAchy3Mwo7zW6vGhDTrMkbHbLwscaKIwPLQB8hoymF9A30E2aumPhWXgMR44CAU2LxKNvmtKtCvTax28fV/f2SSRaQ7xTxJkXImWuWa3jsAiGXvzKXnfVqXWUvUyAovg3QR0Qv+71eTnGY+8YX2wEFzBgbVFyD+oA0pKTKkaC5JzuZHqIHjwPtm12d8AWLFhOozf+7+IwCk6FBmvaMw7T3Osz/Tiza4wzYruMp7VyJSlmVDWGzogveImB/xpiZwPaFRxfDH09phgphMQKrXRy+16rai3jopvujJD4YS9uthJXjcEnUXKNJVoJjRDVDOWttCeM2ut1xJeroEtv8moCDOK71Guf8JdI6F9HzMbICSZQDU8rgv4Bi2QIHi723L3HJI0vf7maYpjAA6+bhaWYf5M/y4w1ZXARjSc+gJDzEv8wVYaAaRONBkw5ZQ31sfhm4WgOC+K0nfNXtzqMbb1c1wWeKOzvSEn7n6ckvyhK3FzmwtBOJdIWMffpWu4TYGZdZwt7Rn2ZzVgr9qRt2QnK1hm52IuVQvXoAE6rwtge0BD4y9MWbNXzZHGxjzJV7XyGmF15MZoYTk55GahSGNmG8bpA7y2SWkc4iolxkYXEDYTF3NWxYLdOXBKeujMwxkNJvP/GEvmKzNGcZyJ60fFsiUIGHITdASnZ/6uZP2QF8hLka9Ry+WScZSunt4nkA2S6ukClZLYqPLl0946pNRNhrYftoIJtlOELHSEZN1nXk6vVDIEEQ7X3/zjSgG7d/mk2fhP0zOWAjX9f8l/AcVfbtWnIIHuItYHnhnu7k1x+Yvt2uIushyCAbE/WJFtuJYfxpJFKUsgKJT+NQ7bJ4FEHtJplRKpwN8qXs/pyhwsG1e3g0vM2tcyRWysZKUSvKRLgvK3OOvhH2tIIuZIG4OtlpyN7rJodnUxpiIs4CId+L5WJa4XOLet1opdzLB8GBBBWAgNjS2C2XJy0GnIr0QxJ0Ym1k9NUm0zt6NpsJXvE3CtwCUnRzj5rCVpKCllE9JUkLoMW/p1MabX5hjPgjcXhdwYHWZi2lBnLODNqNqB3nJ3HshbJAPrWvJT0Gx56mqg0yPdmNll3ah50sfzK9wrWogxfCHzQvhBxoBS2lHr3ckhHM0bDaHBa5Ec95e9mWUK8M5dOlZXBP0nkUCqCwe7aYechGidZ5DjJF318ii4p8q5uzmyp6fLHsKT6CzsK8K/3ikueE6QS2hQHOhI5faYA6sEmzLmCDzchpoPzHbMshIqpFuMf5vtf2INcXMkAL/qFYx6dDLWyzrwJc6s/7229BkXDlFHdsWS5GNpn6v3sutSYtbQ6o+w6xVDK+qJv7kvTJuTyqR4PVM+/5Ult2px7btb9/Q1BYvj8ycLPI6RJvWPjSOJ4lQ7VlUkvSJ8m3RXywEFDS4aLw/pPe/UGwVk0YChDQXhUUVKRiJgVNsdYVrjf5FykP44Hprz/cMFb1qq56cP4tiJn0w7lTsYPwoKMLqIwto56pfcenNMXHK7NgNgpcqk0AkXjIZT0FZnXxXL3sQqyngutLeASV3sDzDwosXcHwvKblAdVlV6cJ49Gwr8x8WB8BFhxjv0oJ7XXfOgyTQvFp3/UXgbU2bx4mcTg4ePL0HLC55W8yuK/7h/YdWKFNcPg3MIeX9QiI+7HWTlRKHGI+ti2wG0tRuSj1/lNF4QSaLG6yNEx8oZBGMd7UeHnCSNlPvIstedPIdYoZqm5YJ/vQunW2vZHDaKNFZfyItJEv4hhDv6pgxPAxAeC3ChZ6LBgNgM6jJj9eL2YsRTnLZtgKSg7APU2KzFZl6/HEvuPdl2kdjucnCJSSDHNzJC0cewgcl7a13zFNXw7PJy75y5BTx3C8gGkeWbgYzn/AsJcGNDtMvlAov3XtoqCfQwaYp+o/itQWRykjUiqYUjYJ4gGUKs9msfJitaPXvSGuJSsZJp0HIAwDKNROVBDDqatZCeNK+jLh8kmyxZKazJOZ2EqXONm8FG9ueEBjm2lzxQ0xShdhNYGKwOqsbG3p8IHTWJLKuHBeu7wVuPpW3cg4LPzgY1hAKKIN2sbpl+lyMTFC6YhHNBdosfI7ME1P0MxnpNMI13VWnu7y4R1WE7vomcieJJTNwUNKua3mCC4jFtmX+Ro0WngpP6WwCdYksxIZEpwrka5KTrFw9CpVFD2Grs0mL9eku6Y1RHHtyBDVQJDchdIBUNn0ETRAkmzFV5jaToXp662r/UwpMKeXtufNHKp5dNAk3UZMfbankCUIJL2USeqOn4SZNTu+SA0Gal47IcWAmGVpJqB82hE1GqYLx5sghruSxq7ors9Xb6uSnwx0MX7CpG4kHmQFlKDCZLPcIc2nEQH5AUmRtD8mHdD70Fa9te43dhmkm8rf9bvzQRAIVPdq8bdVbbV040032B/aJakvxFA3WuVO7cpieZ6K8VdeNarnN8w3PWSJZVPBW1Y3JBGZNoyDt2+0ln76Cy70DOaHpJjZr5WXIFg2FGpRPe+Ib8esZwFzsV96PBayvjzm2r+YHzRDuT30qhcj6MpYwwFsXv6hMHmDtYWO/q42QYWbsqujai3e4CH0oT3pUuWyPwD0AYhKi1tGA8NtsR111U++B5YyJ8lZgGwIONKCoMnxXo0qka/qqPjxh04NQNJB0o/ZpM9tjw8sJgSHjxVjm0UtNyL2kfTM2Bgb2J43hoOPLTukShnjUPDf5p5SqMJxzr7X9/7DWkzHYp72rOxxIdQpmU/9foEPmP/3QvvPtQYrLQxeWwBVEEEKYczx8fJi0apaKFdtuGjK9RrJ1+JOuO5Qdd29oNTndSyIu5WQpDTEkqH1Ug5cXo3K/ml9JuzBOX7C4zDGzZEtMxDGDP3dsXC6ITxYwMQUKJ4OEGol0ndvJ5ou5Xddv/kBHRc+kOoqmbmBQa3HkSoEX06LYKS8Of/rb5MpTyN+56M/qEb9gHPbaMSv6q5jg0HyM9nc/YeVpUW3gzKmzcCfKYrQdKtOaLuqIQ1IoBY65fBgZqL7micruNUcV1MERBI6ayU+bjwqVZei/a5O04GxelaCBcAMRiPrMmm2P4UaAzGeBaTc6JfOOCuedI5Lz/zFCdEoQLKnDz2Q1DbBr3ixhFSTB1DEYI7sHZSjZo3QBttymmpQk1FwkFk9gCK2ws9SVT4RJp4+h9qiT4Tg7wklli/lnyrs6kwrbrVt9qfqEC0MzVhCRu81iZ9B7+8+BodJcSFy8L9MQSSmsUcXNEqjkh5npQqnzV4h/QfcI0cqFfjM1H+vjGHVO7Aj6Kag3Indi9JP5is1m82+jDuikTpsVblDcQPnFQDpYwAFpsXuk6Wb+93O6y35fMUYRHnb0ZjVvwYYgYuuRBNRYT1Q/68AQ5g1TTQwhF3viIcv1gBKtN3suQidTYFti25dFrRIAX448oeLNszDrsSMMW1dx/bBXjQnJ7Rp+sZ8q2/a31jgJQWL1oTLKtXEGHusbbDATtoLuy+XJdQQvuW9O2Iekh4JakIGKViztoLtDTXgMRKLdA+smcZKhdJz8m51QwKyVdQnEE3LP10YuOnDvrwHPhsFjxjXcxAhgH+o31mBY8ow9TY0FSM4iKJ5x0Xqq7pFhQwz4sq8E6301Y8ONdgepi9F6eECTTG3F0pNfuGAmeGhgzebER62RMidNt0Q+iBv6V+OL8RszVbAv8/vjPLcTaywiI/qtcmTr0TkQGvWbmXwREUFI5uMnQXsCGG9dv+4mlA7p0ycQgWKzJ+q0jo+ZwwHid/WuNjSgTSqO5iSfEp30i/fVYQcBQEZrZylbJFhk7LMbxT5ojg80pmGXJv15iNimDfhDPswgsI2T9OE4mQkb4EiqWpwWxx79C6SxKdY0NLKwUU4Ws9cnAQVqYPxx3NgJ8EmSUb7wUHKOAo65c80N0oinkU8r9yGMTJ0BrRqsXxdJLl79nFFzptSp0k8WO5kti91T315qVPGZRPfR3SO8bl+pdp9du3NLBF99iC4of9mYQeWSvfwkO2U9U+EKAsXkzEHJbUef0oyK61VBzWaFis1xsj56rslnqEmWC+o2WEihWmhvkyR88MRVujS12Qw6ar/U3Q605+Ox2xdAiWb8eqiRCkI1kczQESsLnB1PjiIlewZLrzpNc6F0HuBRVtegBPzLPrEVZvrJE4fuGDmTApcsrgzR070oihRdzzg3P1wcDxSG5aV4Yu39lfueSPxlNJ+UQXGAv9obH0RygfrWB8G72GmTrBjaRGke7cCPGnEt3VoNKZaQZsJBmWiPcAWxzTECfUyfC2i7gS9xuHQ1fZCjAdQu89cC95BEpeZKabH/qgnu8RVkkryQv/0sewCInhGm8JG1pKvCHAurDpz9qORQRsPfwHsp/T7Sg2v3sAIYiDE2aYWZ6nIPqlLCHk5W2GMg+Ww4OTHb+Oj7oLFrltQfSKWHHa29zKGd6lsw6umsLTMk7N1RkNDtKplM5sU2dVbsoI7Kmp/A6Ksth8Zt6R1DpP2NCQ9UL0DkCHJQl0fedBKqJFOpqJvWOHpKzJS+KNPsy/OGuF57whZS0eQy9oGJsIJEZE/wL9frj8CKYNLgCJ7fIubKpdCOuYSiM2GSv8xyeEaDCk804tEOgpJ5rBmj1Zr+DfGeVV4Nq61U0uO/KC3kZggGIRGxX2BWu5DsuXbuAHdaUSHyr5IZvK92Gek2bwh5VuanV/fVEreSshFgjWHLsR3GxiqEZaU17K5/x2f7IwnBzt5urVvVyTp9uthOoh2PCdZccD398NSrW3HQTKnKQnqwfULJ8jocWK3858KaG2ZwiAu8mzvvTxU83Bp1toAlqNx/9kKAiQs2lvOBoGB++zyOZVJtI2pgjpBaf97nQZfcZcVe2areB0Um8is/jfUHQip0kO9OL+NZGYNXG4LswwlgkaDvjFXj6gSLBja0YjaEhRWlIGMoDKMML617WRdWEDC76gaNYpmWf90LfO7rBtWF4L7SCi9hkvhrgPQSEqLnX0wc1nQl2RQeuIhf5kY+Z/0r7VU75HrSzZooN1Cf3RCYk424xZnhz2vJIIVB02hs/1s+69NNbYLVFiqfwL7HFdvQLq1gmeXt0PLLryXG2TAkXiLa/b5Ug/Z0ioA6fcqEGVKhxwpq90txiMj+sDUIGYsPgZBFozJfLuOYl7Wllsdyjl01OTnRJeVLke90soy0xR/tM4olqr0WLXI7/93KnNwUlpznNELpNYZebHbp5k+EqjWPSeiB36EieBL+8qE16xISz8i6erWGSX4Nk5j/KQUPLtprOgyXRhCEBnCkmue+LIQNhzn1Vqm6Xwbx7iNVe9rnWvFUmQ1xxmNa8DPwNSqcyfWSPRPsYyCBPJw26HRVXBGAqPZphmLKYud4qnNIJNlrJisqOh8XdRDgsMMwSvgBMgpxGDSlWg6cU3YvEGaHDzux+0y59C8/6mDmGJO6CKAsBb+LDFrrBd4QeUAOHklhkWpxKDClToOKAlkGsv6QHktultutoNTDFNh+pbfvd1mVpY5ULT6zuQrcKwl9xQvU71EX9Ojf/fx/SM8MW93y/X7fIasvNrLH5gh9YIs1g4H+DdXbXvXt/rAZMRqmxqhfAFwWXLmUMgRH+kM9HWCVpiAFP9uFZ8FpDcFj9z1+TEkhlkZqvMJMNz0X+DpHh5dTkotNUEeYu9F6CEUDbYOe1YFb0d5cYUdvMazLwz+UnjfzZEmv+An0C8G1hfYdKUAzEbiYOs7se/P+8zhIhWr6sTvd+TWgSQBZKhuai3OT5mLGkriYPJbHffQt+0zu5iEJjhNckAI8LFQhj5/FRoxYQ9Wrg+s/uExSWd3SqwaxYOfkwnmQj+k8Ngv3CncvruNYrr6bVNAVGfybYd9RpJhgdz3U9O6cFg2igfN6opWP/hOUGdDG1kM3+/wc9zvvlLmb5gZnyzsnbLiQkk6Fff3rbUi6wTEGc+xyLqNz7rIQRyzuAepU7vFMQPR4so1fxNW/VlCeUjfoXLyNrWVZfHdCRGuXZOMxhNx8Fbv34B5MJbc9zstefU3kB0QuCIBY7MurDTBPL4kEb5eKlq2UmDaW/Df1J2+4L5kWn8Naeho8AjbbjfOCPNDUID+D7SQOyGUos/xbH6mFBV+szujvwjCi7LDukDyJNrkTDbsoOLHiVcjflkctG6FAy9QYEG9qRvcWdQbAVguYKA/6jWsgEbjrU0YQc63q8uC9jyhhizGHJwnXkTo5gEujqm9N5Dq605TtTR1m8H8g6+UQjEoGZ27s+psj0lmSBUVyczTq22qQBHSjoXIPKnfuSF+fg/NVD+Uiv1J4fNvlILieBLNSEF9fCsLWMjztvhDjlTF/50J7quXE2EqF+99+0Zs1IORG7q0Vr6Czt3+p2yYW/zua6QfWARERw8BMS26oQz/oUmss379X/t/wHuaJFSltJ8GtxQmQkXIZIBO1t1Xo+5l8+aXAgdePwnw9YcTM5ocMaot098AVBOTn67HUApsWt2OkRVUXTGh1hUSjbz7ymtuQE3nNPC2rUMzhuRKDBjU1nMn5MI4IdMwBUsipg++leAHRmpu8FnBzUvAs77JNoK/BEfoPuo7o75AjfYOhkBNraV4a8j3du0AV2E/acQMZ9jH89++h0E6a7x7/oVVQ9Xy4TP1/Ecx8sGiRnsl5/28bH5V1qs2pRdBu3uFTgn+sN1yR/qS1Rsqi7lix3WjP+DdTwGteX6MPMvczj4l4/ok9blLoOSkKyj43Huqsh7fS4n18PI3zIU8RqWPLvWh15sEnCQrGz1yN/myQ62XlUEcwoI1hpRj8aYe/zm/SKhywpz7hYcuqlHsXCaU/zzLY2WdHty5GJQ2OHLvUcNERtXLAXG7pqaDyp02ow5k/qVfEMCADSjJMHOeuRFwPE6KPwUAV2E/RT9dqYGzTu1u0q1ISSv8PNxHtSfwOHbIWZg2MdLy4SoGnf+ZvPlqiohNX7OexV193+tjlK8cPEtRREe0UrWebgoZBrH13P6r44JGkBjAMZHR5Cj5bcPSVyb0qSH6h7DxU2CmpvALqpN7aUlx81cLsqfFFDEk2Ou5NxqwWpxsxCFiki4cflQgVt2pHTx4qEGzecNn2bQJWtKZOASwC7NOi2V3Vi7Fug4sPM1/lWLfMzFk12jJDXKWu8QjjRlxUXF4OzEIYVAEiaPvSrfdnq6YmmbTrLrnFwjy+lS/r61jKoO3Wpv7toHpH8h2/2FnnWFNu3sE4vCGRI0f8c7aPHtRDk8lPOTazeSXM6iiDizP+gkvL++tQbJX0iACfVLbCuFqzd58tUVEHISIQhbUfPRpyDI3hCipmyklsS+yJ+mcYhYgVwcuISAy8HaW/TbA1h4n/tqd0BOZ7tOAk5tI3cxwjJGyvpzEde4QLCqACtnUfOLCH3ZrZbvH5IX/ApodKtzfxu6F0rJkycpJZhA1FColN9ugOzVJ+btm/jDadRnydBkmGa0H3N7pMGbEReSjUTF3xwWZBQ1bb+KTUb30qCGDUpptPTC3XF+3OFY4MnZ2TV5kFMcv7QnpYbmdDwy4VOiRSIk3XG18mm/T25unmbAx70w0+IwmJ7ASWTQo+B7h5dQsH5GaT7m+D6fygIuYkFgdaxnwZ4sOrU8g7pGzbSPNs/Vy3tIGxIj2fUhkrKhg0soYMBVGE/+WD8BENi+1TiOnza7WC7CtQFrH8Kq3EoUQNzEElb/oOuKe70i9297Dzzei3zy3Wi4VPvAvCVeZntwjR32eMDYplDO+XKHI5KZYYt5MrHhPEnjlf1hYxNfYegfIhz167GiM1jKZ5uUZL1GUCNcdulT5ftmN3CT/cn3LC87gkEmOSdy0Dbw1Lj20fLwz/dcKpVNfWWuinPB6p5GFMvw+UmEVfzoTiszl9WiE74qHZveVonvAIeFzx0UdOV3xzL//Ft/L4SiB0hePI5dKnbxYxVgzDukkcxDXxEuiHHj9C/B9EhQULZG2Qzy2lk6NnkuALxE7jj1Tpc+NvTH0QBWapHQLZFo3p/D0rG8oSmuYhA8DyB+w2MNlQR2HGRYcnfxVmg7OuKzxLBzaV3llvRviPcwTNk1N+XdvgyHwmtGHT0Si+GioolARHS7+y0indnEkvfg7vxnlsiidPUxlbbSc6PZpTuRS5+BKG2oqWygIxdFbOQ1qw2Sva2mkUFDPKvbh1hA1bW27yLMaJ/zvKarfz0lFund4nXJgd69XmfB4ADZ9hzhCYs5yHz7/4wqtmvqBpkuOX1OoAAAc+Ko3sTS5J81ONF7KfXtDiacCB/xUjXMBc8wcctiUadRkRwlH0KLreJQGOAHbj9czg4wpvz4w4OXqz6hTCSG6f0ngyEWhCoF4bf3p31yYkKTw+tKyy/JSxOvY8AJKoXFaAEMFtQPgBUw9KlQ9QzTSAQXq9gp1WFDElEgB2JtSz1MPBqR2XUnYkohhVbq2BQczsi8XYeUpzvWQ+/rX2eCpQLGMuvOcW1VUKbCBTbGCEInI8GljMs/3pv+H4ehyFDDE8eXw5ykPKhkorOQoE9NH95UoyrjS/qAOAydSklT1eblzPxtQGdbXTnuTQoo9OC6gYUzU7WpuDBfxQ/dnuk8ktQIDasg0y0mo/A1ToCda5KmdrH8Sje7uNzTJJpRZP4fu78cbR7FKSYgPVQdgi/+5YYkeinYzVg3TPaIfhMn/NVt2YmZJvVF//cGSUv9Ipn2unb3UHMeMuW6idlnfMS9viUAKP1Q22WG8dhLTAEF+And6O1mneNuOX6w/FQ6dtv6RikZa2cgU2X9ZIieseNiEp32fVlWh4WS6LVlNcAAAB3Qlo1caP7+AEv31kLlMpLkbhrtGTFWVWES4JsNpojOkTtCGgiGSlIURzsQDxX+qPv6YFPRnUyPGOvFbh8VmIHjJro9s+U+tb6EBgEkHJ29g5J+5vXyyu/ERrZyyqYn5TUQ67YwxiacvQhGtmgD0N9KG0nlq4/eeft6j6RGTwzBuIze9yENZtTikV0rGBqdruaGF9lc41Lw21dMuwJ6tRHsn48jEEnBmMczv6v8utR9mM6pzbjKyflT+xd5Txmj4LX0YYryigcuR1Vf79J8wrroI2RTh2cJVgckEMGg7P9bGiYAjF+gXCN7WUXn8OjPOW6EAuyrNyzKsK8FycYiNjVqUAqvmrHH3ugGItzNo/E5FAGXefjXwXrYSYIAp+XBNDRlNwR0MI7RkymnHHVZijn/RvRnlmSWZCn1MiXZ6mlHnyAlnRvmt3jOhTR6f6bVF5UndzYjjzIOkwg7idT9kPBTeyViCZ7ee5TfKaa5nbPBQmK6Vgs2o/UoB22BB4uoiD2BO/EqduADJoZfddBitoceEFxVFNAib3JSpF7imwyE+xlXUt75v3MAoJW1wo0AhYyVGG4lWWvx7RjvYv0vr4tbJ6x1NAp16Xb7go+3C1JIjbrvcU8paZcC0yGK9MKzmd//GACoXHuNPK4pzMsT6MAV7kL/JQrlJc8H5DiHQr1zFRI/6ANwK0HYU9x0xNGAgj1SXYTLSTcYrwODYkoiNlAxXbWodWkzbVhpf5buhOPZqxsVfAxUywcXVs6szSNbMJyHNZK+o8AeONpeL2kQVqpalOEvyd3tWOTOYRnkyK7URf2uoucb1KMUnQHMcFd7jzDaz8GJKA28GvaZBu469YDsYyOxwlVm0648vpHltjMQa8trNrB8auxqTnUQF0mHibKgUnOI1S5rrtWK4/i8r74G3r+E7KuaYWUdqF4C/LDN0IM/6qVS5FisPoduAyomwpaxZq19L3NRBZFxyd4M7sqBTiX2beZH/R+0yuyOwOZEf0R3H3aAsp3FTAqLg8cRHjIZsTVu/6AtgWCQSWai/LYesbfVlXPjbCDhscCN/hnywl7AD9pflZZsaTRfoVVEwH3dIOdUhsnxN/0M+pXohQwKQdv52btpwK6cXJVtFmnhcc+mq4VJmTGaBimiPAN9HJse5COgD0aRazXpbm5U4IRCPhtLQt0Km7AKhExJ57H8DeRNsOVvnxujpkNn0o0jYJcOKqgT4pPKQ91wpPLRu5/XHcbt2VEFILx0rlAjRdUzWVrZr7EezWVXTqu/lPohj1VwLtI3DAskhPIJba1z8VMNQr9bLxxnXv/1lLLn7hBOk2msdny2sVQdVH42dyI81qinA4Ua/muoiNgveMxyE1W8c3EaqJ3cQiCyCvYfytnSyCM0KGbQaAGH5WA7OI14YzE0QFym/TTLJkmbVTB758pFwNiB8Ml4RFidp1bWAXpbaa3Sr3QvHeEwRJOd0hWW6rUG3MHoOCLaqLMcP+yrnHqAIu8rMdTvABHFN25GB9cuCHoqOaXfWWwl30hRA0SjnRGpSGi4srdnFIRyHP+Cno6EtdiEowIGsnmDJeMfdfH1L7CgJfNZ2lPxYfsD2Fd+NyO+TZvARFFSKoAm6TZYXdGNC38MXRsuVK1cvxjJzBSVCY8GY0Q/UO5sxfoLg5LET8v+em4M71N28TxBmVUszX8QXscXSoVZE2l4PKYaIHrw1BCSzkot7wzB16tQCXC1SkJdWaauU8N8IWHTtPya10pLNM2FSGMwLUdofkjfHEAAhcsA2RMj/MCPZfXCwaqupLIiUkMkMiZOxECq3BaQRV3lDPMdCqS/cm/ESGpuNTXqgImhUYOWj7NDjskSuzp6jTV48Pu4R6FRxNTA21aSXm+605aYSShJGtD+3m1sKJd1no4+V5fDxFdmFgmcGlg+qnxUl7NKDKKVr/zg+q540eCVrboo6CaEthZi7TNL21Lb99VfGYNqOQqRcf1k9THOTEj4Qpy0r7H53Tr0RAZJI9VQSLMJSNqOcjBOytYygzKS3rqBVhXozMkfS/M789aJx2W4L3VODNUQclqmhsq4mJqCmUDbrWbz41MV3gop7jsnLhqxOHnTy6bj78ITtWrjntSvW6N3CZ/VXA57IUTaASRoeyauTTjexrIocL8ZeFPlz7COWSigYPZkiUuWmunFo8nIPb3vSO5x4WBVx8c5cgAvxx7HqZaAe5uT15Cfw+RKmoWilF94tLxtCqBpAxPvbh3VF9pUzhWsaF/Ld1b6ShxsO4NwcSG6PKcB0swBJ5Uj1avOBC20LWniy+LMw0md4eXPNgOw+e7X0zT25Epdj5BmYJMSQ1cMP8kWRSDOjhtjAl1BfxhF1XeEy9nzfhKdVuK0tr7GkTuX3n9LBUd+8w4+OdQ74q4G1MRRKj6puDqZXW6UBhCKKSfv/d/JuYhKm+aZJgPazpIFBzha88GUX+cA1RaR86desdW4+uEC2ygz4oPAo+hbhJV+AP/5Zr5AKdo/P6tEbUWxF9QretMdCpu6WPoHrNAAHk3+iEVD5KwncybBPXTf6Pp9Y6tSeTT157SotLDAocIs2qiCgSqch37yAnfY2ejyTV4AuSR0G7Z3oKpeHxWB9lEC10qIWPOmD/riNOFpINrdO4FgPqfq/0KgsWHDWf94lxbM15ygeu+2C+AZ2py7GphHh08xZkK02Z/TK88MZceQNuLgAWtzXtdFuTni6LB6gW7UB4eXE0eKDFiryuOW3ORtWUOl4yxwMzCUo1vUNI2kuVkVaRE36PXQ99XUw0qyCg3nIj1kiAcMvvRmjchwpq9yO34UYpyq3WzKkkPKpBjePJ3xAoMYUwNaKTmiKgwtFXypKd/jsU3e4zeEwpPP6zZyr+VyuNpFjX+0kt7gLeQwPpMRu1IP1tZWAUMFPoEnH88MZG9YHzARU04YCy3QNyMUMeBqSaIx7JKpu9ZmPnAgooctGrdk90l8wTk0Vw1b/omhG4Pi9rYHlfRUyt5E3pvbITK0QWX/k9Wa4kBm5qix+elNdXG46qPZ2j+I66xxKCSIGCtzjP4J4GLHvVoTc5HwYib2OKAi/DjF/ucGz7uDEEglOya350f/+KOQMXUOLaYgSpJG8Q0ke+R/ih0OVsSerQi0VwaPVxR8gSZY+h44r+En7R0th8bk29sUb/Hg74HzDqzHPDQO72TH89fBip8RqoJyEiH3z2h6Nl1HHea+1AnYHEiAzhGFp+WhkHG7btrc8jrdJQEz5/GjGWsldWnU4R1egDTAS1uwAgL2J0tzmIjHu5SEwbiDoexYYBMHMkM4Y0im7y9MmAkuozVR6D8SehXqRmwAU82xngQG4KqzxX9OiS+5H4apu1OpQtI6mjfXYTofmGXyCcbnGBQSd2t/4N4VaC0g4SM8OlP4Aa1NyZq1d3A4lrsw7SgtLTPcwH8huNv3R1iQTeFahmtaF4Y0huLWjjoNcyuKuCt9QHX075vLdZy7sAVoAgWPwxIX4RGKiyNTH+EALNeKko8TjYqBj3w7jzM0ZAbKmr6cNW2cNNMMuAgt8kz4rTOfDE7bE144dVc3OYjLGQ6yb3IgxuJ9NXlSdriCIKid33H1eDQoIOZn4IDk/0MoHktyZ4073ybPP4ijVUFOSsXgmZnYlc8OpSA4+hcPSxTcKLUGecBEFgksh5HAAx74AiSgPYAFqwvxk6xBC6sJcD3AW+vNU5/9CORM29frngu4NPqeMIHvSYwNhUtV6+6/2cetCmFNotx3FUPTnn45J6j5cnjL19vxcUEZm70OkGwGkZA2hnpRbsK2P9m4SE5X5YLpyLAQw87Z7dYv2A8ApMt1BDJUnQEU5DxfanNIfRd/ETTNQfLN0hQ3OW2pxQd3DH/gVm0e+RFvGMkh1ugP7O2A19ebwC5PAEBY7REDPvQH7sqJYKhu7XQZ+MlOcaXez1k02ZHfc+zLoMUrPsSNHBZVFn4v9zXd7PTcKU+6n/XzG7hlwj5ASoODQ6VkvMv+uMiEbhX+8AreqCKn60zSiqlR3b1IaaCcnAtDqZptzoDSjU+I5DN/IjcSL6vYCoZ5vTvQEWa54UeOtjeLX1/KgiOtj0XkPoxjblXK7jotxJJ4mJIc8Tt8S1WXqOvCmKQN/n881GvvQktYUePsZR8VrxCFzkZJ2TiRWf+ZXJMKXTxBp9lnoYTmJXL1/Gt3PsqvWmhojk1Icn19E4LidNzVW1VCVRmy2JJnxffgFuzoDL8LuQ+a+hqRTuQz08cJ75/tMu7fIaGoOk2UT4ks6lJEu63CubTxj0jr+ABoSnn7R/bJdr92PYNfqnQlxxo9WdKk0CE42y+bgHg3C3pjCVSe4ovaRxxnd1CmkPYDZ0OjzLzz1xfn96Stk/ayzIsPveNWgePlv48FzAczedZACM4ksxA97qIhQSgnO8azXASYOkylAzD9o4XXq9iImyX5WTTwmUn9GwqGfLvGq6sf9J3uomdYdpD0sG7uxVf9Gt0uFsvNOEYftF7WaS27z/BBF8BN6sAQIsnG2WEyXobxiw7Pj5PD87lji092AlMPF5ndkj/r3LEnrdXrVvljDWYFfT8VzyUbhK4kloEG03LI07hlekNT5a/rjX3oaG7ZXqXAfydLCDZ+6xLXaeNgKYnNcoWwUtsfaEyOqC8j2IU56ii38mWM00XmgiNJ+nIJ7xdxtIpOPcUmqTgFGpPig/attQObq9/D1Mz2Rm1GoP8rfWmFBvuDu8BnlibHLNeZjsUeDzfku9p9PP/gDEYkICandOuyalY0G3vIbb/Xpjfw2j/GfXhyiQGEWdlwpkeuRMiFue702R3NxeuY27QT0V0dzZ7c233+qKswKZZy9xb8+hHZwZoQkCbm1a4ABAreTRzmnas1PzBByhOcGAMqu9ALlNNt3zj3fr3OAAPZjL8GdcAbVXCUtyecFX6jXwIu0uiD4VQDJlH/Zpya9821o4VdOJDOhjyVuTz8Ek03lMzAHd3RbbTAKvoT0fyYx6K0am/dv8Bikznlu/HUx85betyYZJcIGaOjGwh1RuFEuL1o4ObHXg2UgzTXxC0JHG4PICRlEe7Y3mC/2F/M8Yn1RUt5AztYYhs00RTzP1t7l+KZin5PgZR9k4EKZldBHA3Zhm44ijegHy1obyYx1O2fnhCYuAtlV1u3Rlzui7e1BjIUeSPcFTIcsvjeZhS/K2xz1/fWnUyZaJp47R7BF+VIUb7CgvPw9o5BVPNYStBLfXGf51uKPBodj8bUBWN25qAQLmKL6hN+mf8bUxKDeBmrTtb3RHlVSuu5ImsdiTKSV50ZpNs516opKsUA8WVLPQkeds2VQC/7gUHIZO7Wb1xEVe4ChrMqcJqtctaz5QzA4UltaOEWBuoFt/WIQxvSq+SDHzOGdutsapCMz3GpyFwxP/+Ex79qg5PJEBVGYsTtRWyBqosGK+WfVRwepUSH+tw0g6VBC6ToHnT6C9NfS2/3AtZ3nrfqWiIABnGZRer1rWXS3zciLVv9P/oxG8ouNPqTn9rf/0XnlixsmM7zH6BSVjcKDTnzqJAFUxAB2qGLAouT1acsb3dY1I0ejWMmz1KLNZu+KyjEtxwvVoiomyoRVovMXzFMWmMnhGwoFju5RKBYqFv1wleO6iQ7R6O69qg8IMtxKlBCdQzr9d+x257ksdP7KDUJ+jA61FE1G95a1rNvpAn+CTXNUtOWzwS3bmlXWymcQOBEJIpWvNsNCke0bfWXvfYsI71qhxfNgYH7tb0gRRdjWgSHK/n7PIsu4gQIz65+EYCXQ9y5D68T8srq/IKa6sZHzKJ7c2t1ltqR0m/kK2iDpalGj1rvIa0wc04j17Hnr/KfShSiIBSnbYzi1hCuBMMCG4VtZVE0fMtSNetoW5ZMG3JCxh3EJbsZvDbmtQcH5te4NiSOAJQmI4dTXVVcq6jTpGV0FcheG5TfBvJ+e/q8hWdkSj5U1GZ2ibxDw8ZT0SZdmPkb9Cm1UbbQJy6VYhSBBa+4hUfsGTv86d0snp184GMsfTec80c/vBwUqX9jl/qOhcZjuOYBJ/NpQNasDvqh9e2A570/j+HeI3y14xVaGbosWGk7cHi8FBjCqULIPLCNOjwb+4yxFHakAEMDr/jwhu3lI7y5j5cy6VAXckD4u7IvX9+m3XUA0m9sudv+Q18BUBfRndXxrKMFoaiKL/f25X+pwDlEtfHpjBA3c6NtEQoGGo/1xY2zj1wiI6k6SlbRY5XDCswcDxs6nvIQPSA7k91smTYAa3Rw589KnMkRdwE9UD9gcdKJQyW0qnbDUwLizJmJhKs2aHCZTpWrT+0n72WP4GJmExYKIDJnprDxnfg4IdQxbCbsWcmweekMVPCEaFtje59sF/MYlKP+fxLr6p+E7VpY7vssdlk4Fe6GDjKVrj1o+r1pbDtjOgMeuT3CD6zd9CJBJu2O9o8cI036jNgUzi1dwoWdmmtqi84DtoAn4fMO+3mPqOkWVsrNgrctAjXnUvatm8OaTFNnS7eD2UYdkgL2FM3peUtyVw83yeCMb5PN3rUrbKPoprOKcUIM+Xb6EUkqWv1hpbqMmgTTsPPfEKZYCFZ56dKdJ1vuY0SHE/6Z1X2rx65ZfLCEK80t5CILEMPUpkh4gEqSipGOznIGfsWC/Kw8SlC6jhqWvp9zQ4kcle7ZW3a8KcH71uMoH7uHL/vrClEdH6brL15GAatXkeOFRgLEBfNA20kVqOrTtTPn8XoZxPNKIa+u8yCtC/oiK4cAtiWNPS6PNR+vfN0VY1GM1LMNqH+UWXe98t54NreMhcDFJgNLH02qLep8cuPHutcneyYpmnTrsLAEWp3ttbffumROMXPQCfAywMhoPS+hEt5NrL7A0Mkao0GVLO0j9vubCfhogLzCGltUZGViW32pdkv2eoLrGOojoOnYArou6NUd5u4pvFzeWTPUHF84fTUYZ+lwdTYwU5AAe8VEZCuo6+MbSmG7HujZuvVTVGX5QPELtKqPf3y/g2u19Y57Y0W+Q/M+925S5QRfTLBCaQG3G2uk8iKzJ0jHgI3k0jj20ApPN4DR5Dj87ebUgq3jvdJTUQOnGosU2uDg+feif9RZOcbNXf28MesJk76L4drHFPZC+t6rXiN6mvVHOfEn+yeBivA8qACCm5hSvXDyiLzhajMlsZQ6csdMzUUsbRcEUSKGCrLYM5TSTgvq9+0dkKZUWF1KQYes5zRpYysDGAnrzMF+nX36Dd0YqcKTvc8ucAgXCCXhhbF3oEbihbKspQoyk7y1PbrwyYYkYKwUr2VAee4Q+pbVDqzO8c3h9WNsD25VBC1F0HN0ZJ/jweNEX+/qslA1rGLY/qC3gHbP/ZP/yiPHydH2Xzi15ZB/DoZtNFZJUvSIypJyf1etOmN7EG9riY0kr60Mbe92QJcZJA8ezPfFiN8ugJqig/qZ9NRU2wycqr07wKaUSs58NU+y3RzOzy4dDoptZwGp6jXqqYuEHALHKMsYTZyn5BMhu+MSmcwQCjMhir7yKuLW1dXgmPfFvhjKXt7c1EmwVZZ2qMmhqQmFj1XixLsDDN1DbYdfzvgFCFmbxFsEsKby+2uSzHarZPMAiUt7pewRCrSELb3CQgsM4p2+Yga02F4ihmo+7gzaZqx55Ui/CKIpr2d2Z7xux9PBa8lM1EnAHhTsVyIny7QvGFUksDxouFOzFmK8kORjGhdsf/R2wwpwkrn7a/8QdXfNmqpeNulF1/zKvNx8USm6mmlzTNSFqOKAp4vX8WtdIPXVaKbha2LMpFvX/pviAcwToaWV8OZSOIrIt/EiynGnUPwBorcvkZtrVQHDUv2aDpOUQT4I9aU5B/0OqO88EXuA1LrWAxrPOzbbwWpVqgf58SrUvEzxiewuHAvuCud/LM2SOEqDF1xkTVdSCBQ15PaqWIulC4q4h0Zux3S/VWNNvP968xF8mTIcIycdpGxMW7XF+9wvxZxEvVLbQItEVhl1uQrp1exta0VWgQwhdzR0qp5oVP4AORsYrzE7AZxIDnaD1ajNw4WNOlQ4Es49+OComnCnpicqzBWHrBwFpH9mq4KtWkOATrzmDKemWP9J/gdlkdvAmbQ586TXUhAPh/2Bv7N3kuYoFaPPKRtP0kuSDrz26vOB1biRcmLBj6a7x1xOudldgFZfeFekY8fG0szJna86A89zTnKE+e3s+biJiunWp1DPmxGrbjWd48lSV6MAps342HudJSCdKye7oMgF5cr6ntr/E0Yijm0X6/Rck17ebH9MafohgP4tu0cgJ/tE6yZSGd+ob7N6D/oV2lPWyR4QKa/l2JnIYpX0mCvMHOwhT+/olijRz0Jj+0m+y0AjdfIiDXdeA4v1/xpg1AAGYzr6lkYRF6Ba8jYdGbSnuq+PvYL5yolApjVcxzHI3xYW0wd6XCGwgX1CoDF6MtvkYHC6icT6x6rmkMshw+nROItqA6DxjaHdBP7KmJgSgMXQ7OETmNvzcwNtqmsKZ+RmmahkefbLcrhMw7Jjs9gw/8kgibmX0HRj+n1ROvcqpoNZhNgLf+RrBPNJqn31hfYwqKHIXA+vv8aUOd3EDTCtU2WxMRIInlJuUhrNNOKJJPHQy7Mk+li4g+x80hT6C9aRsxHu4PQ3hU7Ep2sZD0W9dV5Y8hhJmsR8idnXw3EN7YGLstPv+I+a7/mZLv1FMdMWEAHF0rdcT9E+FIP05UWOSDKg08llUEgfHwbYCNZQ/eaCWBuWD0bcREOyN4urvX0o04iOc7nG+hVyc8gV3h/BNmO0CIHjl7ZNENT/HzD0FIxOIJnDi0EfDtWwdQhdf51fdirDVO/SUZ343xgCk8McuolXVXmkrK11RgSAkL/BpTccKwidm+ckpqNuvnFxQxtN5JDgTdhY6bS5/LhQAAAAAAAAAAAEGYje0Z/enzqseK2dpZ1Q/gunXzIPh6Cv8YXNAbQLKlJ1kjPyvTHQjG9o+J7FAdoRFrpSFi26ZZDUC/iXmNyYYCWwXzMrpWK7fC0Z13QgtE9PUqp1pGE4GFHSx3YwZiTRrPOTIzG6Un0bPOw28OS7aGj1jeGHqWOlvBOMjZzf3TiRwR/l21/cAF60cS5LgnFNN4KKQMEkJUpJZNDVTahv9qtmfxHIPM7vYEKE9geJxeZC83RO+AOuBLcUtgvgHZizz2aJH8edREx3ykMZ0F30/dekVtjALhB0fO8XKk+jZobeGVeUXvO9cRC60iKbU2+OCOeOzR/WDdD3Wesu2ar59cTvkFU9vl0Z8MR5ikNE++eTl0jM6zG09qKEGGgZ5Fdy3U+7pjU+FLirHA7oTwR2aOi9mweXJDaNy7DNEZVKa5hbFF0Axo3LzfuPcwG6RF8xYQvg8NCz9PW/odVkuKCZ5MaJxZmky71+qKg5E9usEGwkzojF1OoswpC0VO5/QIeuRdmYyMhejLJCDSEI+UDBpLc9Z855E2XAGKO3eDRM4cq2LyAWaIZpoWpW14HpE1+wlPAK8uDi+QQe+r30dY9ujgvpAYD9CqEVeNEkhxcvbiiimfEa/q0tszfo3Bc1TaOgpjBdeha3Fm1ob0k42F1g3n8w8dyziaxakLzR86V6H/Zmb+W+TpYAARNxfFNT/85CmrCYwKGhBzvABR4v13EfU27UNNiH8OR97V5E591XBx06Y5QwuJV6hySXAUsls47I/IPg3DCg4fs/ExwlrUdcI6XbJKeRrtGCf7EQ7y9i/4UrvInE8HH9CguV9ADi4Q/1s1pZZhiPniSvNdKN02natB+mnR1FYu+Ns1gCO4k+AaTTcDN6PXFAK8v+VGmqvwXkJpckYTik0ItTASj7bazwclN1WMWf24F6l/rZOmQOE9KwsmUsLU/K2IgJWjcSK9zCdjVXr5QrvWM9CBY1SMyhjPakPHjp9QDfYtmy176kxVCOzc+1jrBXUEblT44AAAAAAAAACU7TgAAABzEYX8PK+L2GIYiYtCfjBGs+/1AwqCq49AAAJeIlgry8A/E/O659ITuwhPFWcnuTggoBTlMmyydgBxf6PKzS7PXNgi0GMSouc21ZrDK1pHsbmSdEpbfZhJ0QRQNsVdqW8UO0Xy0f1bSk99o+LnIw1slk5qAhtkSgrU1dH267LKvmbntP26DvSwg/hz/XlOb7u32h/bQe62ipi3+e5zEU1OuQytkYANq1SmusFGjvLAsF4aw7CmMW+HVYH610qluBPSMdE/fT2a3zdNM8aMAw6FEedbXM9ljuSQdgtanxE7QDfkYEZbP1uSv34nssRfp8/q1qecpnGpaOZQpVNXvtp1HI16L86JsDoo2YZLyS7hD/MfPz+D0u0vu2nmJSbqPdUAOJSPypo5hBk0DleepN+TUbCPMV5k0Z+C5D66Dmi67kfpN3Sm8v8fwRKEvYNOR956jUfyWYX7nR8cuMfjeufqbmVxb2AZXwV9LVLb9pXnik2VmEpdG1Puz+YM4kvnMdG0KOcH10mjeXc0zGcs6ysg4UkGxMeDOnMFkODGR7K0jy7kMxCSv9SewWP2r22quFjaIlr1BijvNCTwLSenTJnimgZF71nRcyAIIVbqujti8MRCO2zVAsT7NuyIc337Tme350yZAAhqDMssDUUiMeBc+KT4AHNG3oZuWw8UsxtgpV/KHw+9IIULQ4u+w1K9nUW9SgCVbXWnzRt0gi9GLRQzY/XSwX9xyGi/6Vqjoa7e+XKiWXs9bROiMvmDdH8IFX/7/BxCck+pfx3byc5+JocgQjorf6eV5DpufGIa6ghdGoIvofwnq+mUOS4Ck22CeQJtZN3oSuFSKvJGxSBwCxMu1tJuFedwF6OgWyOiL5x0TYFWv20XB06fY6P/vcDdXwCE9BwuN2xwdRqFllCMoHM9QBT4agQR+vF2DhAe0YV0xzV0Sz8QecZke1y5d8ADjLfITf32loFN3y6vyBQM91SjE140CfSXP9rbMVtp6kNJBUIRm0YFB6ZCktD04MeB1LyG7mDJuFlQvTLFGvDyoyJLs1LfOqBK2xYJBld0acr2ebWrksCADqGrNfPOReZFdBRVGt/KHCoNs9mbAPtOs5os1I8gRBzB8calSy9Npdw71kOUcMv1rjblZCPIglm1T26KhtwTYpI3emZmxhhUD3DJwAkISnp/woLV1vSQNoNJkxlg1EmDXMXDHYVkcefXZ3FKuVPOAnXQw0ExUqE3Y9be6tQp2GkBnyNTA+bicpT1b2340E2lQZGd153gslwpUmaDNlkEME42Szrh3bHHmA+uOPmKKZMX5MvGnEmhCPUlBZzMbf2Zv5zd8L53fJu7d/W+HgjaaEgBgYIutoTN2cWZY9vZZxXqx1MNlu1ygEA2MWWLuVWVAPuDKcX65nqoFSaWZz6zzVvMX9hxx1f+yFbylk9E+7jm8pmXiEFxypQfhWOq+CNjf1QdsQqxu2H2M8ZTwz0/zwE7mGyYWWWBq4mEFd12Shtvh7MXqHa8g/wAplwSfz4KlEv/p7Ckq1QWlkJXJliYOhdfbgXOrI5jUbJQd900+ic4VrkXPlyGSNwbdmbDYqS+rw0y4zYuS28Dn4/m/OP1g/Q/BtnDDEkkl3B+zCk+nknpM+tDPcnfO81qgxklt1FH0IbuRg2iQQeuGY4ESm5mp2OyCczxn0YutJVvOieIK6JIW8Y/1QlywN7SEuYxJNLax7pHDYppXNekrdaNofD7YvByKkaFUdk6ZWqcK0iX0/posqtdW8g7dTrg8hnbWgAmM65gNxa1qdtd/8lGm7j5EaFeYp1fGAR5fiBF4dDqF0XOEIlgwyow9HESO06SsUcKSG5yh+ple9p2V+JdJ4V/MyyYhM9RPdjrkXMXglxh8XkYYHLhtEftm7VQKaPyRQHm7vnGW2LBK0SXiLF3g8fZM9oAN4JAdeon7liLE2UTYijtynEz2C6db8iKY/rmEiz8kBGCZXUkCVPF0V/oa436yA/kpq5B7V+0uvi2WRJvt/dhVEaBcWJVoVnYu91enaCVIlVQ8dxEdUi5OARupNQz6vEon86qbW5TwEv9c0DvIfHD7LGDmtz9/ZRTPZVnw7YIWAEGUf117z2QVmvmNIKtvDutgJ07cc5pTToT2Hdml5OIymZinq5V6pW2omBLUg0OUhxo2NZVdUIiO+PAJIJ0z8BdVsEvhB4lV1pRpmIPTuoNhozuBjMzwvQTHwH3h+qYWNi57MaOBaBqLpZkLujoPU4CiVZrG0yN26fIBhE+XuvYS6ml4/VJbZMTSsVUR54jbosH6euDaO1A4No9OECjAd8BG58+mocqRoIm5YLsEqdkgUWxb5BB6xMzWY6rG5ujOU/E/KR380eowr3DIJFNT3oj9BiWX1NxyxPbmCjZRjNH8c5kos6mZDa0vMQ+Hmu+Xr0kiuZtxTBHhxOUuD5tLJRFJtGgsM6nnt6CO6njbcJLaqRE2Uizg3XKGuxXaxhwK/3xLF20/pbIfgsXsOrxdPG4nb2WVd6ZIDepnyKrFFr/GflyoLfoDgWNTky4lBzNpDwrwQgDVBfOFx8e8CfpIgU1yKvwTdw0AIjzVYpYNYm92P87L3f6+FmBPhKcb/Dg+7gpMbmAHRSUnUfFYdo54OpRxPC9fA0MvvmgwEGauBZJGRHMI51J7SBstKBy3q82W/wz1WBZfeacohU05VyNo/2UkaOWiLeXKEWrQioHaLaU3HlUyUMGk42ILACwSUBe89jxdbXlXj6prQdxh0BB6dB/djUQcgVNObpObNRbxwzJfkHAr5SZ1l2npcdBAqp+y9R57y9lx5IiI+nHfK+93dKTq4e9nplM22553v6Os/2dTjcxHsFeU06/h9yYdHwJ6v24BC+W6VOWC0iOUMrImHur4kzwMIBshGfbn745MKMoPWzmGXCe08NKSwFYDCpErH7EkGNyrAqXeXQSbLkUeNM7ifHYDFIR1PgEfy8ngwul6va+58Olt28llmVvO2xXJTW67rCRQBLxNAIWmkMrCv0rk2SmaHFMDkqksp6DnQPBcmz1oLCDZ3id4NJ2W9lJG41SSNfTHotLjMZKpDyYDpKTwsAY5J7PhEsQFtLz9df+8QylGKBue8Cj6ThB7Gov3c8rfb9S9myR/XJvwhqFvAWBAPOUP8DhNcBG1wqEGU+5NP6Ac1CUJgt7nSZQkzLeQR21nBVf4eDCwQv8gwjtqp8c8fjA78lyzmntgwdjOpt6oEbqpBQ2it8WrJNQqYy1uF/8pb3z+4EQYhF2XfxYeUYsBUa1MupQ6BiSI5qtVEp5Zf1Y+N45zZ8ajgXMIVyku2LuC/yvFdCU9f6gpd87LGOgNMW8DsIF/X+AyDMIs9547xaDlOdaOsRem8HNl8//XlqhvE59HAfbkr5CX12yikAjITJvhXrKTjiajOmZLO8ksnfnlZvNbi430VXFPPhqMhCl2gRg8SoM12xXrkTJTkjMRcYe+bR0o0JFlHASPs/O58x4J1uaYt46yAerwnWhV3xJ8Fd9p8XP1eUO2ifXFi3grqQOggS2DxhSYqUOHGQ1hN8ACfID53ZQ/Ds2lWSxt21X0zBbY4T/7yGGTHbpcG6T0+W4Mm8iMz41vvNagBaaXK/gj8PjSWR+fgV6jEgJUJc/3rpDn+4DRiqJvwVS/EPmIh71S1YuAfhgYZmX9tA01w7u1XQmYJA2zKqUV2NQEUfQrz6zI8sqYcrQlUoBBfo1MVK1+n8bR12liPZXwa5O97Ey4sRKyaRIqBPE+YQdUYgo3/tELZda8qlM4TsjVI9kT89Hss2BgekkpV483/b/cIT3lTcKHsth2tP5JFNTEaYiJMNy9cSGI+hxAhIPMSmWrhIuyhYQ0LZG6tBwjIJyPONkFcQnfmIFMeqT3K31klZ6pqGAPLgO7LptXHMdrycLMO/uAyEhJ97cN/ha1wqPMHVXguUSDAxhOalV9qz2GwKaKZybUL7kLEll9+S1ZM0e2+FOSFwiWTGZmv/kcxibYevH4BONIWJJFuslURUbmtGyzsLpD6x9lzy7+9qPvIeKkCkPLzamRC2QBmoZkZoT590TfB5G+wF4nC9AHuL2IapGZVYpe/fv4nSO5opx6hLT28i313Q0z8+NQlL6xjtYRTDbgPJlQ6C/gqrwT+zSw252KTPXYSJ+tsJVrwVY/GBs0jKLept8ZnsxKUJFYcrxkY+MtKdMiKmpO2yLo5JZ131tGE8iD25HwQAeyY1D0cwwgQEzikUW1vBzI6bzPXMNi+7oa+FdCuhesiXND7MVZpDAf4T38bgkEJvbYeiEs/9qAfvjo5ChSg+RJNuvAKahzfF6KOxwRr93lab0vSyg/kGhCrShyisv7WbWapmjsVU2cwjB2z7AmtJVZrt589UINQ6BRaTldOR0vkVVjyU9fV5FMOPiKOgSDn0g5MQGLGLBe0TtDey0rjiUqAWjRWK7uZYRGTxm3ZlRKaRQOANPME7+XvYawDBU5sVhdw4wUsJ+HsyMZ5Yxvv79O6VNJwcJ9r8wWpvQHv+rA6xRnGogxTA1J2fj3ct18dLrcGgkAD/nEItIVNbtVswkZ4A3iNfa9CQ2RQZtAojauu9cCSUJ/N9KEGAHqidcNCzmlZVmMqvOaZNJfY1YIj8KXuYeCETQ2w2sqEhOoAYa7x0m3O5N4HL+PABxMRm0kQzoYCDGJWHSKRMY0w0RpL/IAqyrkKVRveQ/+6LNpNG1rwNGRuY+HDWU59baNatfFPcwiy5K+zyH9tJk8NGXm75Rfng1kc7DFdPGMkyrFOesGkrXKm7PEIgV55aXilZ0Isc4wzsVOUN8UIh9JFNwHSTSKUwb6nfQ7qPsAh5j87u/6sV5lkAr9y/y575CjBD0OZmreBu7JU0laqHLdk2H09k5rxX1Ad8C8/nkUJyHiCECM9OX4fMz92RZ4WT6HM5pvVlbN8dm/kVzGpJGsYRz7I5MSUx7npeBRytL0M3zC2pp7mDujoqBYHbMK72S1xHIVlAMaVccWdM3kVbiA03eZTg+mGy9k4AejYzDBKUIhHIOFgxsvf2aJ6R+kvEzMxhHmILYrWajv2rjfIDJxE70UzhISQjx2U9D+V3zvuOBYoPmP3JsUX+7SSTKqjp3abKydoFEuXlwRhF1D0jdqDyEZRF8K6wLtd726oZAd4tIXDJkIF9gsPyi0xTqwpR34jwKWaSgQ1/Wn8gMAxQa6fTGzc88ojzoGtjTw7TiMdiDdNsvsGXUS4/ARtMtEcF0VE2R6pOTRTXPwNBfk6BrBArfoJUBdMeaSCb13Le1dhxITZjw7VGrcs0pLREG8+pcoudRFi7WFyguHv8HJ7cMaUPorLqYw8N9fdYp5b74HLtDa2BFes3xfrYL+zkdf9hDPJsudAJhQh8MBdD88teSMC0748HXJOhN+4SDsJc1jWv7sEJ7yKE5mIlmuODrEIk6OT6emGX0IufhXezK/rud9Lv7YJ2mnXB6Fbqr6bfEqZJ/HJNgKnLS9CWJW0l+MI+66UBs5rjFHQHIyG8u7zdJ5eqp4m/uDBC/sATsoP9yZeKakx7nhnyfm2T8kdfi1uvYxthWA9b6YPTtscSq3EJUuGnOa+Yk89g0kqb7Uj1jnFFQ/uxw8gRDoPOiaderObYTal4aC8WOLgpN/spGuGkn12ANZ3ErMd+Bgx7Tixt2QeyVH3Zcu6QgoN2qsk7QGUkCZpCAQTYffNKNlKVdZjAfBILMjYE0dmLykspd/q2wqxUSdkmHH6fMYCY+SolQpJNhbxBLyjWHnAXli88R+5qSVQ1OmQZPnpPuJGRK/HtQW2B3Om8QRzs/R48O+x7+HtO91bSycukyFxu6isUdUtCp06xDbZLMp7yMVybVqKSyEjOcH0UIVDHDVJdKakGku8DHQ4QnesbrG5pLCxvTclVbV/Hffg9eaFuRsgUmR0KE8LSt1ETGGbcIGjUyRL1now7NbVsWC8dRjBP/IZtOT1VliNl0uMSzS1T/6dcMKpEBO6Rg0sJUkmHExwpE7vloydeuajwMiZhjCzEjWVRdof9CqAqKky3K+21ZU8ZWqbTx46AO3iCFc8c778uVeEZTOQSIcGyh47Nk13/Ljrta+dZdn+1T85pt5PgdOj/F7m1solWIwIcWywhW1IEVJdxtt/M5oUAvSOiWFJ+Eu/gnzu65rfPSCJpImpXYU6jAnm2Y4TV5GE59zwKBq43HUBOzVU6hIX4LXlZzYyTFcQ//Kgv38dLzzBedRZHpYfqZP5X+qBo/j4lJp8JT9v2Wx7S+D5ziDuEOIqfo+HR4/nq0RWxhdkumi0ExYclX7FCfkt8rnTXen83tzKbW+ONKHrKQ7x22LB9oO0vMr+A9VUFAUZ96HttKKJ0mm0cGVA+adeu5AkEIe6Q9rbI01NbMdSb7+DZCyi2XuYNmnqVZGGMUIJPYyXdYEU+2sEBcQFwDzHN67y1cmt2LBiTPlL8ffsthlF8IbePMiYw/tot1jNFsPZhX1GjFEu7w9smmkY3Y8Gz64yLYIQWnA38ZpftZEt3ydJmHkB8g5EeWRrz7e82GaftmIzjxgpVmpldq63nVK5AHpr/2nUIqK8x/4GvFJGXAw/2xRe44MgCLpvNvjoXuNS920Aq0bxgiHyxn7H8uqe+d/zxzAZScecGPHpgDgBfWq6LLmQtegiBZm5qozJmwm2ngrpyDsKbgRT8BGHIyJx57rmNb9QAFEWbY4QDet5aAXwI3fPtGfReox9whTgN2VgwWdlHLkEKeyOqC+eXCYN1HlLii+WhgCuaAX8r9pYEkL3IHeMarTO4Su257IDGwXD4l608v+JlKL0GAkAXWm05m3O0nlgZGbNrM5uQlUy/cPmtT/MMFPiqJ55YYIDkOGvpsb1hBHz6gCv7QyHwqZgG7RAMjjLByf+vacOqF9esBtFIlcDRrlsN0WzI5bEEQbpBU5l5fvds0QQG1w5AWSLm2JW0zer/jAdIGpJTwCPBS9kkGOp/m9oIdjB/fqZkAvH/gadAwCC7+L7R/ijTJccK3BBXDq5Toh0Ua1YeQRaCE4OZENZ5MXksgpIlYsNb/FFyo2/l1Umad4s2aG3EE9kqTbtoQHlnHzEqgWkmICq5YX9p60wPbYI6YvqPyK0Rbm7sdJj8d6be56GFKz8Seg70a+sX0+J2AFymB8Mue3X3oYn0YETpbh/44e/JG1jWnwcnrBC2+aBOFHYyorbyUpYF5e9uj4ulXtEV0lGeF6mrEiN7Cy1pUKkdKdlnE8bXmBqOH1nsQAmlt/HGhAAI3mJ7F4LWX9yt0553Ga2xPFPNFkyI3GijAjI6ZQonHcNK9TYxpUevWSNnBRcIUxdfyGAHVSC0WsdLzgQ/gyYeGEeCyii9+x0LDia0RMMxYTz20fOMXg7KJFFzlhqyW88GcLiajScVZlzzi3XpD1Zc+uOlqKMCrO4IpIjBfbOgxJVH1nTSJhBeRwO9MWeKqiWgIvjxx7f/AwUzX5Q9G3+xJ2AKZK+e323C3ynfUvP4KvFmk8h8evyl5y3ZqjWVn7Vb8HRexmdd6mDjxLsKiNOtYa7IEEHNb0WWQlhwUSK6mK1BCYW2x9M/wQkz+xPZ6JJlR/DeRzHmI5y9siQ1KLBc9GsUlvDEasgg8iJQEinzx3hlcW8KHpxrqvDub6b9GYWRefFVXckcyyj7iitAJ0oILraG0pmb2UrQaO/GMCO8pr1XSZeJrZUdcA/buQZTOdtD0FzhiCSgoErqGgcny/sElDFKIEBl+NgJT0Dtoo/nJCdpMs/T6yHOXbrjMkofwiRCbDnXYS/XYbPGMAgEX8eHGZF0eawGiBPRfj4wC3hewMkpDw1v8kupjRQT5ug0q+gYnUrUuxr5YYqgGQIlmaPqdJp+LbAmikX2BTNJEpDvSAQmPKFg7KBHHqMyIuoPzvE5PWuhbVMMXBwvx7PP2tByWH+hSCykDutlSGVxL1Jho2rYfMQt4RuVpcH+0k4GBVSu66LdRG4Rx62CaI0mLEbtsJr2id+UMKfIKWjND0HdTNuxzYWNgwX4FGOCCwTmkqMRU2yIcgZ4XZ0H+ceBNk+h7SzbK62Fh+DedD7QNDM4lXeHZNasRgx4fPXzpSsRdT5EC3I1/MkzEoJMmyh3nrejrpQGmJ2iAKWO7xmrQtoWA6EZLdAJAXIPl0hlnObgSXrrUFdN2otM7+l5n8r4GMNjZhFx8pTeEY+r7c1s+1qGOKuwTyxDippoghEuDFen1MU9mrfM4gpgvAKVyDYs24s/mT2X2PCu2oQw/wjtaZtp44Z6lc8NXpLt4FL48TvYUK2TZ8UxBcZCDw9ScUjGlwr2nx6H7/6Dy/pYVwyglLerX18Gu3kTkDLCZ+abY74TC02LHh96ia2bHJL3k2IP4l3uc9KyAwF7unsdU8OLpdvXy2hAS7tpWX04BTsr85NCGr5qTQxp6z2wAGdjP/qQcXgCJ54OkzfE26LR0eNO1b/qKoDm9nvcLXW/Oyh3h+vvthSGBMwpH8rXUDmGkJpH/CPMqFySu/HORJ5C7aQmmiCMqC/Ngd/lplUhwtHj4zCJBuLZcNblo/Di43RstDDAuJN5ZxQJ1nvI44VLUVbUgWwzU1bxhdi4WWtZC0lY+FH0+qLApF51Q0oMOj8Q/V+7Q6vYEt63N/hk0r0BasRdUdI3Xa8Ama1bZ7rBnSiwVnpT+brMY7hI839ttDY/zRiwnd67yO1dGnIsWagBcxbqRKMNFRGCKi0wHwb4P0R7ZFBQraRP2BhZVrOmch6izCORGMI/5VIBqtL9kY46f5pzf6B8VelMGAfpqoWox2s/CcrQTKnHuR58lMBmTTXPfFwIAZySVW0QMxKH1wvY6nAdJeJjTvQozgx/GhkQw5Tjgbelkq4589Th65/Z/bA7VTa79LrYLOpqeeEhOIp+O9f1y+ezzB/0VLEsrdcmw8G0p5qQ1hw72og4sSFbGkxkueplmLOyO1hxkNF7s+qMToxfctallC0QqH8yHeP0ZVjDeA7yzG8fxaBn/Ow2hiwTFf6W+7s8tyYlkhUGjvAWD7dZCo4Bdf2Lr7FHcykbElm0TTCpIy/bm20OC/BbVTsmbEG+9nTdffonB4obJPhrMayk98qUM7s7VG0dLinibQX9kXLrIAbGMWrIeXvVV81JAkwJx3L1r6VchPIvsHFy0jFb+/6tgaTDNCmMvfQ6JZiwkNZ60UD8W8JEteOIYhdV6KZxUnSKasDPjV+m0rDHHD/pwkRvKfxa2jM1O5o9K20L/s4m+lORf/jd6oDySOgySCgJE7v1Z/6LrKw8WWjlRSQzPED7A0khS+eQJxVeqLB/IFaGsE7qEJcEqn2kYpMXedeObPteEccs7HKgyXBYKwFvGVdIIV0HJEvn+y6O8OMosnypqB0YjzpTj+ou79j8HTp4QPDxazECIWgJBSM0GlVCqYIqqlbpKbV7rGxYp03ee7rdQFC2fVoJ/lcAULNJ5H+ghAicbN9B4mPh4SX8/vypOdqrlNtbH7kw/Dn+KzLDg+sFnux3pGSB2Y6MBHrds2zlruv1en+yLo27bxFzMdCOqGlZNsdP6oJD45At9U/PkSBfqSxhbATrrwknc16TEgldGD2VuWZIH2qjLVakcq2geMm1enMUldn6AiU+LnL+p3Ak+bMPa6fojkK1Wwl5ZuO6wxAlB/QVaBXN2S7Zo3QDpWdMzOQWQD3WdadjSY24zsZSWGiuujQjhu+2x8ZlSyA2TWP4680Lpqk7KeN/gA+ygO2WRsl1W0PgJcYe3Ei4RQp7xoKQUtlLU3KiJKwOwE9voCoRiEse2M/i7nH3Purkahw6o0sR5Dr+5CNnLZsL7xQm5mlk1Ox8J5EyqsYXGkFgl0erQ/9Ef8WO0tZOUHqJfccfMioc4KumNA1jnWwWVkvjSSVvsAmgno1wm5N3fx0T3rFMwwZwIVtdXwWRVpehnglNwWWyYC1qDSKnWlHoGBHWkPOvdu/1Z4BbhaU/kNUNW7DWalrbwSx0Ji6XjtLwk8blfGNSGJsc59KCvGSJv7LrttBGNYBvmoKd7/4WEXSGkwuJFwBYLu2dnUvgyb3z1UVsLqTx9Ie76oOxWkPWaxIojfp1whqHY4xntnczKXnYDVy/4kgN4t2WkM01uau4cDT+QBeAOgPb7I9JYwnhE+dR+q8MgpebD/i96NMgtSiTKrerHLT6n4pXagfyywksRGoLE9uA/i0q86UhBdZIDdKhkdAifvActknzaZJj1rjCbqtGwlY+RT/xT/nSEMWHWgto2vIhWGul51yfWlBkZG4zczgw/dgfJcZnQ5cumPSGpBUqTZo+fMj3aGl4Aw+fi5eSpEFsbGl2tGuoMJwjh0feiEJwaYR+md+SH84b7GyYpIitVZYYSuzdGBz0piHIsKhHqDN2yNkE0elLIXsxPiJIP9TXsK/GBL/rniogYeHWE+acvX0F5zoGQiRVtsaBfEmM9uRuA8K/XhPlWj65AiDvnXkbQoRe8Q52bZEpBUKV6wRo0luGp7PcOY4WW4eN91mGlldwD3iOVMaC5Oweqs5cDHUHn/HaOirPXqDoJHXiZ4qTFn6gnhhGoQbJs3oseObHtp3X1eXDBknALEWwn57g0yKPo2lcRp3XOujsjesc3+Yq6zjDfxItjtxmtPd783yUm93C5jsvmVXAjdaJLDXLW32CvwiQk0a4xWlL+NWO6ztYaIpciG03iWZRSISHweNHfP7chdqlmi19sAMMaEDWCrXilUZGeOUVpI/TznQLxoHkPEWtLCWODfs8v7MwqkvX7p1Wzz+oe9faiYvpNtKryESnYKDZUSWxKfOg73vCmZQJZUrouzUyNQdTOifPbNoFZ+AMCsVbZEz3p5Hk68Hs34fT5pyhN7+yCbF3VGlclyYnRhYevdwDMRiyiT4sTplXVIbTNFEzUM/JQUQ3HKGX7qLvGb3bUwntxiH9Kq5M+8Pd9uOfO8FIlqnYlpGtsCDasc6UYQ4SrSuKpnq22yP3JEThCxBX8QoZcCqV+XxZ0KSRFhpND0/lGS1ImQmSXgV0veLsT7d3gBagQ6LjIIV/piN8lW9vkjjxfJiERgJQS1pqecWwpYzEWRFbcw6xpIo2F2IJi0drAlFG2fZG8bT02YLCcSnBixDzHbHu+yR9uFtYdG+NfH4GtTHeyu7cE7S4j+vfCof2wFLYmQRwoAYfXX/sHBUmUh4vAu56G5pJT/fdZ1xwL3JPdjYvY7jTYxndhR6PYwPM51dWdRJJTC5bf2eHi90Xz2E6R6AYEg56oqF0A0AH0l7bKVguAe4Fek0AaLz7NjdNYtI0X6uiMEIsb5VZ8uV9+tC1ifQ/3W1IJahFtkgMP8F/lkunQ9g1Pia32D5K3WrdQ1WAjLjz4dWhy3Wm+q3VlP42JZIkEZv24jfakjtXYQF2icuFSGBosPdjbYv5bGuLDDSqugmezs8YxS+hhNkecK9RmCQnGYtv0EUM++cLhZIEB6Exf+bqXgpk/jrAIUSclqEttOdGz6mSlg1vF3tbVSMMbWvXV24cm2mRBIdEr3OCkkHIEESLOdJoYqU1OO+OvtsZYZfkFJAwm8LCpishLdfQzEFg+GQEZF41aBqsIB5SXYN+t+Tkrcz4qlygE5Mu0rxA9zfU6scCd3gms9CcEvT4g9M2WxVOakpPoxMh8cTq1H5CR7k1kclEdbcsnvDNcydPaV5EfxcWAArckwXk3cqqit89O3zzoKr0V1ArtzNlkEPlGNS7/7biafEZPYwHo470PWbqgM/9f2xOhxv6UluYPUaqxxQUi45ygP43WK0TjZH4neLChYxMerIaT3NgytFZH2CqLfb1gpedy6COor0sFhnWaPUB0KKyxlzZr+UCwZY/UotiDqnpOU0K5Yt0ZkTmxZJgGehxrJDLF6ni28Sc7mHflHdSZNNrx+NQKo+43IV+QPDe718KsaEEGizCPjDd6bRgTvXnfzFSQtyaurDr7OEZLTezemlJ9mtDioyWacmrYdoCzzwTB43enPNihIXnkPSeA7QzGWNENOqat26WUVsjbEOiXIoJGUzucFzqCeXt4RRjGaEMIVCHkaSi7wbdnmVx6Wst8RlVQsZy9SHUs/kBVsb7MPwskSAP+tz6Rl59f67G3LT9WPy3VqJo9RjdtEShA6h00/EhzbrA/gPOkQyfwG3EqfleyM1mUjxIHbvKqwBPlBXLBfZcfvz7gr8iwhIy4vAhweHmi80imwE1QybTO/CSW4QzlpJ2JGA90tU6IZDTT7kdyPImBLrMTlW8ZT9B6ad6tDTh0I2Uc2Gj7XKAcuwdl96EbkvVtjvH3m0eZvxUk06Tfzdc76rdT1fBT8p00LUKFDCAKirBmhLdHVCImuRPTnsSf6VAYRZo6KfHVsIjz69rn/rKnvHTJAzFdWwvcTxJse/HGSSC30EfvHGLy5r4CDurCAUluOl7DuTU26W3jSTbe1QMs+O6G2AjZLLGXJKdy575Gc8lzBGFF3qUj2zMQbLziety+nQ7Uj9F8VsU8UYAYVVLHTFgGvDRfRSF1vmI8ZZDsfMgtX0Wvn7AzJ396XXCITUXHbrlkzx8BZnGL2rrj6brN8N4rduByS1yjgmHfs/E2Vo31ko7WUlphhi/vq2BidroxKdX1z4mMbF5po6woewxy5AZ+PJbQ7kem8TaSwahOeaICLyhbQxHCYWp8Ks+s1T2DpP0oOBUuJA22Due8fGN2bEZZB5seQKqLsDmBW0b2zJbqutdXZlErg8HriBQvNUtdmmhY45uJZw2X9DLi28choC3L8zckYJOAikdPZ46w+yKmL2HdnchBXi5dgl25JSAKq/pqu/+6ALsFBTOJnM9ipAheXHs7g8frVV3tMX0xZG0e2HdEKaHQp+nTbbSXs2HCLY098b8E1sv+x+DbkwvzbzDtP4MlBHENMkVG86iNeU3X8ItsI/KGcfmlyKsqBFttnLcdt+IcFl24LgvGQqlpySURtC7wpECjhOlZWoKo7sMm3c4UMma85lbHnm3nJApcJ5xVavvBCcJMehL6JQHdfvn0+jQIgIz+UhLATa+miF25lb5yTJNYyMRmc50Q6L3JMAz/jqi/kTuf77fB/Sc9/QEk+82hgQPDgfvGp7xKu8ktrjPoemdC22MtwFTjIIVEv99YjQtfDY6CWm0vte4zm2EL0gUeYuCcAX//2mcZfugZe8OJWGowtKJXIbbbaccuBgroJ/Oo9WXY5AeB0wLfrnU2jIh71W8NAjTd8Ap5vHExBP7fpVgwpY2tPiH6vKOjUuHYMZdCW0oYXKrXrC8nQH94998XEQoGYEHm2ND0CUQWYcqrRkq/46LsORv35//lu4GClpTNSttARVJU1f5pUY6oO0XwOhoe4rYsiD32LIQOGroYuck9aCjvYz4czzneK4BjgRfhhM3J+DfCa68WsG1F09iY+80XqnF5uVxZ5Ko8o6yxXpiUwN25uZNPsmAe5a93EVy16eY/3Wlv5J6LHEa2PVi/L1TadoPQzlGNk6BfQoCqK0/S53AdO/IntXjk40h/I+sWFv5Z8U4gtRkWMkTJqlBv9Wuk4VriPVehdJ4TQCo18928Ihpd1y6BxFxYL8GSSE5LdO4I/6RRTo9kVxpgkKxJzBzC9v/h8ERJ78WFleYn+DaK5ffEToidZKbKd5n+KfjkoLLhtp2cDV6A2CyzkP5IzCDbqaVyx0vB/0iCWzIxcR+X7sFCKox2I0GO9Lg05CVPMllOgkbwGL/gBxnXpPqe97v7Nmyy9pIZBNMmO/dbOCwLfbiZee39PAox9hjhL6QsmFJvScsYqVdeHUm5a7FQ2IlGTYzHfR8OkH4e9A/C/CiFG2gozWltALw6U7QBSm1SWpfQIEG6GXZYIdZVYcLleBnMqnWmClGsHZSStY3enc/Av+wBDVkjdsgtb8u51y+7RnU95wzjCUoOsqlANx3GvTiweoY21k1XJNZ9Am8zZwzmcv+VGhDh5dcW+rvtAkLkbCPpURUDhQlp82eG0WkxD1km7szroMC/SCT5iR2h3/MzCRk1AyeuSDQ0vAV/3YMKCthJyDAUUW+7fkOmVCA0opfwSNH8jcWRDjyqJmwn1sAK74jafAz42R5cU/RY4xtUEsIDighlQWBclqte6cxzUQ9fPnuI9c4xJ99SGn0yMvFCIo5PHfYUod2gSeL0aXOex3O8KsTo9wBkv0w6ZAITAeqNnm6Qsqt+/I67U9Vs/Q7W6eHvkRn3VOjImfXG1zFYapteSDyq2ZfiSyISQ3DIHZBom0gPjGXMSpUS8RM65oGI1c5Tu+519YFNTr3vLTiFmSpKDNF9uSEeYMSFGetr/aeqa0OJjyveBIXi5pmXT7XPr3q1B0ekVPkn+Lf3blYEUvr7a+FTUPtUq/KC0FmrWySdpNzG4sGcg1LLezZqqeHR/qosR2fJxSkQkSPC5kYTkyKRswyUHId/u4e7BS3wNIh1i9GIED3jt5obRVQ8ZnbE9mz//lZZ0b07O2NHI5r5p4i7knetdQvJV/fp+a2OUNv3rW2lu0pcKp5hvBA/G5AxHb4/SpZvUd2dhvJ48lb1OI2/k3FEBNzUjpzsT3CDFB3mc31G/NgvvMOCLjHaud8NUBt4cfDmSsuCK5rJoRnkltz9B21MjkvlmkURbqD4Hgi/p+Zm7chQ0uCPej3DpxvbteNwrHNvW1UlM6ohSIc4CZiE61y80liINy8tK1T5sbeqT4yCBW6fKVXYsB0V/32w15DNjYs0PEv2r76Be+VVGrKKHaQQRcmQlSR9FOMCgdnVO4/71NrfyinrLWE/YGUoLJ+lE/gOQcQbNsotrJhIOoPjBixJStl0jmq8ZxzDj9FXBoIepwxaZ5Hj2wL6ON2KaEj2OkrM/qBBy2G3D2gJuUH6ykMazQrHkV0JSGnl8z8e8XyYp8JjNaRerN0+nA1zvU6WBj05VyZIUPWbU7A3NFM18v8t7UEu63ymO7OgE5eNaT/z6aODJoHHIiYv1EYoLogENJ2iCwy9bswkhkyYgYnLRy/y6wpBev64PZ4bzy0pnAbNUAlqI/qaK5A5rd5fVRo+kZL6mZL2haqKZ+TX2u4PSXQrT0LfmQJyuSWuuaPEUUKw0lgD5AYyP55ddjhzTT37oqQ88HcLX3rTInqBK+UZKxRwO2qIW/SRP/PH3LteN4/hsV20YTvXz9vCv7F8XaKW71jT8rM/HJoegqkHAUQ7P67TVowHcclg7DnJ0r/ETkQArIjnJ+LY6EkTATZ/AnlNMLgTm1OvqyLs4bNzAm4wZNWyMAOLOuhZjG1+n8goBGCCcPJxAo6VhVNb/wnywP+85AReXnP48L4Oj8uQIlNIZCPU9luS2snLVkyaevDljTnBwpiezfKm7dGHdvLb5n4rekP4cpY9EI6iKC82CLdKFr9zONOfcOIDUfI4NopwEc5aIcBASYrC8EJegp5dRjpPp26h7gzxofPz0MfHaWlyfGOePEwfTkEbs+xhrkNtM2tQoOglBtEi6zaSrj1hA5zl/7oKuJty/Lzf8JYCm3xmpifcOEYesWQqTPBHj4lJhuFjuLuh4Uhwy7k4t7IVHmukTJ2K3jISAYHrBacTr0yLjRcJ4oDVlfsy+TxJdEYsCMsADNUT7vAqOEfOWaPJBq9Gakv44YH68v1Hv0XFVUVySXzAy/XbBQ3YVxP+qdZuQDyYMPSBaN1QULLxcGsu6mwM1y1+r8qdoqyWSfEe5DHfKwJx21KZgLJbMyI4vsx9nQ2pUiWVH88SLYIP6nSggooW/68QfmGc9cyTnoOIyhkJ6dyBn1b1QK4XZ/HskgjiA4iNT1/1dYJfSr8MNeGyuCEfn79S/ONgkDJafNaqJzbxEbcveiX+R5EjDX1PgpG/06IdNU4JEv5vcXwKbx3mX1hgyD8YfTrEZxeeeCzy5BEhUKChSPLVLlGDuzOlyLXnbYgVH9xszo0lAS8JfQrj5PtmgyCjGkLMDV8Qo6cJFWzLDonimurC9TgOm0+fqn3w5uyfzvt0KxAfJvr/v1OoeDiKTh9Dd3bu0h93s7+zzjsg6dMRev2m78kg2U+2cK8vgQ5wWwxLK0ME6MCMX8d5pILkvzkyCPQ2jEaz8Gy/L6x6jZ4MesrBkS0FQcIkcNY0O0zt00yCKvzqdG5kOKZoi/IQQ43FeKuKqf8HoiD0CmV7dhG34GOKIxMeyeCB4TxiTHPNgUvFfI+MoOAV2tTvCk86bl2Vt5lDw/gzEzC37lCURAiQSVQfQF8UW3o0qcsu7tN/y2s7N/GAVCrsX+zj+0mjLrUT3ouKavMDkM/VfXN3NEViHS77xDLu7Yft4cMORUPGirgbNW0j7Mk0leHviKzlepuQjQp4srLdCHA0IuFrcoj+QUG4/Y+bIuHKAGoNnslXRaaHgmxvOHZUiQGrinMxlsKa5ZOyjOiy8LvjQumZfPYjJ48NH0qve7UBjN4zz9kZLMztock/9dRFIW+Lu1I/aMHfrHxjpPh2OqmUZbBRWdQX5tdHG3byI6FtnDLagDauq6ywgfCkDFb6ScvteT7lxoeC91h9cyb6XVbnbFJ8FG9IjNTOZ6jSFd1njkobp/CscFiRWHreeRim8jIaB5sL/F3GOiqdhxH86IqAIH9mC7trNbtqr0nmDLJaeFQy1FAprB8Lj11iuYxDhg0uaO8OxSSRwGKIYI4JzLsxNKPHkmEeU6Xr8N/DuWyqsu4PPi0F8DbjDJeUXI1pM66WNXhJwiww5ia4SololQuHoMGAtBiI6FhgxHpta28huWdxJz/7CDQAWG6WPxjsUITYnEKFIL5TwtQ8xooHTfzv0tOfLa/fs+kzI9WJ85aFzT1uTk1+p6uOmN0HtKhS90YCKAuF9EPm2TmtCjWC7Lx6HmLzIZgcHAxugo+ArHVvtbViw/vj18gJtN4/eAD+fXX4jabj0oSMOnz8L0cshsKRl6b0KtIPcCUlXbnUP50zAjyX/8DuXOvYPyr+N2fkRz+fZcqZ1MUUoDRqvwcgk1aCH9GYzabyoeyJpyO/j4aRlVd699VMEiX8++uooRrsHrYq2sbJdbHw0SFGW2MmwSxqkv9c0mRmO/urTU5oXCzhgMJlCtuStyP90NQP/sxmtCgwiXgGkDcdKIZ7UQKHXh27JadLaCGScuJtS+QK6IjvOlkHcNLdNkC+fVF3yXB2ckDrO9mrzamkWFTk8u44PwF0Xn5Y8bOATX9ZEID04u3MeQULFWRuE2DMV6lyJEDmNgaeRV8OqWAbyzndfJQN/aUe4k0ACy4Gs9LkfWjJAXv+AxNO+APiXPOkuMkwLpyR564baNzQRg3e5exaqLanPhG3DxHKi1OpwpZ+J/lHfvaVKIPS6WPffv1Qwa1zSxrIc4xfAre6lIeG2ggFZJT97VzntASGe6JAsYKZygQVKwmsAJk+v4z9gqjRYRzUZPxyznmGPPrrcbWXIGpuknbkxkpIK4sz/p7fxuWb2oUKg5Mw8xuNm2Y/7nZpEOL48x79cjvSNPJkSR4u0fM/pTrppYG2GoZEtrlYdQ8faDi3Lq4MluHTLZbF8my1PbjBMiRPHrhOE6tg9ZQkabd/E/sJKVjZSfdSg+mQoGtZ+tp/y/VrgmVmhs1GXYicfuj58TYd0pUhLBOBzdSQMiLTiWuUSK3BeshX6HOgdg8GP6GBpOVQC2Tt3QDYq2nWeRKWwexSD6RK8tjMIfXPS4cNnd23Sp6sXllrqFDf6ix7BPaqAk/7gmdp2284d1hBksGwxE06bhOgcH8IIm93tJZUbhQoBv+GIuELBRfuhdUSq2YbaPnawegCA7eT40RjXJp1conGcoQXg1xfi6z6aHBs3fpv8x1prNFsXP7E2bYhHYbOR1SWEQGk8P4LqQJpy/UwKXuwoCb/RlXQc5kUei9B3YJ3RH64UpJyqzoYA0lRqEHhP/0OTOQ6eXMfXGH1yfIW+NrHKrBebv1mrpUak6SX9jF2UBT8rV5a5g62FA95P9U9Vaa/xrb2ovM5jvQRE8eaHlzyw+fXjYt9EZX+gl5f1l9/lu9DSgzkgUdU1ai5h/OSVNMu6NYtTGtZoLlEIBlX88QzTUMr6AVWKRoaV6kn1UmD9sQ12hpb7Z74NlipF+4jcDHbs4aJRlqi6TkbbJg9+ye7kaEp1o6lM/5p3zhizBQXI6vn2lj90bjFknB2DR1AkMy2lLUTlEi3nvB1ZBTGFf54TtmYnnacnD27BA9P5Zw9VdPwx5yME/IQjMs/cLddl0rZLbNAcflVGzLr8cnKKjoKZ96Uo91PVzg7M1dAdtCAifqgov/B+AlusE05KbN8mSxxQtmcjjx32RQ9+jVKYc37wxexHkvgqKMEj68DcbhLm8EacM3YItQuPDNmGzzcCk+DdYQP7zj6PKxNhgw134S2BQ0a15qUEQAY6kHM5+z0ncHAzDM91JxZzd3dBhCpmAxQkAxJijdawtBF4HS1G6MbWCJy4JCVG7uASLw1ctUpuT7Sft6SAINeC18teST4m/lE3SppQgWjVIi4+kEJXMcyyBEqjYeieTEJjdqErH4ny9xjnbXTxp3e5dBfA/IIcrAun8Qc7jwxW6KrQQeKC1Uo9UiRSuHFRbyWH+nr0sjIMxaJtROvjsbt0mQWkyEWjKTediwNQRrRVSxXsvB1kTVtV2Eu2WPsC9iy9+veTdvotUYEcnS5KDdsZWih5X2vSKl2BXKcTcnxXMzUJX4c/nAj/ENtCQvF8W6BfQpDajzfCidqV6Tu78Frqz6/nUGBProDtUyTTuTTQyHgPi4ITQZH5hlkmAuXofN1F5KJuAhE/QP096hdFih1POKGlqsZ648hAenHA8BAJhKOADNBYykGh4axKONpwDY+Mexv+i4cn6FdRKfutp8SFN1T2Y3uPVRNRYajeO827QLquN7XIu4G+gAQ0aKOlMUtMGexUXOIPDHgT4DsA4jwr9Ft3R3d6E9ETusl1yPVUTUwXds2I2S/S1tDr/CPimS2qKgOOOkJnefLFaZdgAz2e9XNRTml4XZGvLEk2HuXb3wTbSSeQNkjWmmToNIFeNV476YlJEM7gRYgpC0x+Ie/xlwGJ8xFC992J6rVdqE8FNvlRfUsfkrlwIRtH7tH3+3idUrD/jIXXtAOfW5SBOnE5wKwFTSP/I/S0GtJoelgHCZ9AfTdmfgKoNTECKsbYN8/STksasaP3GxqTi37gjbZMYYIchsybQe+qQiBDIShmBjdzPhE/+lhXVSb36ZYjaLxFNhiFaafbqTZNTvn+PuygJEIg1q8yOUlJSbsAnonnPG9YEfqnx3CujzPmOGTNnK902tbiyXK19gldR0Wvv/jLLgkogRs85jGOWRsUmP8KzYr7l3K6B48aZKbKN4dACP0X+LITdueMHs7kOWE+PaFXEAhtQ4XlDDYZJEMEeTUW7xdFqFZmLb4aDQbsW73qYx9O6YjtKVNZBAwTcNcNZ/e7E6qkokiVwlbytRWbkifz15tlQsLigkyb5mIAABLI+/KN6iUvCyGaFms+/w9BAGWf4ANrh+/pW7jUs49mz/BYcdN/iSiEFrgUwUkmu09edJNKCfjGSMoOHz17+CnJ7cI/T9P526SW+QzxcZI/270Lr3ysz9rRLemVWHd77h3h7ETTZwIzQeor/gvKGcrbaJKGXgqJ30DDjnA0WwV0Q6raFrbrCY4s+Vr/Y24AAhG2aGkGWZzN4teoQy9NQk6LEGFxQ7bz7BC1UbPRkQnWD7dhXejeyfmbUk9Ix5wtgKmDowuP2piwXAdmgTpCrV8WxZQTjlATqcWTw7aWxfHPGVUgTzwHaPTqR7/UETecbVqyC9tg9MMfv/PK8SP2TPnl0ui28ERXo4Fu2xzCJu9BYwAsn8S5M6wJGz6yONpKniwkVhChC5axUI62IlQMjqpiTavsdkj/LWxJTW5v4YGS0bI99NRAzaDTTaeLcC6yvoIiOvpr6oUwnzuHsnKsZQmrcR8rXXXanRYqioDPUfT/TpuzlKBof93aAj3biWqDJ/Ht7yn22bm61bIg+CCbJ2JlAVlAKOvkP5faI6Fkr0THMh7qsFL9knCd3GYTz5F8olrYH8FIA7DqUiXnbZgChyQrNoi7oQ80DFXU979seQrI8RlnB68bomSdwmpPja6pAUboveY7ChV60GvucagMQho+6plFVUNBixfF3/B/jZ/mo6sBEIWqh4BuhN/yKIyPYZeYRsqmc40jYMBlJSpyJ+F0ElxGgwhVxMI4stFtDYpNeHOszWM5pF7WF8RGGlOBy/nEtwfETkJaoGQnDRGvIXK8+0GZgVf+7vWhC4SqE17Zwqz+hIqDowPfgOh2s5omJJFfPmy1m302ZsqLK9WG3R2h3ONgOL1wRt2hQemfRMDMKiRNM300E3s28+YQkvvEk+Vb4yk9AmuN3z17wGO/V7NJE890blTNoKsDr7ZUCuRBiiKHJDsWXrjBxAX4n85Mhq4x0/oTAYAYjEqd8Ko/6MwhOIBOfx1ku+5yLLvxLTAdTx8z3lkaNUaDA2lgMf0J5PHg446+e5yEmJx8lbK0I5ONB3WzmITcikcHsVb50+UDpE5YOMQZHBgDDRhsRHR27UTPZWIqYZ9Bc++B5IOVyehx233erCCEo6/5Z5k44VThZA7omRP3QUOAztk3OKIdQjPICz5cEPCHimZtE6JU3RDqQtnHZqn/ljw8SwnASAq2+Nlbn+k5+BUkmL4eQXMZfMj69kKJ4i3vo9W6GoBA250Vo8GAaM6reiY76ZAQdHFV5dymfJPYahOh0mV6u6ILRdBZ8MrORjmtgXAEO/bRtzZWSP2dxV9PotYLn4Tf59bNrybdbsw3uNRpRb1wuo4wNOF2yfSPWRN+VurQlHaLejVhsRbSnpGbcOm4BbUcWsBiE+kWNC9ps2KczE9jtowQTi3+RPhx2tcLZksJzwdkFsWM6Hq4exhDEaXRGtFeLVF3nPnNmd1vvksHNPRY/t8Obr8V3vTpcj+jsETg1xV+mx5k943F6aGATHbiPNR9mwWAEHgmIlTN5kPUajb3hf2uNj0Gs7AgAHdCd1+7lQ/eyA5k3lrwPAoS530SISH3fFGlgBdCgDleWFzd8gFLNWddc7Ts6QfqiVtbo3AYpOgqY0qnMIngcSf02AyPl8B/kFfR/xdxUwJz9WAZYd6C7362CXalewObHNRIrBuoaMBTf/oFoApcgCM/TadS1hfWCOrzKGoinx6ub0je7hlblJXyE6XZ1BqBUos0+jN62U9PBoqoyPrPLI0oo+RuE1r5MwHxEfPu3RHzmiXjS7WvIRzge1YPdxlAg5pwV2yAeCyddeARveRdoQn4Gcba58ZLgJmlodGZo3H3Mm1QEv0hpesKqvaOgyYWownsQbgNl+g30PtlWwFg3Rf1Q+UGGLKM5AZQusYXgvTbDyquw4IABj6C9z4xQ9Z22/AQ1XRaEVXXvRfQak7LUuRL4sYreb4KpDkcTAvcK/el4saMm9XbYvAwuFbyZF6JZHUlLAPnHMtdl1xsOFedCw0JaGTKW3q7GuOxylDOUlsi/a7Rct2yAd+mkyWvFmNujLnqfb4oVuKpQLcVEdgOfFLufRzgW7EY3Q9dlaxbM5snGs+bcb3KxFxzJqfUI8cNLpowuGyr6XF9+2fQvEuJ8W3suKkYYg2V6L+EQ8lf4KvaCTGXz6sDLu/VVIUjQprppk1gAOoXURiA102hdQoHklpf/SZs4xFD7azZhCSh/e4LBwQTR9fACGQpI9DBw68Z7KWJf5UvqLERfNhtcukEsrd/yWfOUJPCDJCvvtFwGNDKoZXJboElP71kPzA6uzB5LfW3cbWN/Iu837xY8JKyCCOlF5HAbWWgUvAN+y1hi0aV/7NQ95fiE5sp+3rzXYJpCtJsrVW4wdsCfU5k1Da2/kv391dB8I5xmtwJHOHf62J6uqiAAob26tVp8bAG3gwF4Ky39KyteBvxMVrOxZNzhdObVW9wLK0zJ8CoCzdNWpFxp+xal7KGqysPHZ9LFNhic5gt06tH5DbNVoRPHJ6Mzhpn7iZJmWoq11Vv8lxfmVpp/PckYs9qHMd9BOGLKjY6teL6nUgX4z8gsK8nJQb5XkdQcMHO0Sjpoju9ckXSxb6AYVOidHAbJ3UTUKVjUDJQZ/VCUoc7J9kdX2GId5MpBKiT4O7FbdUwlnzxTK/6DJ1y5CWlBnnPumLUyIgpGkFtoHIZCjAXRRIR6uXt07mBM9L1oUPoKzvXtzcKagH+ZJn02RD9VDPvs5xkVXKwOLrZo65XKLIB04uNWecIqMh0fx4Wb+CmzrY3zEYdZ5EZcZgwp/YJHtBcdDym/xE+ZQ4XL2CMlcvq1RZnByGVXnizgYwQjnOxUVEmFIeCaGa8dKRSTjFY1PsmhhWBTZE6HThlo8fVc+YAy7ZD10rZ2vRYiAQwGzVOLAOBbJ4g8ypyfBh2uWApLEQHT+AnayfJ4KMI+x6b3f7BYV3oc+nTkqqSOFhF7NEm1RJ1SAwOtm+5Cl1V7v0ts3L/UnOlshbA0x4rT7DYmF9BqHnKfLGewdYXYSIhu49kmZjRQXj+N3a4dLN3x8ngfrKbwAzNiVktqzmDHoZYukUSw/YEsboLTtbLna3ImY9sScAofGkDD792pMi7N/U4fpl3r2xSkxsF8KRf44x3qqhGHTciGXLQctY8Wb/06QJTKiIzmDMMFsDrpzmo/4byfWRWs5Jit/Uzc2mKu8aVkrRgzRQLXbvEi/xDvCMqf8tM0qUMjbWjxAohyx9zfiSAqbc7rMfZ79V+LFi5crTqUqseklbC8OcelL7OgrzwbVOoDxkNguE4qEUAiAkkU/C5pU2z3ng7hBwb8vfuqS/8RmbKwSZ1NZ+fwQNNyzlT9XTdCusslLQf2SDxY3IX/W/NO6PR/uf41W1KILNKHBoHrCZSuqBO9qoWsvFgPO0qDsds4CNviWZ3Ee7uhEuqJjF29TBXwqOk6qwbM5RImaz9UBvS9g9bJCsfdVhhNGxQECs2s84MlveG/EAg0MgryY5pOkf3VN65o0yOksb0Urbo6eJguNKvHJsVa6amOCryZJbpFx12GwjIchTZg4W0G6EODAsJ7n/Y8DeJFJ8hdkBYIjQhFiw3ayuAnAiIb2P0tnSuRzd5HlWUVbAIYjVJ0Esa55S8FT/ZFaCXKQ+pwj699zInRyzk1m66t4uZmm8yW6TRfS9S9ykWRFKgCBNRcj9G2I8xpJBRfcERdein/ZDDr7gkJ5Kdw67csDI8Ah7ok8bQWqreHGn3MWGP/ogVOaNT0zNbga5w+pwFNL/ZRorF/z0BlWHGHOKvg494T8yBY4EuMq483XY9sGOPmll/UaaFZBu6bdVEMj4wnSeDDKlR3yWxiLe3ILWZ2peUaVML/57qyU+0IXzYQvr00MJTVk01EFwGNQKe1OYYiUB0988WKyQEUpQfto4RI1QD7nGIuD1qiAjngACqz9jrVjkzmBpTctWwsswGfrtAiyv3It+ZPvFHkirhxGf+K0H2YBqE/rmyH3T5VTnXXZB5w/7bmAjdGv9vDwnTIzt0aEIb78Z7GPA/zvrOdXSkAOk1YmzUNz8xeWbOOzqWLchg9r0qsAAItj8U9zSjj5fhEcA6MA6nAIftYEDoOwABBllHnALDSlUcPFZDkA7fHeklnm/Padk5x/mSb/Ly/EG7bt/8fYW3YHSXlFqsn68GBuS6mMjUbwB2AVSorb2GxXAqwex0ZUoM4wSbCMog+Tj66gbffvARC7HLmy038+HlJcwsKNWcjePJGQS7dUDOqmLbbhVX8TCvxJXPFckaBdRj3U7XipN1UFhL5PRca5SqTAt17m7v/+cDT5KpJIs9sPDfwAlPJHyzvT5M0voiVPbwGLQ6yVDMpqOR85QuCIa3zA2Fw+WUOZR1HjLpftV8FCr+IOxpN2yjrHWDy64FtvIxUNKGCr6a2xcMorWXiBwJ7Ygj9QlyVi+2houb4Iqtb5gOY9m+zBVeawfeIsRslyK/GpBxUBQmG8BfojRQ8TBdyPdK7AIOqUPEMIZjksSF3zn7LQQL2Op12svlIeqzuUiaB/vQH1RMCMJiygVtf8w8/u72lXvKBVKYt6DBT15p0lbHdQ284BV/DJGa9Kh8NRP4VHC830KMnfawyW7gBGt+oks3hDXfQZhpp2URduQk4bojyq0JSEveHiJ3AAvTCMLdpsaHCzQNPzulgFplultjm8Kyq1lWwq/IUSM1gBKaWbWl0qbABrdnxAS9uyfwqOF5voZr1q3IPPpm/eEoJOEkjHvfl2suAqx2A6lf4+ngXmhIi/mNGo9akEv5DX13wOAkJMCDSPKN9wU4naKuLYxI/ui4CzKxEAdkE9YenEa5rtlsZKmettUkQpgyW9mSDYNYTuFQuBQkPOm90UoE4APfK5Dac5E0imLDPWbuP+vN4nQwyfpzgsrL947a2vKc3iTYpoAavOdYWUNYLrFzXqsmxxs3aDvMcslH6TcPzg62cffSDgxcKIIOTgE5jR0epwIidFppWSN2H0rgNEfAM6edtpAnFFYRyuW6bFeHi2gdd8+FqbxAOeb1fJV1RgQZnEFeGxk0jMSQjkXlnkTrhtzb2mHYoYzHu1qeIEG6bf+I5ElRVcQR0pF5QtYH2CnLSjjUYcUwhHvadjvffIuOvNMh5xp5W6vsLsjSZ8a9rSvZeWqUXQGMjsVDpyjrPb/e/GgjieRCl0X36TGPxtVo9aWr/OaYPGaYY29B9OFWkArE936Tnwy20ejaDPc5EUxif+/bxOMnFlCyx/u1ZNuCvx85O6iiX8F5UGpYYbTmqPo1Ndi6Dt3v/4OoM898fWdTz1RbgbLc8souzPJaODEykORqggwKnoEObsuqorEmq5jeaJJaslXrGnilac2o7WJrodUijrXa/NxXG5IbFmMNG05ROo6IT0zT5qLIrow7iO5Uqoo/B9o6iiUaxJOdTVA9mFcRFsnMg1XvfwhvhT+7I/0tKXdg+rPbkAL/snzc2wN9XZnvyh3kV8fiR/MmxOvIUy18+/O0Al1xXS08QIBZAk/aPa0dSH55eeL/eg5Ft5SATm6rXgDRxObXkZuw5usIYaWHSQ08R/qt20uIuYaW+pcTN6KtJWJ/JqWXGbZImJqQ+DCtST7hMCJ5WKI3ZNF7WllMpxHLL5IFVA1HLTHRZjnyL1jMTuLJ6zSHwS+7a9X18rJ2uLmJLIP7Lkurl1nM/dGwPvz8Mqe1qS2ooEyxzFujXz7N8jGo+2RJ9/HBFb4ssLfO0TtRUOcxjR293mdQeY/dAonzQQwMkW77k9EeT/aN5U7pdyADd13tjuCa2OzcCSxJb3ZMLO9I15Kg4z84WuFm0MB6IerD4rBcpl3nXqS2aNxpgi8WhKKrYVymeN8i/0BXLzzkfP2u0qb6RYL66UlQfqtJmMI7gYPMFVVDhp2ocP4r1bEqbBhOp6jse5djYfQTrAuNPZqNZgdGVXrOJzz1SSAJNLXoDVpTcBciC7bVessbVEkGCyptU1H6oIeKxrRwTD43pLMqoSCrArX+HRswS5Kr5mqTuxK5zSTc2CjzdsJq1sVk6+UI6YtR+6pyZH474s6RvFYqFPAeNXGzFwYzHE69r7VAchjcJ40chX4glMMuBl7pCvXkXgvc42J4MUPnufjJnDfKnFVe2uqHqlyr8495Iu1UHdN97VLx4vF2gztOcvh6dvG5uSnaUsqi4ztwjcsRdu1zS+DeSe5KRCjb7IH7wuKRPrzAgAlM+5Um2XVUN2NySwu95/QhbXoAMdPh6fmRNCZTMhxseVo9NUrqDmxUT5Xp192uJ9cwUuVIBR0/KFbhSTMkr4EFXdR/SWLS0ba1Jg6pSOuYD9i9PisslzNQkCG/V1XXRdhNoCFvKfDivaH0fm8KkReH7u9AqW8Nev6aSD7DyYaJqJd1zTqBDAV6KM/Ny5nATrI6ghJ2LMUtkkbE49r9ZFkW9ygik03Sv2evy9hxN7YqVODlkjiw97zYeCEwlWa9KeRmYLU/ScqbDwiEjdpaQu5TqVkDitTr1ZdY2RuYmr/rhCP8Q/8ENHbJdHYvmzI1YJ8WKhDioF6i3HT0UwBKz+j24EDiAQjoukqZjHHmyFm4LO7vTEdCOosP2YJoys5DZ0K/xcznobUt75LPTgunOzptCvKXwRFN/kYWBzgnv0U3kxs0d5J23lVtYw7Mj5XF5I0wWUywukj8XomHMmMb8EoL22KlRl8Ye3b61Ydx8NfxeMLnzVTbo5fELVOdPA+Y2nYspeCnz2b2vHMT3hJebUGuA8Kq3+99DCVBldpF/GwK4G4DRJf08QyEJ/kMGGvFMcu4KlJILz64c/w/BTVBPsCSTPRF0F3kx9VH4WJFnKwjO+h1/eNtO6+1LAWnsRMwjWxLVqxRHJdENwJShHZZbtN7LM7iaPZdaHaC6IIH5jieoS1J8C5BMTkFPn604JMXvZBriZo+LleWSOTnpbSO3qLFhw7gt2Pykk4vkMffcidS4D1xu9wdrholU3PiBUZ90A1R0C1GD9CX6A3Wni2lbwR4USwSevzLmgimHa1AdTKot1PQibKwOHEVPXq0n7OoY6fWp+vsgBAXNFieGIkrXF/scNA6kvO1KazG3wSA+GLvC7XXLjGzpLC0fZR8A7txbFoWRKbddZP4eeIOUM4Z0RURxu+jTPFVY2vefgjfPmbj9VmobhXu/OeX6QKps0coOatknAUB05VXRn869AFxyD37aJ86BN1HjQhu6AH0CPsYapvoOOq9A9Y0wUZHi83m04H4jT0wpDSE3psRhoTVlpAf6HUdA2u8B5bXkWpLYiBOHa8kfxQ7nHPBfHLeOJpwMtvEyLtQGfHuvrPrv6NIz1tPAUK2PpdxYZ4DHxUGgQWEji/ZQt+5TUj9XJaTynfPhQ2PPGYJTLNkIQnsCYWbk3rGCgckRO/zR7VC5NXCixv6xC6AcDgTDPqAISs88K+GqkBMVJ4lCJs5zIR4NObIhg7C0cH+2LcpsyKAqUaVsPRQ238eGAcsfke8lrvKhkZ6hsXeLA2hL2itqXCJXPMYXKXDpQ55jg9LY/Wh2ytw0giaLRQo0dTujsIoeXE4lmltrr7aJlsb3mgVuH2AmrL+57hIPPdr+Ltjp+PcsymIaVgw3w2nHl221K22QfBusi4dJ8YYiHkON61fRHkw/Q+wh7VgFmW5g0tsYKatHnwl/hzYVtdu3OqWnzw1//M/mP+vnuQZVlHeGVeUbE7fJVxiBHGdolU/KYYojMgZF13xVSar0mHI+fA+GT2zhlUyWubRs+G55t2kP0aNiZGsOP7OZi/mKPo72AKSZCxiqr8AVm/EC44hctFO4WXLbAMI0CCQ855Ig1LBGdNkgPgWt9iDxODduOb6nBoJIHiYcaZASrzuBFYPjhHgjZCiuJ7JVyZEIDUUr2dACKMc83p2iirZhL7bIPg0vz6+w6P0vEVZWJhDHl0bAZIhMoEFSRpoW80mcbBA8Rl+Na1fH7WSWy5M2VRcHNPO679U+PgZZJCPMzTyOAcwrNVkdAHk2xeCIpv8jCwOcE9+itGWNCrPFmM7ikBbMuigDy92YYgFrlIMUIsfFDvSrosNMnOVgGfoeU7857hQPT7cN8XOS4pHhV04mufuHuvARWIfGkryMCoKlw0vz62qDJ6B8D2De7A742Bb7xYjO5ScO9F8vguD0OS+Qb+XAC3b66KxuHTo+bLlxtookwZiwAvEESo2y+k4dnabZaa5H4zA7gQBOLMvYIMjPql/8bPhMRasvQeEmUIM2lJE8KgOpPo23UgBQz+JRF6TvEdEMO4N14Eu8ZK2A5AV8z5ghghDI2Z5epW5ouVHz31UyShZ/5GmKfPu0CYKI/BU/w+wBOXAxevkY5p/eaDwDEO5WDd+cU9kL63takAP2vEbhNWpPV9e3W7DF450JJgaPUfFNe8xi3JM2T7CyCg3njzhaX+3P0Tas8owplu0OuLnnULP+1waQ8LL9S2na9ZMGKVTTo0e+Pvf36vBr6+fp0oO8dQY6REdn2aQMk6tl3dcVTUtfYxvjOuZKK3g1Idgs7FnWzNe3McjO4qBzylBXeZvH8DK4KSwMWkjksLgO7+SK6CYwEDs4tYYAATIAAAAAAAAAAAAAjYtQXINkg0nuw70e//HXKCrjnpqWRQfJYxyeZaXWFPqrfIIT1OiD1HgmB1VbNUcBcPEDgEfmoJEo9P9A6OnsJ0ZtarDjtMsOcixFAQnB2YhvGhjfiozts5pxfxX4gr0XeHD8KsTRg4eyGAvkl+0w6y5fQ0ZpcdA1um1wjMXnLlxTvSkrxQGN3cBLUalsXNpXlcBtymLNDmqmqTtZvU3CDEbDthSA/6QoqldYBE+wELwvhETRiLQaBu7e5uPQKT5lRWo5OBjfB35uxWz9ZXft3AZOKSbHFriTXhFYV18MIAO0gxEnM0r7hBmFoZl2rfHubrcr7qasD5gOSKtoau/ePmJ+mGvsB22fTgJgTU4VqQ8To9niS9/zmI/3ypzUkYZkncrOi4uLzCuoo/WeXM66kbHIR7HoS5ufkhA1X8iwrDQ2KdvgU+8bqUMbe92UYLaqG4DVHDxZUMEI06H1Ir8iDGz6fKQa64UNsF3c9BhU+ZS/GIt9IWAawEXToYXjqFdlXHHW/kQHhXf3lhL2HYgr48k2kKZM5Wof6R4NAk1FjVhsKQ2Bqr7f8lhyPcR37cwV5m6QbdMDhq53AmDY8y06GdZXzPMyxiab7MgUyph+wbZsMLpDAlRzNaZiHLqiThTFEaKxlw6lUi1jkI0UkASB6MtYbkZsONvQ8T5lT9ZNq1IICiwuGKdaK+3TfxlrslhY+aDlrwvur03DFeF1kMATrwcC20qcc/SMQ/IB1wynkyxf9QJeFTsrXQHtH2KZ+1Nor+eyN38I4kPsTQgCw8eqAXhHEIzblIJhVV43e/u02yCHWUdEt2ZNwVCluwdj2BcoVWMhyYNcYRFp1fnGBpwh8NMlv3eW3r8ofwy0fzVcPdUpHl7nS/+zy8eEJ/qZ3fJP/j2sQbE5rt5KGJu+4TFBXxk6CkoytCrQ+PuXyagfne1MXXCIL7PF71KlHLinkhUJe5O1heCNdk7qY0UWLRy4y2seekcjU3lkU2sgR+RaFju2auR67oL2nTfO4Qk5rM02OgDDk/gJTkrgGFySd7NLsHuRQ5Tar5I4aD5jJwA4dIBTbZMgzvwcBKD+Ky61NKUQ/LSyouL7s6lIKXEXYux8vZOXkQxEJgAnmw2Cijwe8K/A3AwOhfOjrYLMqZOloWK9ewTBBGPi3NIAAAAAAAAJKFtksAAAAAAAAAAAAGofRP2LDOIC4u0HDIsarUd8wLJieqmJugTXPMwTUG3wM5P4UJhCAJYUKkaeqIcT0Ro0726zxekzj1Csz+zYb09VtTxyp2hoE2hWhA4AKwmYGYMoN3SyiysRuWCtq5zcdCpGXRagOivIbB8SQJhlcWxHCQFshZ3v1FtrhbwxOOoA/9Ni6z0MEp4erPX+T7ol9XZcgP8GAdPZL7yXqIt1oGfXeqtuPnFZ1UayHS1ETjLxi3BKPqBKZT83ONcMVMr/u95xDwsMrN8ETzSWOBuOSx0p8QmPmNgT4JNifKiw8pyshnFupgP/PsBWSGXk/ASgixyfJSUxDHLaD0bxAdY7fs8yfz9wgXMTgXb8w99rTJR61Ydir6v8m2UXmRWSeMaGo+SHfSCdArXAoGStEPMpicOV/h3ic8FRG8fsFjQ/jBNoe223NjqhGvj54PV5scrvRLUA0gBgvGHETKgoFe7ioaUoMSPagVZWn9BJnSBwpkkrh+66JXooWkF2M4ZJEmp7ZOFssPXlk8n5vgSFst5AiLB45No688RWDTwXy10q48WJbDlEJin70za5/l4fOa+LVLW3xaM0AO2ykhvcMEAmZl+gAABNJF/cchi1KDWYLXJJR+w7yFPoaJWCQh+hu/GsfRrkYRDR0y3TLr3Oy/IA2GkN7BZDsBzeLO9nPRX8YRJ0XLAwC3KIHgNotpi0gExCbGJI0lP7LUIgYa8MeEvH+RTDa7wyE/h43iGRJBlIm5TUv293tqsMF537Co++Nlh6rKBa1CtbNdLDOqttLyljAylS1R1xPRWWmVjSgIfmOBgeUUqifzJRSoe9Ot7KMwxBDIDEEqkzvBweB0CKAXYzkkcYuwkae6WCeIU1grQrXSilaOhzkye9R3UROVYvE1bjUAGTo8YB2g39jV5Jm2A27ujj3rrw+8o5fax7u278GVCj7WVojiE+cKrXDS1C4+hgXkjBIxtrpf2c/AwXNcqlu3J9WPNHcyNq/QKSWYFTN7fmbrfzaK+Oft7v8c9p9jZWLg8qDKBD04nDEOm2CDQiMTqDG2uZmb1K/q1TxJcbbUENWWX5ZIV6v8lFsJoj6ttRfMmnElJtZ4UESY9yTDLScgRGm4TDxcrdY6oq/1A5bFOtLPOla4D2BJzUoPHPPcc5kpb7eltgip/w4ZQ+3168++z/F5UIUUVvImLcGiDhMRdvc7Vr7WvmZtBJEhKMV/8FlHq4ji603GmV0yLxOM+tLVgCMWkFrpFfjDSgTjUd26gs90eR0mFNkyDPL4BrMSlXfMccV0UVOHqukh0ymF2aH9KWQCsYx6BuyA/Y5RDMLo76PoCFER52Vw75QGDffbsNSHeGZk4mk/4c0GF3wx2EdzBVAuRVQnYfdzYR+svELJKpOwQqpdx4DHfCseGeYcdQ1hjpRlvxqP0YOIHGMUms5U+9qbwRIJ0Q+SS14UTSVjeYhf7IV05jNXgxiTPIaNOQOlwLbAtPLjaeQPVT8vRwb5EhmJ79ie1BNiA/7XuG7UIjgihHF0+eUe0gAsen+VPmChitZWx/GGIOOIvk7rupDbzGbRXNlhwW6HRiXIRknbYYkq1qKfPEDifoJzCi6IMJf7U1xtBxKg9rNLwi+NKKmZWzAM1HXrn9fz0qLtpwta7sdFoSlGXd8VV7/xX0EGX/nTDFOyK5nHRp663iibHmchmT1cEGwBzX4+EFBRgsgPoV1X3HYlPbclhef77hO696G98Dfiz2M6DDgU09lR3IIi80iJLwqwC3JW05HzyLyySO8QfaS6yQxt3gXnvocJgQKmB4DAWWMDkSbm+kuDBz5dADvpIYvoQoPCCh0BZK26XQVUOqScMR+83amkI+RNoQ/RHT482yON5Lms97aJpbL33hTs9U+Sx82XndNrlqRKMjyy3UruIQg1meY5ho4V3T5EGcvs13X/MYHEgCEr8l4iUB44Vb2mPhsEz+WrNFOS9gMGr9FprtGeEmJLxX6FhE+1vtHXfGBCiH+v8jEEG5wdxGd36IvZ6kpP1p6f+4GEhNQonETHzJL41qoKc/XirjwEb4WCO08mLG4NDE8NhXKdd1P5vAF9iCyUOeShXwwpt+Rnv9REzK/76u9Aw+7sx5cKyVGK616rZew3FFC3acO6vU13kczs+OkDYFwlIFjyAE4y2CMMnZbFWrv0SjZiGY55QOwc5rPvkoxkcATAbg/FyTp0B+JXp72dCK/o3ziSngVtSWhJaQMvnkMSVWqCAVLPwr0PWSu3Rerz4Dl9KsyiO66RS2R+wg2ufMtLY5117Ktc5zJkE2eeOmL/aDmCe273zmTmSc9oEsj8DffgjsDXcKlCIDBof7s4dnGxuInqzkDpjMphS0mPpwwjTQ8EEfq4H/8fNpLew4NWWSMl5Z/meNMrDuonssFa8U4U2ZRtUfEYdxizh2ShVTwHuNSXz0HfqHQRtTJ0ybFofXF8BLr9yS4JYVNQQMptJYvE+igk+mVU0zPRVdStCYLiXY5934sxzXt1jxAGYwQ25XT3Cyigu3ua9YTYM2G/zd2vIloOwiJb+dF9b69yi8DzL67xnEM/m0B2Zxxevuy0VfdgzrUXE+5ZCPHv6Na8wFxVR6zCZ75opJ19wVU4INJF8T+kjGITymDT0eKdW3YZ2oQCo7Xl9dq9xGE+Gh/nN83QCD2rlFP3kuKq+Kes/5TA+qcgBKcGhk36qIo551kGnZqLwznW+nbR6Zz59tqWzbXT7PclQMzZvjLBVeLv//OjmW4IpwPc4yksReEwNAxUloVBKkG0NB97uOe6cGHYxjhRnAHeHI1v1XyLmx31ewmReZ2Jjv8n3WpMYqF3ckuNIBPubk5VO4fg22gxSDX/t+eUh0j7LrIhGDpNd6oC3DViMAOuxnBxUzIgRkxrePrLYpNVOAtCTAiPAmybKfMh0bYT5RfjWLXpm5qqhXUtl5BrymTOpEP8NsiJdRQJ0n4fTWHL8JdOlHIYhonuRLdj8FI76r2S3cCJ2O6F/Df9ROunpPKMKvqkA0R/869s6wuRRy8k5Um1nG8lBAfdM90k6nC9OiPBtaFJJE4XwdX7lGDPpLQ5cuTgZwWHoBCHimgESO+pF44GLkHf1NQis/+YeRD7rsGkNPE8CzKo92PnD4GJ8xDYcx/sWZ2g1ykfQmlF5D+fclOpjiFCTfqGWkCYWjRxIF5JSwCl80GOT2YpXCUBgAAPleqG935ELtt1gR+M98s/I6yFyyzIgl2Hoq3lDxYCL7ktw1lvfV+nwYmGXYvNUVxq2HXYhHS2O6wpGYPrSBAR0L/Sp5OdD7pEtm4gZ2xM0/uLa5LoVF8L12phIbOD8gDMwN61i9jo2K7nqjPd7RY6fAXEXtOzhbne0fSBj8eIJlNvsTth5o4bzaB1w1dxTQxqbrFDln8BD8e5tQRC+S0Gw9wlPLxfhJI5I06lShvpoEpTqaA/f+7dR7Kj4590f6LwISgTxaUyJJfGY8INfQLnS9Y4uI6y8wCNn5QsUXk6xtAdbWJMbN/G73QBfhgjBjI174VCE4hifnsb+SDdfKk3rNEgkKLdryoZLzAH7xgV9mxJdBZm8UVBLWQadmovDPE0tc70ZKnPs/JG6gk8ZWe5LcNZbxlfrf9ZK11ky7uO5UKGuC8clEK7ur2ge8Crka/VPzsy3j76ZezU2IZslSvuKnJZYgEiZF2+DTxNweYnZTZwzpGbSWaersCwTrkETFY8+PPcmzcvF03b9fFC8SH2Mj68nwbRXqOvO+F3ArwXID+5raR42z8lUJv9+RdbYCslXdT3ru6aXtqfLs3kUFeDb1QgnKYc5KYLm70dXqwPlotmitJ7MLVa9Ur6KV28ddM/gOfPFnA43/2khsP6G0Tx3bVCBM3DHGwfD8MlFZ02Vk12NiVd6Bh93iyCZJnY1is+HbKb8LmsgneLvjbxWXG1Xkjv6VY3oaoq4yYIyBifa/U2ct3shI8atro8e6UMRfrcH9LH545n5WqTotx4fqwTa2+VnUVDc90/Gzxu3PeXHA9gQYoEr4VkTZm++aWg8YER48eF9JQh3EDBW+QtTdJ2F+C5WZj17cBEeavBq8mngha/j5HWB5/gp8AED0zLHlv/w1v4OeLddQryfQg1ZRpd+hjyOUyATMbKDqvsGgolSnnMPNptYwQrbuA6Bz9h9CkTIcRN7nf422FPhjXfFb5IXKvQigWjCdrfEjVVlPs3r7lgGtgmdxcjZnRcTqGVYuJfBkbNJRFXTYZWqpAp6VXMbqKpgYGzdJmjrFLPeEzxn5qzT8jyTF+xbSB3hDv3ai6zw7sKjwKjOs8/RwhzNmRxziGAX70+A1B6JvJ9Dhkt+XVJNBamGEHRZEzWPRo81mzGcP+FZ/cKXGqbTuYsRlwwKCX1FstivmEIUhwG3F9mVfcO/f1AICNRnbArO2zB6k0OEyQaCShFnsBEy3N6Tm/XgH3E9Otn0diZ+RLZ2gHjbH51/QAUeZiI82/03pG/B7KgCDwv1IRximdAAceWYms/tJCvNBZNdLAbbEG4S7Sp9iKQgbNnp3aS0Uh+Zc5ijOxyZIbzWv+9UuSGZ4vrG9dI7OoHnW4OQaxTPUMfjBHgdWneHLzMIKx/SSoeFAQS3AAAebscjlS1vhmmMHoZgftB8GVSYAoXPLBgCx3Fjys8c0parEHed2AAAAAAOeSWKpqyy4JnUCl7L3+zq6fHvnFn83uLZxO1JPXvsyVYML9Pj1UcxwjBe31wanLWny2F9bnbNXKMQd4Tp4vqGIhf+o/PDJ7kluqliAvCN1ttfTSXcS3xtk3ibJ7wEXEswrdhgR3AOkLSDOsjsBLHLmmSdr3JK7a25ORg63jHB3BxXovcvVLM3mYiyNyH5h8Tr52PmAUbGWYigSiIVxZIxScDM0M2FWOJcM63tHg8DtalhDtQpFLZLGSH3pY/tyr7sVDFoeHx1ub70l8c8o5Yaext5vgYLjGJ9UDOBrdv5qqLHG18R+D7vUKf6/0VvxFRmBzf89qNEquNnqpl7LaTziQnIgcTzxZSX0pCGILFRYvyLUEFO3LJlORx38+eI6mv/9dIdWf3waVEIBMcatVHg2xDcxARhURGdZYwtwi3FO0HPs/VDVTFeOqgkX9IF3lXDJRUyRvIfFGN8eEwkLvFn5GPWf2BSmIdV92GYn/46jRCvXmMY5mtN6be63hjoUl4/QRxe9t2G7xGONIl9g21QwyJRaYXGGAmldWfZ4BgAdAMHtLF2wfzt2ZW8h5qx9nFHeNhO2kE1xtsTRHf6zXYFKwqAA+vUAAVEljesx21iywA7us5XGLeemm69F7z5GxAyxPGNsaDXgzBJeJEP2nWtuVbsoN3RRyN6idsM2KyYCi21xdLb5m2PCPp/sb9Y/0x8SSb0TU594ODdqUfn+JZQ6WXD2rQxy0y6Fex6Fy1jIM4BfufdhHbnTj/qAmsP4CEm3XQM34UdHgMGxA/UOsETQSbmVBxXjAWfMbwy9VRvDClP5isFiM0gsR1mGN9v/CYUX6HVy7WhLlURw9CYF/5AlLqeC/vgYKxJ5T+rUaNkzhPF6PjJgP/VkdBQDUOzQDfWr7MdxfiuiG6IXtQwAAADUPb20EAuSZv5UPwa0vQDN9pegDkoTe/iPZaghNPJS/dQOFkqtpEhMAaeECI4wM/DwYHHakCc+lJog943XfRHzSGp1Y4VxZHjMPPx7lmbubDVZ9bJ6MA8UVL61AW/omSyVebil4xGIhObOn68/pxbphAYZOAa1TxvvMYkxhRyh7qGsvV+7fbUg5uCAZqu/wb1ZvfsG7HK33i07sCdDWQT4smkr39JmuCIVunl+UL8/2paW3j0Bi8qkFT7CUEk/i22b+3YSCM+HTB9FAVSz061XKI2FKe61ujuzVIbIDd/SvxrgyHu3z9w7RefkUlfrqdxhLQH7X6LZDSGH3CTqshPYsWduNnElzUbsyiwSkfD8Ep55o0Q/6qAbFfx0Hv3xxOm1dWmvqu5aGjUKRQqt/K96nQ0ZGv0dWMXBFzNpqHRXPVdkuHhxeBbvE8G8phVw3eFUM6CphgAj86/ffqqRJgMl1BNaXRlJJn0aT9g05Taxvoe84pCUwvQRA3VB21ZGCTHabtoaQIdICafWKrDxT0NTgWpyANEizJsSXTTLbnn2jRolETKXbQPJA2uYn0oUqrtccBjzAPkjhAa25PGhRZd5ulP1KCwv/znDX3LGTMTfu5WRxKkcy1+JPvw+FgymlQLBIuvpp6OGlMJQfYfdDWWDIcaoKtYnzHGA4gAHCIMCvAAAXuFL2qiGZ4duAAAAAAAA==",
      "width": 412,
      "height": 8891
    },
    "nodes": {
      "page-0-IMG": {
        "id": "",
        "top": 1029,
        "bottom": 1134,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 105
      },
      "page-1-IMG": {
        "id": "",
        "top": 4489,
        "bottom": 4559,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-2-IMG": {
        "id": "",
        "top": 2585,
        "bottom": 2654,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-3-IMG": {
        "id": "",
        "top": 3837,
        "bottom": 3907,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-4-IMG": {
        "id": "",
        "top": 56,
        "bottom": 288,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "page-5-IMG": {
        "id": "",
        "top": 3837,
        "bottom": 3907,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-6-IMG": {
        "id": "",
        "top": 1872,
        "bottom": 1976,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "page-7-IMG": {
        "id": "",
        "top": 7063,
        "bottom": 7132,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-8-IMG": {
        "id": "",
        "top": 6439,
        "bottom": 6509,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-9-IMG": {
        "id": "",
        "top": 5792,
        "bottom": 5861,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-10-IMG": {
        "id": "",
        "top": 4489,
        "bottom": 4559,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-11-IMG": {
        "id": "",
        "top": 5140,
        "bottom": 5210,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-12-IMG": {
        "id": "",
        "top": 3208,
        "bottom": 3278,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-13-IMG": {
        "id": "",
        "top": 7063,
        "bottom": 7132,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-14-IMG": {
        "id": "",
        "top": 3837,
        "bottom": 3907,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-15-IMG": {
        "id": "",
        "top": 6439,
        "bottom": 6509,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-16-IMG": {
        "id": "",
        "top": 7063,
        "bottom": 7132,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-17-IMG": {
        "id": "",
        "top": 5792,
        "bottom": 5861,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-18-IMG": {
        "id": "",
        "top": 5792,
        "bottom": 5861,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-19-IMG": {
        "id": "",
        "top": 2585,
        "bottom": 2654,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-20-IMG": {
        "id": "",
        "top": 7692,
        "bottom": 7762,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-21-IMG": {
        "id": "",
        "top": 5140,
        "bottom": 5210,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-22-IMG": {
        "id": "",
        "top": 2585,
        "bottom": 2654,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-23-IMG": {
        "id": "",
        "top": 7692,
        "bottom": 7762,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-24-IMG": {
        "id": "",
        "top": 6439,
        "bottom": 6509,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-25-IMG": {
        "id": "",
        "top": 4489,
        "bottom": 4559,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-26-IMG": {
        "id": "",
        "top": 7692,
        "bottom": 7762,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-27-IMG": {
        "id": "",
        "top": 3208,
        "bottom": 3278,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "page-28-IMG": {
        "id": "",
        "top": 5140,
        "bottom": 5210,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "page-29-IMG": {
        "id": "",
        "top": 3208,
        "bottom": 3278,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "page-30-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "page-31-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "page-32-DIV": {
        "id": "section-stories",
        "top": 900,
        "bottom": 2225,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 1325
      },
      "page-33-path": {
        "id": "",
        "top": 2887,
        "bottom": 2903,
        "left": 20,
        "right": 42,
        "width": 21,
        "height": 16
      },
      "1-0-H5": {
        "id": "",
        "top": 2260,
        "bottom": 2280,
        "left": 0,
        "right": 79,
        "width": 79,
        "height": 20
      },
      "1-1-IMG": {
        "id": "",
        "top": 2585,
        "bottom": 2654,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-2-IMG": {
        "id": "",
        "top": 2585,
        "bottom": 2654,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-3-IMG": {
        "id": "",
        "top": 2585,
        "bottom": 2654,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-4-IMG": {
        "id": "",
        "top": 2814,
        "bottom": 2883,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-5-IMG": {
        "id": "",
        "top": 2814,
        "bottom": 2883,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-6-IMG": {
        "id": "",
        "top": 2814,
        "bottom": 2883,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-7-IMG": {
        "id": "",
        "top": 3208,
        "bottom": 3278,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-8-IMG": {
        "id": "",
        "top": 3208,
        "bottom": 3278,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-9-IMG": {
        "id": "",
        "top": 3208,
        "bottom": 3278,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-10-IMG": {
        "id": "",
        "top": 3437,
        "bottom": 3507,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-11-IMG": {
        "id": "",
        "top": 3437,
        "bottom": 3507,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-12-IMG": {
        "id": "",
        "top": 3437,
        "bottom": 3507,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-13-IMG": {
        "id": "",
        "top": 3441,
        "bottom": 3503,
        "left": 12,
        "right": 121,
        "width": 109,
        "height": 62
      },
      "1-14-IMG": {
        "id": "",
        "top": 3441,
        "bottom": 3503,
        "left": 129,
        "right": 239,
        "width": 109,
        "height": 62
      },
      "1-15-IMG": {
        "id": "",
        "top": 3441,
        "bottom": 3527,
        "left": 247,
        "right": 400,
        "width": 153,
        "height": 86
      },
      "1-16-IMG": {
        "id": "",
        "top": 3837,
        "bottom": 3907,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-17-IMG": {
        "id": "",
        "top": 3837,
        "bottom": 3907,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-18-IMG": {
        "id": "",
        "top": 3837,
        "bottom": 3907,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-19-IMG": {
        "id": "",
        "top": 4066,
        "bottom": 4136,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-20-IMG": {
        "id": "",
        "top": 4066,
        "bottom": 4136,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-21-IMG": {
        "id": "",
        "top": 4066,
        "bottom": 4136,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-22-IMG": {
        "id": "",
        "top": 4070,
        "bottom": 4140,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-23-IMG": {
        "id": "",
        "top": 4070,
        "bottom": 4140,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-24-IMG": {
        "id": "",
        "top": 4070,
        "bottom": 4140,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-25-IMG": {
        "id": "",
        "top": 4489,
        "bottom": 4559,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-26-IMG": {
        "id": "",
        "top": 4489,
        "bottom": 4559,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-27-IMG": {
        "id": "",
        "top": 4489,
        "bottom": 4559,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-28-IMG": {
        "id": "",
        "top": 4718,
        "bottom": 4793,
        "left": 12,
        "right": 146,
        "width": 134,
        "height": 75
      },
      "1-29-IMG": {
        "id": "",
        "top": 4718,
        "bottom": 4785,
        "left": 154,
        "right": 273,
        "width": 119,
        "height": 67
      },
      "1-30-IMG": {
        "id": "",
        "top": 4718,
        "bottom": 4785,
        "left": 281,
        "right": 400,
        "width": 119,
        "height": 67
      },
      "1-31-IMG": {
        "id": "",
        "top": 4722,
        "bottom": 4792,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-32-IMG": {
        "id": "",
        "top": 4722,
        "bottom": 4792,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-33-IMG": {
        "id": "",
        "top": 4722,
        "bottom": 4792,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-34-IMG": {
        "id": "",
        "top": 5140,
        "bottom": 5210,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-35-IMG": {
        "id": "",
        "top": 5140,
        "bottom": 5210,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-36-IMG": {
        "id": "",
        "top": 5140,
        "bottom": 5210,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-37-IMG": {
        "id": "",
        "top": 5369,
        "bottom": 5439,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-38-IMG": {
        "id": "",
        "top": 5369,
        "bottom": 5439,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-39-IMG": {
        "id": "",
        "top": 5369,
        "bottom": 5439,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-40-IMG": {
        "id": "",
        "top": 5373,
        "bottom": 5443,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-41-IMG": {
        "id": "",
        "top": 5373,
        "bottom": 5443,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-42-IMG": {
        "id": "",
        "top": 5373,
        "bottom": 5443,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-43-IMG": {
        "id": "",
        "top": 5792,
        "bottom": 5861,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-44-IMG": {
        "id": "",
        "top": 5792,
        "bottom": 5861,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-45-IMG": {
        "id": "",
        "top": 5792,
        "bottom": 5861,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-46-IMG": {
        "id": "",
        "top": 6021,
        "bottom": 6090,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-47-IMG": {
        "id": "",
        "top": 6021,
        "bottom": 6090,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-48-IMG": {
        "id": "",
        "top": 6021,
        "bottom": 6090,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-49-IMG": {
        "id": "",
        "top": 6439,
        "bottom": 6509,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-50-IMG": {
        "id": "",
        "top": 6439,
        "bottom": 6509,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-51-IMG": {
        "id": "",
        "top": 6439,
        "bottom": 6509,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-52-IMG": {
        "id": "",
        "top": 6668,
        "bottom": 6738,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-53-IMG": {
        "id": "",
        "top": 6668,
        "bottom": 6738,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-54-IMG": {
        "id": "",
        "top": 6668,
        "bottom": 6738,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-55-IMG": {
        "id": "",
        "top": 7063,
        "bottom": 7132,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-56-IMG": {
        "id": "",
        "top": 7063,
        "bottom": 7132,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-57-IMG": {
        "id": "",
        "top": 7063,
        "bottom": 7132,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-58-IMG": {
        "id": "",
        "top": 7292,
        "bottom": 7361,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-59-IMG": {
        "id": "",
        "top": 7292,
        "bottom": 7361,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-60-IMG": {
        "id": "",
        "top": 7292,
        "bottom": 7361,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-61-IMG": {
        "id": "",
        "top": 7296,
        "bottom": 7365,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-62-IMG": {
        "id": "",
        "top": 7296,
        "bottom": 7365,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-63-IMG": {
        "id": "",
        "top": 7296,
        "bottom": 7365,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-64-IMG": {
        "id": "",
        "top": 7692,
        "bottom": 7762,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-65-IMG": {
        "id": "",
        "top": 7692,
        "bottom": 7762,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-66-IMG": {
        "id": "",
        "top": 7692,
        "bottom": 7762,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-67-IMG": {
        "id": "",
        "top": 7921,
        "bottom": 7991,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-68-IMG": {
        "id": "",
        "top": 7921,
        "bottom": 7991,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-69-IMG": {
        "id": "",
        "top": 7921,
        "bottom": 7991,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-70-IMG": {
        "id": "",
        "top": 7925,
        "bottom": 7995,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-71-IMG": {
        "id": "",
        "top": 7925,
        "bottom": 7995,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-72-IMG": {
        "id": "",
        "top": 7925,
        "bottom": 7995,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-73-IMG": {
        "id": "",
        "top": 8345,
        "bottom": 8415,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-74-IMG": {
        "id": "",
        "top": 8345,
        "bottom": 8415,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-75-IMG": {
        "id": "",
        "top": 8345,
        "bottom": 8415,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-76-IMG": {
        "id": "",
        "top": 8574,
        "bottom": 8644,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-77-IMG": {
        "id": "",
        "top": 8574,
        "bottom": 8644,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-78-IMG": {
        "id": "",
        "top": 8574,
        "bottom": 8644,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-79-IMG": {
        "id": "",
        "top": 8578,
        "bottom": 8648,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 70
      },
      "1-80-IMG": {
        "id": "",
        "top": 8578,
        "bottom": 8648,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 70
      },
      "1-81-IMG": {
        "id": "",
        "top": 8578,
        "bottom": 8648,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 70
      },
      "1-82-IMG": {
        "id": "",
        "top": 56,
        "bottom": 288,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-83-IMG": {
        "id": "",
        "top": 398,
        "bottom": 591,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 193
      },
      "1-84-IMG": {
        "id": "",
        "top": 641,
        "bottom": 834,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 193
      },
      "1-85-A": {
        "id": "",
        "top": 4380,
        "bottom": 4433,
        "left": 32,
        "right": 351,
        "width": 318,
        "height": 53
      },
      "1-86-A": {
        "id": "Facebook",
        "top": 8801,
        "bottom": 8829,
        "left": 26,
        "right": 75,
        "width": 49,
        "height": 28
      },
      "1-87-A": {
        "id": "Twitter",
        "top": 8801,
        "bottom": 8829,
        "left": 75,
        "right": 124,
        "width": 49,
        "height": 28
      },
      "1-88-A": {
        "id": "Snapchat",
        "top": 8801,
        "bottom": 8829,
        "left": 124,
        "right": 173,
        "width": 49,
        "height": 28
      },
      "1-89-A": {
        "id": "Linkedin",
        "top": 8801,
        "bottom": 8829,
        "left": 222,
        "right": 271,
        "width": 49,
        "height": 28
      },
      "1-90-A": {
        "id": "Pinterest",
        "top": 8801,
        "bottom": 8829,
        "left": 271,
        "right": 295,
        "width": 24,
        "height": 28
      },
      "1-91-A": {
        "id": "skipToMain",
        "top": 10,
        "bottom": 30,
        "left": -999,
        "right": -843,
        "width": 156,
        "height": 20
      },
      "1-92-INPUT": {
        "id": "",
        "top": 109,
        "bottom": 165,
        "left": -362,
        "right": -74,
        "width": 287,
        "height": 56
      },
      "1-93-DIV": {
        "id": "",
        "top": 267,
        "bottom": 312,
        "left": 34,
        "right": 339,
        "width": 305,
        "height": 45
      },
      "1-94-A": {
        "id": "logoContainer",
        "top": 12,
        "bottom": 44,
        "left": 60,
        "right": 138,
        "width": 78,
        "height": 32
      },
      "1-95-A": {
        "id": "homeLink",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-96-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-97-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-98-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-99-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-100-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-101-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-102-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-103-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-104-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-105-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-106-A": {
        "id": "hubLogo",
        "top": 32,
        "bottom": 77,
        "left": -378,
        "right": -268,
        "width": 110,
        "height": 45
      },
      "1-107-A": {
        "id": "",
        "top": 236,
        "bottom": 295,
        "left": -378,
        "right": -34,
        "width": 343,
        "height": 59
      },
      "1-108-A": {
        "id": "",
        "top": 311,
        "bottom": 371,
        "left": -378,
        "right": -34,
        "width": 343,
        "height": 59
      },
      "1-109-A": {
        "id": "",
        "top": 56,
        "bottom": 324,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 268
      },
      "1-110-A": {
        "id": "",
        "top": 398,
        "bottom": 617,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 219
      },
      "1-111-A": {
        "id": "",
        "top": 641,
        "bottom": 860,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 219
      },
      "1-112-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-113-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-114-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-115-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-116-A": {
        "id": "",
        "top": 908,
        "bottom": 1013,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-117-A": {
        "id": "",
        "top": 1029,
        "bottom": 1134,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 105
      },
      "1-118-A": {
        "id": "",
        "top": 1150,
        "bottom": 1254,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-119-A": {
        "id": "",
        "top": 1270,
        "bottom": 1375,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-120-A": {
        "id": "",
        "top": 1391,
        "bottom": 1495,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-121-A": {
        "id": "",
        "top": 1511,
        "bottom": 1615,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-122-A": {
        "id": "",
        "top": 1631,
        "bottom": 1735,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-123-A": {
        "id": "",
        "top": 1751,
        "bottom": 1856,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-124-A": {
        "id": "",
        "top": 1872,
        "bottom": 1976,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-125-A": {
        "id": "",
        "top": 1992,
        "bottom": 2097,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-126-A": {
        "id": "",
        "top": 2113,
        "bottom": 2217,
        "left": 34,
        "right": 378,
        "width": 343,
        "height": 104
      },
      "1-127-A": {
        "id": "",
        "top": 2241,
        "bottom": 2293,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-128-A": {
        "id": "",
        "top": 2293,
        "bottom": 2584,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 290
      },
      "1-129-A": {
        "id": "",
        "top": 2585,
        "bottom": 2810,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-130-A": {
        "id": "",
        "top": 2585,
        "bottom": 2810,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-131-A": {
        "id": "",
        "top": 2585,
        "bottom": 2810,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-132-A": {
        "id": "",
        "top": 2814,
        "bottom": 3034,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-133-A": {
        "id": "",
        "top": 2814,
        "bottom": 3034,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-134-A": {
        "id": "",
        "top": 2814,
        "bottom": 3034,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-135-A": {
        "id": "",
        "top": 2821,
        "bottom": 2849,
        "left": 129,
        "right": 283,
        "width": 155,
        "height": 28
      },
      "1-136-A": {
        "id": "",
        "top": 2865,
        "bottom": 2917,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-137-A": {
        "id": "",
        "top": 2917,
        "bottom": 3207,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 290
      },
      "1-138-A": {
        "id": "",
        "top": 3208,
        "bottom": 3433,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-139-A": {
        "id": "",
        "top": 3208,
        "bottom": 3433,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-140-A": {
        "id": "",
        "top": 3208,
        "bottom": 3433,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-141-A": {
        "id": "",
        "top": 3437,
        "bottom": 3657,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-142-A": {
        "id": "",
        "top": 3437,
        "bottom": 3657,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-143-A": {
        "id": "",
        "top": 3437,
        "bottom": 3657,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-144-A": {
        "id": "",
        "top": 3441,
        "bottom": 3661,
        "left": 12,
        "right": 121,
        "width": 109,
        "height": 220
      },
      "1-145-A": {
        "id": "",
        "top": 3441,
        "bottom": 3661,
        "left": 129,
        "right": 239,
        "width": 109,
        "height": 220
      },
      "1-146-A": {
        "id": "",
        "top": 3441,
        "bottom": 3661,
        "left": 247,
        "right": 400,
        "width": 153,
        "height": 220
      },
      "1-147-A": {
        "id": "",
        "top": 3448,
        "bottom": 3476,
        "left": 124,
        "right": 288,
        "width": 164,
        "height": 28
      },
      "1-148-A": {
        "id": "",
        "top": 3492,
        "bottom": 3544,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-149-A": {
        "id": "",
        "top": 3544,
        "bottom": 3836,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 292
      },
      "1-150-A": {
        "id": "",
        "top": 3837,
        "bottom": 4062,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-151-A": {
        "id": "",
        "top": 3837,
        "bottom": 4062,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-152-A": {
        "id": "",
        "top": 3837,
        "bottom": 4062,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-153-A": {
        "id": "",
        "top": 4066,
        "bottom": 4286,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-154-A": {
        "id": "",
        "top": 4066,
        "bottom": 4286,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-155-A": {
        "id": "",
        "top": 4066,
        "bottom": 4286,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-156-A": {
        "id": "",
        "top": 4070,
        "bottom": 4290,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-157-A": {
        "id": "",
        "top": 4070,
        "bottom": 4290,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-158-A": {
        "id": "",
        "top": 4070,
        "bottom": 4290,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-159-A": {
        "id": "",
        "top": 4077,
        "bottom": 4105,
        "left": 93,
        "right": 319,
        "width": 225,
        "height": 28
      },
      "1-160-A": {
        "id": "",
        "top": 4121,
        "bottom": 4173,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-161-A": {
        "id": "",
        "top": 4173,
        "bottom": 4488,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 314
      },
      "1-162-A": {
        "id": "",
        "top": 4489,
        "bottom": 4714,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-163-A": {
        "id": "",
        "top": 4489,
        "bottom": 4714,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-164-A": {
        "id": "",
        "top": 4489,
        "bottom": 4714,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-165-A": {
        "id": "",
        "top": 4718,
        "bottom": 4938,
        "left": 12,
        "right": 146,
        "width": 134,
        "height": 220
      },
      "1-166-A": {
        "id": "",
        "top": 4718,
        "bottom": 4938,
        "left": 154,
        "right": 273,
        "width": 119,
        "height": 220
      },
      "1-167-A": {
        "id": "",
        "top": 4718,
        "bottom": 4938,
        "left": 281,
        "right": 400,
        "width": 119,
        "height": 220
      },
      "1-168-A": {
        "id": "",
        "top": 4722,
        "bottom": 4942,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-169-A": {
        "id": "",
        "top": 4722,
        "bottom": 4942,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-170-A": {
        "id": "",
        "top": 4722,
        "bottom": 4942,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-171-A": {
        "id": "",
        "top": 4729,
        "bottom": 4757,
        "left": 135,
        "right": 277,
        "width": 141,
        "height": 28
      },
      "1-172-A": {
        "id": "",
        "top": 4773,
        "bottom": 4825,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-173-A": {
        "id": "",
        "top": 4825,
        "bottom": 5139,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 314
      },
      "1-174-A": {
        "id": "",
        "top": 5140,
        "bottom": 5365,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-175-A": {
        "id": "",
        "top": 5140,
        "bottom": 5365,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-176-A": {
        "id": "",
        "top": 5140,
        "bottom": 5365,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-177-A": {
        "id": "",
        "top": 5369,
        "bottom": 5589,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-178-A": {
        "id": "",
        "top": 5369,
        "bottom": 5589,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-179-A": {
        "id": "",
        "top": 5369,
        "bottom": 5589,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-180-A": {
        "id": "",
        "top": 5373,
        "bottom": 5593,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-181-A": {
        "id": "",
        "top": 5373,
        "bottom": 5593,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-182-A": {
        "id": "",
        "top": 5373,
        "bottom": 5593,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-183-A": {
        "id": "",
        "top": 5380,
        "bottom": 5408,
        "left": 124,
        "right": 288,
        "width": 165,
        "height": 28
      },
      "1-184-A": {
        "id": "",
        "top": 5424,
        "bottom": 5476,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-185-A": {
        "id": "",
        "top": 5476,
        "bottom": 5791,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 314
      },
      "1-186-A": {
        "id": "",
        "top": 5792,
        "bottom": 6017,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-187-A": {
        "id": "",
        "top": 5792,
        "bottom": 6017,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-188-A": {
        "id": "",
        "top": 5792,
        "bottom": 6017,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-189-A": {
        "id": "",
        "top": 6021,
        "bottom": 6241,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-190-A": {
        "id": "",
        "top": 6021,
        "bottom": 6241,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-191-A": {
        "id": "",
        "top": 6021,
        "bottom": 6241,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-192-A": {
        "id": "",
        "top": 6028,
        "bottom": 6056,
        "left": 132,
        "right": 280,
        "width": 149,
        "height": 28
      },
      "1-193-A": {
        "id": "",
        "top": 6072,
        "bottom": 6124,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-194-A": {
        "id": "",
        "top": 6124,
        "bottom": 6438,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 314
      },
      "1-195-A": {
        "id": "",
        "top": 6439,
        "bottom": 6664,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-196-A": {
        "id": "",
        "top": 6439,
        "bottom": 6664,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-197-A": {
        "id": "",
        "top": 6439,
        "bottom": 6664,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-198-A": {
        "id": "",
        "top": 6668,
        "bottom": 6888,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-199-A": {
        "id": "",
        "top": 6668,
        "bottom": 6888,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-200-A": {
        "id": "",
        "top": 6668,
        "bottom": 6888,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-201-A": {
        "id": "",
        "top": 6675,
        "bottom": 6703,
        "left": 126,
        "right": 286,
        "width": 160,
        "height": 28
      },
      "1-202-A": {
        "id": "",
        "top": 6719,
        "bottom": 6771,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-203-A": {
        "id": "",
        "top": 6771,
        "bottom": 7062,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 290
      },
      "1-204-A": {
        "id": "",
        "top": 7063,
        "bottom": 7288,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-205-A": {
        "id": "",
        "top": 7063,
        "bottom": 7288,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-206-A": {
        "id": "",
        "top": 7063,
        "bottom": 7288,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-207-A": {
        "id": "",
        "top": 7292,
        "bottom": 7512,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-208-A": {
        "id": "",
        "top": 7292,
        "bottom": 7512,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-209-A": {
        "id": "",
        "top": 7292,
        "bottom": 7512,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-210-A": {
        "id": "",
        "top": 7296,
        "bottom": 7516,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-211-A": {
        "id": "",
        "top": 7296,
        "bottom": 7516,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-212-A": {
        "id": "",
        "top": 7296,
        "bottom": 7516,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-213-A": {
        "id": "",
        "top": 7303,
        "bottom": 7331,
        "left": 119,
        "right": 293,
        "width": 173,
        "height": 28
      },
      "1-214-A": {
        "id": "",
        "top": 7347,
        "bottom": 7399,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-215-A": {
        "id": "",
        "top": 7399,
        "bottom": 7691,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 292
      },
      "1-216-A": {
        "id": "",
        "top": 7692,
        "bottom": 7917,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-217-A": {
        "id": "",
        "top": 7692,
        "bottom": 7917,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-218-A": {
        "id": "",
        "top": 7692,
        "bottom": 7917,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-219-A": {
        "id": "",
        "top": 7921,
        "bottom": 8141,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-220-A": {
        "id": "",
        "top": 7921,
        "bottom": 8141,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-221-A": {
        "id": "",
        "top": 7921,
        "bottom": 8141,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-222-A": {
        "id": "",
        "top": 7925,
        "bottom": 8145,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-223-A": {
        "id": "",
        "top": 7925,
        "bottom": 8145,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-224-A": {
        "id": "",
        "top": 7925,
        "bottom": 8145,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-225-A": {
        "id": "",
        "top": 7932,
        "bottom": 7960,
        "left": 72,
        "right": 340,
        "width": 267,
        "height": 28
      },
      "1-226-A": {
        "id": "",
        "top": 7976,
        "bottom": 8028,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 52
      },
      "1-227-A": {
        "id": "",
        "top": 8028,
        "bottom": 8344,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 316
      },
      "1-228-A": {
        "id": "",
        "top": 8345,
        "bottom": 8570,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 225
      },
      "1-229-A": {
        "id": "",
        "top": 8345,
        "bottom": 8570,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 225
      },
      "1-230-A": {
        "id": "",
        "top": 8345,
        "bottom": 8570,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 225
      },
      "1-231-A": {
        "id": "",
        "top": 8574,
        "bottom": 8794,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-232-A": {
        "id": "",
        "top": 8574,
        "bottom": 8794,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-233-A": {
        "id": "",
        "top": 8574,
        "bottom": 8794,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-234-A": {
        "id": "",
        "top": 8578,
        "bottom": 8798,
        "left": 12,
        "right": 136,
        "width": 124,
        "height": 220
      },
      "1-235-A": {
        "id": "",
        "top": 8578,
        "bottom": 8798,
        "left": 144,
        "right": 268,
        "width": 124,
        "height": 220
      },
      "1-236-A": {
        "id": "",
        "top": 8578,
        "bottom": 8798,
        "left": 276,
        "right": 400,
        "width": 124,
        "height": 220
      },
      "1-237-A": {
        "id": "",
        "top": 8585,
        "bottom": 8613,
        "left": 65,
        "right": 347,
        "width": 281,
        "height": 28
      },
      "1-238-A": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-239-A": {
        "id": "",
        "top": 8669,
        "bottom": 8687,
        "left": 26,
        "right": 69,
        "width": 43,
        "height": 18
      },
      "1-240-A": {
        "id": "",
        "top": 8669,
        "bottom": 8687,
        "left": 76,
        "right": 198,
        "width": 123,
        "height": 18
      },
      "1-241-A": {
        "id": "",
        "top": 8697,
        "bottom": 8715,
        "left": 26,
        "right": 256,
        "width": 230,
        "height": 18
      },
      "1-242-A": {
        "id": "",
        "top": 8697,
        "bottom": 8715,
        "left": 263,
        "right": 366,
        "width": 102,
        "height": 18
      },
      "1-243-A": {
        "id": "",
        "top": 8725,
        "bottom": 8743,
        "left": 26,
        "right": 96,
        "width": 70,
        "height": 18
      },
      "1-244-A": {
        "id": "",
        "top": 8725,
        "bottom": 8743,
        "left": 103,
        "right": 198,
        "width": 95,
        "height": 18
      },
      "1-245-A": {
        "id": "",
        "top": 8725,
        "bottom": 8743,
        "left": 205,
        "right": 358,
        "width": 153,
        "height": 18
      },
      "1-246-A": {
        "id": "",
        "top": 8753,
        "bottom": 8771,
        "left": 26,
        "right": 192,
        "width": 166,
        "height": 18
      },
      "1-247-A": {
        "id": "",
        "top": 8753,
        "bottom": 8771,
        "left": 199,
        "right": 375,
        "width": 177,
        "height": 18
      },
      "1-248-A": {
        "id": "Instagram",
        "top": 8801,
        "bottom": 8829,
        "left": 173,
        "right": 222,
        "width": 49,
        "height": 28
      },
      "1-249-LABEL": {
        "id": "",
        "top": 109,
        "bottom": 165,
        "left": -378,
        "right": -58,
        "width": 319,
        "height": 56
      },
      "1-250-IMG": {
        "id": "logo",
        "top": 12,
        "bottom": 44,
        "left": 60,
        "right": 138,
        "width": 78,
        "height": 32
      },
      "1-251-IMG": {
        "id": "sidebarLogo",
        "top": 32,
        "bottom": 77,
        "left": -378,
        "right": -268,
        "width": 110,
        "height": 45
      },
      "1-252-IMG": {
        "id": "",
        "top": 908,
        "bottom": 1013,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-253-IMG": {
        "id": "",
        "top": 1029,
        "bottom": 1134,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 105
      },
      "1-254-IMG": {
        "id": "",
        "top": 1150,
        "bottom": 1254,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-255-IMG": {
        "id": "",
        "top": 1270,
        "bottom": 1375,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-256-IMG": {
        "id": "",
        "top": 1391,
        "bottom": 1495,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-257-IMG": {
        "id": "",
        "top": 1511,
        "bottom": 1615,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-258-IMG": {
        "id": "",
        "top": 1631,
        "bottom": 1735,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-259-IMG": {
        "id": "",
        "top": 1751,
        "bottom": 1856,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-260-IMG": {
        "id": "",
        "top": 1872,
        "bottom": 1976,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-261-IMG": {
        "id": "",
        "top": 1992,
        "bottom": 2097,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-262-IMG": {
        "id": "",
        "top": 2113,
        "bottom": 2217,
        "left": 273,
        "right": 378,
        "width": 104,
        "height": 104
      },
      "1-263-IMG": {
        "id": "",
        "top": 2293,
        "bottom": 2525,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-264-IMG": {
        "id": "",
        "top": 2917,
        "bottom": 3148,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-265-IMG": {
        "id": "",
        "top": 3544,
        "bottom": 3776,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-266-IMG": {
        "id": "",
        "top": 4173,
        "bottom": 4405,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-267-IMG": {
        "id": "",
        "top": 4825,
        "bottom": 5056,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-268-IMG": {
        "id": "",
        "top": 5476,
        "bottom": 5708,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-269-IMG": {
        "id": "",
        "top": 6124,
        "bottom": 6355,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-270-IMG": {
        "id": "",
        "top": 6771,
        "bottom": 7003,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-271-IMG": {
        "id": "",
        "top": 7399,
        "bottom": 7630,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-272-IMG": {
        "id": "",
        "top": 8028,
        "bottom": 8259,
        "left": 0,
        "right": 412,
        "width": 412,
        "height": 232
      },
      "1-273-IMG": {
        "id": "",
        "top": 8801,
        "bottom": 8825,
        "left": 173,
        "right": 197,
        "width": 24,
        "height": 24
      },
      "1-274-DIV": {
        "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-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-375-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-376-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-377-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-378-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-379-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-380-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-381-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-382-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-383-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-384-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-385-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-386-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-387-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-388-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-389-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-390-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-391-LINK": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-392-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-393-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-394-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-395-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-396-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-397-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-398-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-399-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-400-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-401-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      },
      "1-402-META": {
        "id": "",
        "top": 0,
        "bottom": 0,
        "left": 0,
        "right": 0,
        "width": 0,
        "height": 0
      }
    }
  },
  "timing": {
    "entries": [
      {
        "startTime": 1561.6,
        "name": "lh:config",
        "duration": 558.34,
        "entryType": "measure"
      },
      {
        "startTime": 1564.36,
        "name": "lh:config:resolveArtifactsToDefns",
        "duration": 49.17,
        "entryType": "measure"
      },
      {
        "startTime": 2120.2,
        "name": "lh:runner:gather",
        "duration": 10760.94,
        "entryType": "measure"
      },
      {
        "startTime": 2282.86,
        "name": "lh:driver:connect",
        "duration": 10.65,
        "entryType": "measure"
      },
      {
        "startTime": 2293.95,
        "name": "lh:driver:navigate",
        "duration": 8.64,
        "entryType": "measure"
      },
      {
        "startTime": 2303.23,
        "name": "lh:gather:getBenchmarkIndex",
        "duration": 1010.75,
        "entryType": "measure"
      },
      {
        "startTime": 3314.27,
        "name": "lh:gather:getVersion",
        "duration": 1.11,
        "entryType": "measure"
      },
      {
        "startTime": 3315.52,
        "name": "lh:gather:getDevicePixelRatio",
        "duration": 1.46,
        "entryType": "measure"
      },
      {
        "startTime": 3317.44,
        "name": "lh:prepare:navigationMode",
        "duration": 44.04,
        "entryType": "measure"
      },
      {
        "startTime": 3318.71,
        "name": "lh:gather:getVersion",
        "duration": 0.56,
        "entryType": "measure"
      },
      {
        "startTime": 3345.91,
        "name": "lh:storage:clearDataForOrigin",
        "duration": 6.46,
        "entryType": "measure"
      },
      {
        "startTime": 3352.6,
        "name": "lh:storage:clearBrowserCaches",
        "duration": 5.87,
        "entryType": "measure"
      },
      {
        "startTime": 3359.75,
        "name": "lh:gather:prepareThrottlingAndNetwork",
        "duration": 1.61,
        "entryType": "measure"
      },
      {
        "startTime": 3391.44,
        "name": "lh:driver:navigate",
        "duration": 4649.71,
        "entryType": "measure"
      },
      {
        "startTime": 8720.23,
        "name": "lh:computed:NetworkRecords",
        "duration": 7.78,
        "entryType": "measure"
      },
      {
        "startTime": 8728.66,
        "name": "lh:gather:getArtifact:DevtoolsLog",
        "duration": 0.04,
        "entryType": "measure"
      },
      {
        "startTime": 8728.72,
        "name": "lh:gather:getArtifact:Trace",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 8728.75,
        "name": "lh:gather:getArtifact:Accessibility",
        "duration": 759.91,
        "entryType": "measure"
      },
      {
        "startTime": 9488.73,
        "name": "lh:gather:getArtifact:AnchorElements",
        "duration": 184.42,
        "entryType": "measure"
      },
      {
        "startTime": 9673.2,
        "name": "lh:gather:getArtifact:ConsoleMessages",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 9673.35,
        "name": "lh:gather:getArtifact:CSSUsage",
        "duration": 51.17,
        "entryType": "measure"
      },
      {
        "startTime": 9724.57,
        "name": "lh:gather:getArtifact:Doctype",
        "duration": 1.66,
        "entryType": "measure"
      },
      {
        "startTime": 9726.26,
        "name": "lh:gather:getArtifact:Inputs",
        "duration": 8.57,
        "entryType": "measure"
      },
      {
        "startTime": 9734.88,
        "name": "lh:gather:getArtifact:ImageElements",
        "duration": 324.61,
        "entryType": "measure"
      },
      {
        "startTime": 10059.84,
        "name": "lh:gather:getArtifact:InspectorIssues",
        "duration": 0.47,
        "entryType": "measure"
      },
      {
        "startTime": 10060.35,
        "name": "lh:gather:getArtifact:JsUsage",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 10060.48,
        "name": "lh:gather:getArtifact:LinkElements",
        "duration": 19.54,
        "entryType": "measure"
      },
      {
        "startTime": 10079.5,
        "name": "lh:computed:MainResource",
        "duration": 0.31,
        "entryType": "measure"
      },
      {
        "startTime": 10080.06,
        "name": "lh:gather:getArtifact:MainDocumentContent",
        "duration": 6.01,
        "entryType": "measure"
      },
      {
        "startTime": 10086.12,
        "name": "lh:gather:getArtifact:MetaElements",
        "duration": 6.37,
        "entryType": "measure"
      },
      {
        "startTime": 10092.59,
        "name": "lh:gather:getArtifact:NetworkUserAgent",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 10092.83,
        "name": "lh:gather:getArtifact:RobotsTxt",
        "duration": 9.42,
        "entryType": "measure"
      },
      {
        "startTime": 10102.3,
        "name": "lh:gather:getArtifact:Scripts",
        "duration": 0.33,
        "entryType": "measure"
      },
      {
        "startTime": 10102.7,
        "name": "lh:gather:getArtifact:SourceMaps",
        "duration": 177.12,
        "entryType": "measure"
      },
      {
        "startTime": 10279.9,
        "name": "lh:gather:getArtifact:Stacks",
        "duration": 23.98,
        "entryType": "measure"
      },
      {
        "startTime": 10280.18,
        "name": "lh:gather:collectStacks",
        "duration": 23.65,
        "entryType": "measure"
      },
      {
        "startTime": 10303.96,
        "name": "lh:gather:getArtifact:Stylesheets",
        "duration": 30.09,
        "entryType": "measure"
      },
      {
        "startTime": 10334.35,
        "name": "lh:gather:getArtifact:TraceElements",
        "duration": 814.65,
        "entryType": "measure"
      },
      {
        "startTime": 10334.73,
        "name": "lh:computed:TraceEngineResult",
        "duration": 689.09,
        "entryType": "measure"
      },
      {
        "startTime": 10334.87,
        "name": "lh:computed:ProcessedTrace",
        "duration": 64.45,
        "entryType": "measure"
      },
      {
        "startTime": 10403.07,
        "name": "lh:computed:TraceEngineResult:total",
        "duration": 607.34,
        "entryType": "measure"
      },
      {
        "startTime": 10403.12,
        "name": "lh:computed:TraceEngineResult:parse",
        "duration": 299.68,
        "entryType": "measure"
      },
      {
        "startTime": 10404.2,
        "name": "lh:computed:TraceEngineResult:parse:handleEvent",
        "duration": 174.02,
        "entryType": "measure"
      },
      {
        "startTime": 10578.3,
        "name": "lh:computed:TraceEngineResult:parse:Meta:finalize",
        "duration": 1.65,
        "entryType": "measure"
      },
      {
        "startTime": 10580.35,
        "name": "lh:computed:TraceEngineResult:parse:AnimationFrames:finalize",
        "duration": 1.37,
        "entryType": "measure"
      },
      {
        "startTime": 10581.87,
        "name": "lh:computed:TraceEngineResult:parse:Animations:finalize",
        "duration": 1.67,
        "entryType": "measure"
      },
      {
        "startTime": 10583.59,
        "name": "lh:computed:TraceEngineResult:parse:Samples:finalize",
        "duration": 1.37,
        "entryType": "measure"
      },
      {
        "startTime": 10585.02,
        "name": "lh:computed:TraceEngineResult:parse:AuctionWorklets:finalize",
        "duration": 1.45,
        "entryType": "measure"
      },
      {
        "startTime": 10586.51,
        "name": "lh:computed:TraceEngineResult:parse:NetworkRequests:finalize",
        "duration": 12.33,
        "entryType": "measure"
      },
      {
        "startTime": 10598.95,
        "name": "lh:computed:TraceEngineResult:parse:Renderer:finalize",
        "duration": 38.99,
        "entryType": "measure"
      },
      {
        "startTime": 10638.11,
        "name": "lh:computed:TraceEngineResult:parse:Flows:finalize",
        "duration": 10.98,
        "entryType": "measure"
      },
      {
        "startTime": 10649.38,
        "name": "lh:computed:TraceEngineResult:parse:AsyncJSCalls:finalize",
        "duration": 2.59,
        "entryType": "measure"
      },
      {
        "startTime": 10652.19,
        "name": "lh:computed:TraceEngineResult:parse:DOMStats:finalize",
        "duration": 1.27,
        "entryType": "measure"
      },
      {
        "startTime": 10653.52,
        "name": "lh:computed:TraceEngineResult:parse:UserTimings:finalize",
        "duration": 1.22,
        "entryType": "measure"
      },
      {
        "startTime": 10654.77,
        "name": "lh:computed:TraceEngineResult:parse:ExtensionTraceData:finalize",
        "duration": 1.53,
        "entryType": "measure"
      },
      {
        "startTime": 10656.33,
        "name": "lh:computed:TraceEngineResult:parse:LayerTree:finalize",
        "duration": 1.57,
        "entryType": "measure"
      },
      {
        "startTime": 10657.92,
        "name": "lh:computed:TraceEngineResult:parse:Frames:finalize",
        "duration": 8.08,
        "entryType": "measure"
      },
      {
        "startTime": 10666.04,
        "name": "lh:computed:TraceEngineResult:parse:GPU:finalize",
        "duration": 1.38,
        "entryType": "measure"
      },
      {
        "startTime": 10667.47,
        "name": "lh:computed:TraceEngineResult:parse:ImagePainting:finalize",
        "duration": 1.6,
        "entryType": "measure"
      },
      {
        "startTime": 10669.12,
        "name": "lh:computed:TraceEngineResult:parse:Initiators:finalize",
        "duration": 2.32,
        "entryType": "measure"
      },
      {
        "startTime": 10671.48,
        "name": "lh:computed:TraceEngineResult:parse:Invalidations:finalize",
        "duration": 1.19,
        "entryType": "measure"
      },
      {
        "startTime": 10672.7,
        "name": "lh:computed:TraceEngineResult:parse:PageLoadMetrics:finalize",
        "duration": 2.29,
        "entryType": "measure"
      },
      {
        "startTime": 10675.05,
        "name": "lh:computed:TraceEngineResult:parse:LargestImagePaint:finalize",
        "duration": 4.64,
        "entryType": "measure"
      },
      {
        "startTime": 10679.74,
        "name": "lh:computed:TraceEngineResult:parse:LargestTextPaint:finalize",
        "duration": 1.26,
        "entryType": "measure"
      },
      {
        "startTime": 10681.03,
        "name": "lh:computed:TraceEngineResult:parse:Screenshots:finalize",
        "duration": 7.98,
        "entryType": "measure"
      },
      {
        "startTime": 10689.05,
        "name": "lh:computed:TraceEngineResult:parse:LayoutShifts:finalize",
        "duration": 2.04,
        "entryType": "measure"
      },
      {
        "startTime": 10691.14,
        "name": "lh:computed:TraceEngineResult:parse:Memory:finalize",
        "duration": 1.2,
        "entryType": "measure"
      },
      {
        "startTime": 10692.37,
        "name": "lh:computed:TraceEngineResult:parse:PageFrames:finalize",
        "duration": 1.15,
        "entryType": "measure"
      },
      {
        "startTime": 10693.55,
        "name": "lh:computed:TraceEngineResult:parse:Scripts:finalize",
        "duration": 3.1,
        "entryType": "measure"
      },
      {
        "startTime": 10696.7,
        "name": "lh:computed:TraceEngineResult:parse:SelectorStats:finalize",
        "duration": 1.18,
        "entryType": "measure"
      },
      {
        "startTime": 10697.91,
        "name": "lh:computed:TraceEngineResult:parse:UserInteractions:finalize",
        "duration": 1.55,
        "entryType": "measure"
      },
      {
        "startTime": 10699.49,
        "name": "lh:computed:TraceEngineResult:parse:Workers:finalize",
        "duration": 1.21,
        "entryType": "measure"
      },
      {
        "startTime": 10700.72,
        "name": "lh:computed:TraceEngineResult:parse:Warnings:finalize",
        "duration": 1.44,
        "entryType": "measure"
      },
      {
        "startTime": 10702.19,
        "name": "lh:computed:TraceEngineResult:parse:handler.data()",
        "duration": 0.57,
        "entryType": "measure"
      },
      {
        "startTime": 10702.81,
        "name": "lh:computed:TraceEngineResult:insights",
        "duration": 307.23,
        "entryType": "measure"
      },
      {
        "startTime": 10703.23,
        "name": "lh:computed:TraceEngineResult:insights:CLSCulprits",
        "duration": 0.57,
        "entryType": "measure"
      },
      {
        "startTime": 10703.82,
        "name": "lh:computed:TraceEngineResult:insights:Cache",
        "duration": 0.3,
        "entryType": "measure"
      },
      {
        "startTime": 10704.14,
        "name": "lh:computed:TraceEngineResult:insights:DOMSize",
        "duration": 0.38,
        "entryType": "measure"
      },
      {
        "startTime": 10704.54,
        "name": "lh:computed:TraceEngineResult:insights:DocumentLatency",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 10704.72,
        "name": "lh:computed:TraceEngineResult:insights:DuplicatedJavaScript",
        "duration": 0.64,
        "entryType": "measure"
      },
      {
        "startTime": 10705.38,
        "name": "lh:computed:TraceEngineResult:insights:FontDisplay",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 10705.64,
        "name": "lh:computed:TraceEngineResult:insights:ForcedReflow",
        "duration": 0.28,
        "entryType": "measure"
      },
      {
        "startTime": 10705.94,
        "name": "lh:computed:TraceEngineResult:insights:INPBreakdown",
        "duration": 0.18,
        "entryType": "measure"
      },
      {
        "startTime": 10706.14,
        "name": "lh:computed:TraceEngineResult:insights:ImageDelivery",
        "duration": 0.29,
        "entryType": "measure"
      },
      {
        "startTime": 10706.44,
        "name": "lh:computed:TraceEngineResult:insights:LCPBreakdown",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 10706.6,
        "name": "lh:computed:TraceEngineResult:insights:LCPDiscovery",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 10706.76,
        "name": "lh:computed:TraceEngineResult:insights:LegacyJavaScript",
        "duration": 0.3,
        "entryType": "measure"
      },
      {
        "startTime": 10707.07,
        "name": "lh:computed:TraceEngineResult:insights:ModernHTTP",
        "duration": 0.32,
        "entryType": "measure"
      },
      {
        "startTime": 10707.41,
        "name": "lh:computed:TraceEngineResult:insights:NetworkDependencyTree",
        "duration": 0.11,
        "entryType": "measure"
      },
      {
        "startTime": 10707.53,
        "name": "lh:computed:TraceEngineResult:insights:RenderBlocking",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 10707.69,
        "name": "lh:computed:TraceEngineResult:insights:SlowCSSSelector",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 10707.91,
        "name": "lh:computed:TraceEngineResult:insights:ThirdParties",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 10708.1,
        "name": "lh:computed:TraceEngineResult:insights:Viewport",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 10708.45,
        "name": "lh:computed:TraceEngineResult:insights:createLanternContext",
        "duration": 85.84,
        "entryType": "measure"
      },
      {
        "startTime": 10794.37,
        "name": "lh:computed:TraceEngineResult:insights:CLSCulprits",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 10794.6,
        "name": "lh:computed:TraceEngineResult:insights:Cache",
        "duration": 11.03,
        "entryType": "measure"
      },
      {
        "startTime": 10805.67,
        "name": "lh:computed:TraceEngineResult:insights:DOMSize",
        "duration": 0.31,
        "entryType": "measure"
      },
      {
        "startTime": 10806,
        "name": "lh:computed:TraceEngineResult:insights:DocumentLatency",
        "duration": 0.65,
        "entryType": "measure"
      },
      {
        "startTime": 10806.68,
        "name": "lh:computed:TraceEngineResult:insights:DuplicatedJavaScript",
        "duration": 37.27,
        "entryType": "measure"
      },
      {
        "startTime": 10843.98,
        "name": "lh:computed:TraceEngineResult:insights:FontDisplay",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 10844.33,
        "name": "lh:computed:TraceEngineResult:insights:ForcedReflow",
        "duration": 0.06,
        "entryType": "measure"
      },
      {
        "startTime": 10844.41,
        "name": "lh:computed:TraceEngineResult:insights:INPBreakdown",
        "duration": 0.03,
        "entryType": "measure"
      },
      {
        "startTime": 10844.45,
        "name": "lh:computed:TraceEngineResult:insights:ImageDelivery",
        "duration": 7.43,
        "entryType": "measure"
      },
      {
        "startTime": 10851.92,
        "name": "lh:computed:TraceEngineResult:insights:LCPBreakdown",
        "duration": 0.54,
        "entryType": "measure"
      },
      {
        "startTime": 10852.48,
        "name": "lh:computed:TraceEngineResult:insights:LCPDiscovery",
        "duration": 1.98,
        "entryType": "measure"
      },
      {
        "startTime": 10854.48,
        "name": "lh:computed:TraceEngineResult:insights:LegacyJavaScript",
        "duration": 133.18,
        "entryType": "measure"
      },
      {
        "startTime": 10987.7,
        "name": "lh:computed:TraceEngineResult:insights:ModernHTTP",
        "duration": 10.85,
        "entryType": "measure"
      },
      {
        "startTime": 10998.59,
        "name": "lh:computed:TraceEngineResult:insights:NetworkDependencyTree",
        "duration": 7.61,
        "entryType": "measure"
      },
      {
        "startTime": 11006.24,
        "name": "lh:computed:TraceEngineResult:insights:RenderBlocking",
        "duration": 2.35,
        "entryType": "measure"
      },
      {
        "startTime": 11008.61,
        "name": "lh:computed:TraceEngineResult:insights:SlowCSSSelector",
        "duration": 0.03,
        "entryType": "measure"
      },
      {
        "startTime": 11008.66,
        "name": "lh:computed:TraceEngineResult:insights:ThirdParties",
        "duration": 0.1,
        "entryType": "measure"
      },
      {
        "startTime": 11008.77,
        "name": "lh:computed:TraceEngineResult:insights:Viewport",
        "duration": 0.05,
        "entryType": "measure"
      },
      {
        "startTime": 11028.67,
        "name": "lh:computed:CumulativeLayoutShift",
        "duration": 10.33,
        "entryType": "measure"
      },
      {
        "startTime": 11149.04,
        "name": "lh:gather:getArtifact:ViewportDimensions",
        "duration": 1.52,
        "entryType": "measure"
      },
      {
        "startTime": 11150.59,
        "name": "lh:gather:getArtifact:FullPageScreenshot",
        "duration": 1408.78,
        "entryType": "measure"
      },
      {
        "startTime": 12544.51,
        "name": "lh:gather:getVersion",
        "duration": 1.53,
        "entryType": "measure"
      },
      {
        "startTime": 12559.46,
        "name": "lh:gather:getArtifact:BFCacheFailures",
        "duration": 258.75,
        "entryType": "measure"
      },
      {
        "startTime": 12881.71,
        "name": "lh:runner:audit",
        "duration": 1109.46,
        "entryType": "measure"
      },
      {
        "startTime": 12881.88,
        "name": "lh:runner:auditing",
        "duration": 1108.65,
        "entryType": "measure"
      },
      {
        "startTime": 12883.51,
        "name": "lh:audit:is-on-https",
        "duration": 1.74,
        "entryType": "measure"
      },
      {
        "startTime": 12885.8,
        "name": "lh:audit:redirects-http",
        "duration": 0.87,
        "entryType": "measure"
      },
      {
        "startTime": 12886.96,
        "name": "lh:audit:first-contentful-paint",
        "duration": 33.28,
        "entryType": "measure"
      },
      {
        "startTime": 12887.47,
        "name": "lh:computed:FirstContentfulPaint",
        "duration": 30.15,
        "entryType": "measure"
      },
      {
        "startTime": 12887.68,
        "name": "lh:computed:ProcessedNavigation",
        "duration": 2.74,
        "entryType": "measure"
      },
      {
        "startTime": 12890.65,
        "name": "lh:computed:LanternFirstContentfulPaint",
        "duration": 26.93,
        "entryType": "measure"
      },
      {
        "startTime": 12890.85,
        "name": "lh:computed:PageDependencyGraph",
        "duration": 15.1,
        "entryType": "measure"
      },
      {
        "startTime": 12906.05,
        "name": "lh:computed:LoadSimulator",
        "duration": 1.76,
        "entryType": "measure"
      },
      {
        "startTime": 12906.19,
        "name": "lh:computed:NetworkAnalysis",
        "duration": 1.49,
        "entryType": "measure"
      },
      {
        "startTime": 12920.57,
        "name": "lh:audit:largest-contentful-paint",
        "duration": 25.38,
        "entryType": "measure"
      },
      {
        "startTime": 12921.28,
        "name": "lh:computed:LargestContentfulPaint",
        "duration": 23.48,
        "entryType": "measure"
      },
      {
        "startTime": 12921.42,
        "name": "lh:computed:LanternLargestContentfulPaint",
        "duration": 23.29,
        "entryType": "measure"
      },
      {
        "startTime": 12946.3,
        "name": "lh:audit:speed-index",
        "duration": 192.48,
        "entryType": "measure"
      },
      {
        "startTime": 12947,
        "name": "lh:computed:SpeedIndex",
        "duration": 190.83,
        "entryType": "measure"
      },
      {
        "startTime": 12947.13,
        "name": "lh:computed:LanternSpeedIndex",
        "duration": 190.65,
        "entryType": "measure"
      },
      {
        "startTime": 12947.22,
        "name": "lh:computed:Speedline",
        "duration": 177.33,
        "entryType": "measure"
      },
      {
        "startTime": 13138.84,
        "name": "lh:audit:screenshot-thumbnails",
        "duration": 0.55,
        "entryType": "measure"
      },
      {
        "startTime": 13139.41,
        "name": "lh:audit:final-screenshot",
        "duration": 2.64,
        "entryType": "measure"
      },
      {
        "startTime": 13139.61,
        "name": "lh:computed:Screenshots",
        "duration": 2.35,
        "entryType": "measure"
      },
      {
        "startTime": 13142.38,
        "name": "lh:audit:total-blocking-time",
        "duration": 23.95,
        "entryType": "measure"
      },
      {
        "startTime": 13142.83,
        "name": "lh:computed:TotalBlockingTime",
        "duration": 22.6,
        "entryType": "measure"
      },
      {
        "startTime": 13142.92,
        "name": "lh:computed:LanternTotalBlockingTime",
        "duration": 22.48,
        "entryType": "measure"
      },
      {
        "startTime": 13143.04,
        "name": "lh:computed:LanternInteractive",
        "duration": 11.2,
        "entryType": "measure"
      },
      {
        "startTime": 13166.53,
        "name": "lh:audit:max-potential-fid",
        "duration": 14.77,
        "entryType": "measure"
      },
      {
        "startTime": 13166.89,
        "name": "lh:computed:MaxPotentialFID",
        "duration": 11.92,
        "entryType": "measure"
      },
      {
        "startTime": 13166.98,
        "name": "lh:computed:LanternMaxPotentialFID",
        "duration": 11.79,
        "entryType": "measure"
      },
      {
        "startTime": 13181.59,
        "name": "lh:audit:cumulative-layout-shift",
        "duration": 0.94,
        "entryType": "measure"
      },
      {
        "startTime": 13182.85,
        "name": "lh:audit:errors-in-console",
        "duration": 34.25,
        "entryType": "measure"
      },
      {
        "startTime": 13183.38,
        "name": "lh:computed:JSBundles",
        "duration": 31.31,
        "entryType": "measure"
      },
      {
        "startTime": 13217.42,
        "name": "lh:audit:server-response-time",
        "duration": 1.75,
        "entryType": "measure"
      },
      {
        "startTime": 13217.87,
        "name": "lh:computed:NavigationInsights",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 13219.36,
        "name": "lh:audit:interactive",
        "duration": 1.57,
        "entryType": "measure"
      },
      {
        "startTime": 13219.88,
        "name": "lh:computed:Interactive",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 13221.3,
        "name": "lh:audit:user-timings",
        "duration": 3.79,
        "entryType": "measure"
      },
      {
        "startTime": 13221.68,
        "name": "lh:computed:UserTimings",
        "duration": 2.65,
        "entryType": "measure"
      },
      {
        "startTime": 13225.39,
        "name": "lh:audit:redirects",
        "duration": 4.42,
        "entryType": "measure"
      },
      {
        "startTime": 13230.06,
        "name": "lh:audit:image-aspect-ratio",
        "duration": 1.74,
        "entryType": "measure"
      },
      {
        "startTime": 13232.03,
        "name": "lh:audit:image-size-responsive",
        "duration": 2.73,
        "entryType": "measure"
      },
      {
        "startTime": 13232.35,
        "name": "lh:computed:ImageRecords",
        "duration": 0.84,
        "entryType": "measure"
      },
      {
        "startTime": 13234.93,
        "name": "lh:audit:deprecations",
        "duration": 0.72,
        "entryType": "measure"
      },
      {
        "startTime": 13235.81,
        "name": "lh:audit:third-party-cookies",
        "duration": 0.8,
        "entryType": "measure"
      },
      {
        "startTime": 13236.86,
        "name": "lh:audit:mainthread-work-breakdown",
        "duration": 47.32,
        "entryType": "measure"
      },
      {
        "startTime": 13237.43,
        "name": "lh:computed:MainThreadTasks",
        "duration": 43.21,
        "entryType": "measure"
      },
      {
        "startTime": 13284.5,
        "name": "lh:audit:bootup-time",
        "duration": 47.21,
        "entryType": "measure"
      },
      {
        "startTime": 13289.39,
        "name": "lh:computed:TBTImpactTasks",
        "duration": 34.89,
        "entryType": "measure"
      },
      {
        "startTime": 13331.78,
        "name": "lh:audit:diagnostics",
        "duration": 1.5,
        "entryType": "measure"
      },
      {
        "startTime": 13333.32,
        "name": "lh:audit:network-requests",
        "duration": 66.78,
        "entryType": "measure"
      },
      {
        "startTime": 13333.59,
        "name": "lh:computed:EntityClassification",
        "duration": 12.19,
        "entryType": "measure"
      },
      {
        "startTime": 13400.54,
        "name": "lh:audit:network-rtt",
        "duration": 1.61,
        "entryType": "measure"
      },
      {
        "startTime": 13402.47,
        "name": "lh:audit:network-server-latency",
        "duration": 1.25,
        "entryType": "measure"
      },
      {
        "startTime": 13403.76,
        "name": "lh:audit:main-thread-tasks",
        "duration": 0.72,
        "entryType": "measure"
      },
      {
        "startTime": 13404.51,
        "name": "lh:audit:metrics",
        "duration": 5.6,
        "entryType": "measure"
      },
      {
        "startTime": 13404.71,
        "name": "lh:computed:TimingSummary",
        "duration": 5.13,
        "entryType": "measure"
      },
      {
        "startTime": 13405.38,
        "name": "lh:computed:FirstContentfulPaintAllFrames",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 13405.61,
        "name": "lh:computed:LargestContentfulPaintAllFrames",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 13405.99,
        "name": "lh:computed:LCPBreakdown",
        "duration": 3.22,
        "entryType": "measure"
      },
      {
        "startTime": 13406.17,
        "name": "lh:computed:TimeToFirstByte",
        "duration": 0.42,
        "entryType": "measure"
      },
      {
        "startTime": 13406.61,
        "name": "lh:computed:LCPImageRecord",
        "duration": 2.49,
        "entryType": "measure"
      },
      {
        "startTime": 13410.14,
        "name": "lh:audit:resource-summary",
        "duration": 1.63,
        "entryType": "measure"
      },
      {
        "startTime": 13410.36,
        "name": "lh:computed:ResourceSummary",
        "duration": 0.83,
        "entryType": "measure"
      },
      {
        "startTime": 13412.04,
        "name": "lh:audit:layout-shifts",
        "duration": 1.52,
        "entryType": "measure"
      },
      {
        "startTime": 13413.85,
        "name": "lh:audit:long-tasks",
        "duration": 12.92,
        "entryType": "measure"
      },
      {
        "startTime": 13427.21,
        "name": "lh:audit:non-composited-animations",
        "duration": 1.72,
        "entryType": "measure"
      },
      {
        "startTime": 13429.34,
        "name": "lh:audit:unsized-images",
        "duration": 2.75,
        "entryType": "measure"
      },
      {
        "startTime": 13432.39,
        "name": "lh:audit:valid-source-maps",
        "duration": 3.96,
        "entryType": "measure"
      },
      {
        "startTime": 13436.55,
        "name": "lh:audit:csp-xss",
        "duration": 3.71,
        "entryType": "measure"
      },
      {
        "startTime": 13440.49,
        "name": "lh:audit:has-hsts",
        "duration": 1.48,
        "entryType": "measure"
      },
      {
        "startTime": 13442.13,
        "name": "lh:audit:origin-isolation",
        "duration": 1,
        "entryType": "measure"
      },
      {
        "startTime": 13443.31,
        "name": "lh:audit:clickjacking-mitigation",
        "duration": 0.97,
        "entryType": "measure"
      },
      {
        "startTime": 13444.43,
        "name": "lh:audit:trusted-types-xss",
        "duration": 0.93,
        "entryType": "measure"
      },
      {
        "startTime": 13445.38,
        "name": "lh:audit:script-treemap-data",
        "duration": 67.54,
        "entryType": "measure"
      },
      {
        "startTime": 13445.78,
        "name": "lh:computed:ModuleDuplication",
        "duration": 0.79,
        "entryType": "measure"
      },
      {
        "startTime": 13446.64,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.63,
        "entryType": "measure"
      },
      {
        "startTime": 13447.37,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.07,
        "entryType": "measure"
      },
      {
        "startTime": 13447.48,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.12,
        "entryType": "measure"
      },
      {
        "startTime": 13447.64,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 2.81,
        "entryType": "measure"
      },
      {
        "startTime": 13450.63,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 13450.93,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.35,
        "entryType": "measure"
      },
      {
        "startTime": 13451.33,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 17.47,
        "entryType": "measure"
      },
      {
        "startTime": 13468.93,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.38,
        "entryType": "measure"
      },
      {
        "startTime": 13469.38,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.07,
        "entryType": "measure"
      },
      {
        "startTime": 13469.53,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.08,
        "entryType": "measure"
      },
      {
        "startTime": 13469.68,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 13470.02,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.08,
        "entryType": "measure"
      },
      {
        "startTime": 13470.21,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.07,
        "entryType": "measure"
      },
      {
        "startTime": 13470.34,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 11.7,
        "entryType": "measure"
      },
      {
        "startTime": 13483.72,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 13484.05,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.54,
        "entryType": "measure"
      },
      {
        "startTime": 13484.68,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 13485,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 4.14,
        "entryType": "measure"
      },
      {
        "startTime": 13489.57,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 13489.95,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 13490.28,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 13490.75,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 13491.16,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 13491.85,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 13492.21,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.25,
        "entryType": "measure"
      },
      {
        "startTime": 13492.68,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 13493.2,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 13493.57,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 13494.03,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.17,
        "entryType": "measure"
      },
      {
        "startTime": 13494.38,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.18,
        "entryType": "measure"
      },
      {
        "startTime": 13494.79,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.35,
        "entryType": "measure"
      },
      {
        "startTime": 13495.33,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.51,
        "entryType": "measure"
      },
      {
        "startTime": 13496.04,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.43,
        "entryType": "measure"
      },
      {
        "startTime": 13496.67,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.35,
        "entryType": "measure"
      },
      {
        "startTime": 13497.19,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.58,
        "entryType": "measure"
      },
      {
        "startTime": 13497.96,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.25,
        "entryType": "measure"
      },
      {
        "startTime": 13498.41,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 13498.82,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.38,
        "entryType": "measure"
      },
      {
        "startTime": 13499.36,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 13499.79,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.43,
        "entryType": "measure"
      },
      {
        "startTime": 13500.49,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 13500.9,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.19,
        "entryType": "measure"
      },
      {
        "startTime": 13501.23,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 13501.58,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.13,
        "entryType": "measure"
      },
      {
        "startTime": 13501.87,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 13502.37,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 13502.85,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.23,
        "entryType": "measure"
      },
      {
        "startTime": 13503.23,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.15,
        "entryType": "measure"
      },
      {
        "startTime": 13503.59,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.43,
        "entryType": "measure"
      },
      {
        "startTime": 13504.23,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.37,
        "entryType": "measure"
      },
      {
        "startTime": 13504.87,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.36,
        "entryType": "measure"
      },
      {
        "startTime": 13505.4,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.14,
        "entryType": "measure"
      },
      {
        "startTime": 13505.72,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 13506.01,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.22,
        "entryType": "measure"
      },
      {
        "startTime": 13506.36,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.21,
        "entryType": "measure"
      },
      {
        "startTime": 13506.87,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.27,
        "entryType": "measure"
      },
      {
        "startTime": 13507.45,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 1.45,
        "entryType": "measure"
      },
      {
        "startTime": 13509.22,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.24,
        "entryType": "measure"
      },
      {
        "startTime": 13510.06,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.32,
        "entryType": "measure"
      },
      {
        "startTime": 13510.62,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.38,
        "entryType": "measure"
      },
      {
        "startTime": 13511.35,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.48,
        "entryType": "measure"
      },
      {
        "startTime": 13512,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.28,
        "entryType": "measure"
      },
      {
        "startTime": 13512.48,
        "name": "lh:computed:UnusedJavascriptSummary",
        "duration": 0.16,
        "entryType": "measure"
      },
      {
        "startTime": 13513.53,
        "name": "lh:audit:accesskeys",
        "duration": 1.16,
        "entryType": "measure"
      },
      {
        "startTime": 13514.93,
        "name": "lh:audit:aria-allowed-attr",
        "duration": 5.7,
        "entryType": "measure"
      },
      {
        "startTime": 13521.05,
        "name": "lh:audit:aria-allowed-role",
        "duration": 4.81,
        "entryType": "measure"
      },
      {
        "startTime": 13526.21,
        "name": "lh:audit:aria-command-name",
        "duration": 1.06,
        "entryType": "measure"
      },
      {
        "startTime": 13527.53,
        "name": "lh:audit:aria-conditional-attr",
        "duration": 4.42,
        "entryType": "measure"
      },
      {
        "startTime": 13532.25,
        "name": "lh:audit:aria-deprecated-role",
        "duration": 4.13,
        "entryType": "measure"
      },
      {
        "startTime": 13536.72,
        "name": "lh:audit:aria-dialog-name",
        "duration": 4.55,
        "entryType": "measure"
      },
      {
        "startTime": 13541.52,
        "name": "lh:audit:aria-hidden-body",
        "duration": 2.68,
        "entryType": "measure"
      },
      {
        "startTime": 13544.39,
        "name": "lh:audit:aria-hidden-focus",
        "duration": 0.96,
        "entryType": "measure"
      },
      {
        "startTime": 13545.57,
        "name": "lh:audit:aria-input-field-name",
        "duration": 1.1,
        "entryType": "measure"
      },
      {
        "startTime": 13546.92,
        "name": "lh:audit:aria-meter-name",
        "duration": 1.29,
        "entryType": "measure"
      },
      {
        "startTime": 13548.72,
        "name": "lh:audit:aria-progressbar-name",
        "duration": 1.16,
        "entryType": "measure"
      },
      {
        "startTime": 13550.19,
        "name": "lh:audit:aria-prohibited-attr",
        "duration": 2.89,
        "entryType": "measure"
      },
      {
        "startTime": 13553.33,
        "name": "lh:audit:aria-required-attr",
        "duration": 2.43,
        "entryType": "measure"
      },
      {
        "startTime": 13555.99,
        "name": "lh:audit:aria-required-children",
        "duration": 1.27,
        "entryType": "measure"
      },
      {
        "startTime": 13557.46,
        "name": "lh:audit:aria-required-parent",
        "duration": 6.89,
        "entryType": "measure"
      },
      {
        "startTime": 13564.77,
        "name": "lh:audit:aria-roles",
        "duration": 2.19,
        "entryType": "measure"
      },
      {
        "startTime": 13567.23,
        "name": "lh:audit:aria-text",
        "duration": 1.16,
        "entryType": "measure"
      },
      {
        "startTime": 13568.59,
        "name": "lh:audit:aria-toggle-field-name",
        "duration": 1,
        "entryType": "measure"
      },
      {
        "startTime": 13569.78,
        "name": "lh:audit:aria-tooltip-name",
        "duration": 1.06,
        "entryType": "measure"
      },
      {
        "startTime": 13571.05,
        "name": "lh:audit:aria-treeitem-name",
        "duration": 1.42,
        "entryType": "measure"
      },
      {
        "startTime": 13572.64,
        "name": "lh:audit:aria-valid-attr-value",
        "duration": 2.36,
        "entryType": "measure"
      },
      {
        "startTime": 13575.16,
        "name": "lh:audit:aria-valid-attr",
        "duration": 3.92,
        "entryType": "measure"
      },
      {
        "startTime": 13579.31,
        "name": "lh:audit:button-name",
        "duration": 14.32,
        "entryType": "measure"
      },
      {
        "startTime": 13593.89,
        "name": "lh:audit:bypass",
        "duration": 3,
        "entryType": "measure"
      },
      {
        "startTime": 13597.1,
        "name": "lh:audit:color-contrast",
        "duration": 2.07,
        "entryType": "measure"
      },
      {
        "startTime": 13599.35,
        "name": "lh:audit:definition-list",
        "duration": 1.25,
        "entryType": "measure"
      },
      {
        "startTime": 13600.86,
        "name": "lh:audit:dlitem",
        "duration": 1.14,
        "entryType": "measure"
      },
      {
        "startTime": 13602.28,
        "name": "lh:audit:document-title",
        "duration": 2.3,
        "entryType": "measure"
      },
      {
        "startTime": 13604.82,
        "name": "lh:audit:duplicate-id-aria",
        "duration": 1.19,
        "entryType": "measure"
      },
      {
        "startTime": 13606.31,
        "name": "lh:audit:empty-heading",
        "duration": 2.43,
        "entryType": "measure"
      },
      {
        "startTime": 13608.97,
        "name": "lh:audit:form-field-multiple-labels",
        "duration": 2.1,
        "entryType": "measure"
      },
      {
        "startTime": 13611.25,
        "name": "lh:audit:frame-title",
        "duration": 1.17,
        "entryType": "measure"
      },
      {
        "startTime": 13612.64,
        "name": "lh:audit:heading-order",
        "duration": 2.79,
        "entryType": "measure"
      },
      {
        "startTime": 13615.61,
        "name": "lh:audit:html-has-lang",
        "duration": 8.46,
        "entryType": "measure"
      },
      {
        "startTime": 13624.33,
        "name": "lh:audit:html-lang-valid",
        "duration": 2.42,
        "entryType": "measure"
      },
      {
        "startTime": 13626.92,
        "name": "lh:audit:html-xml-lang-mismatch",
        "duration": 1.22,
        "entryType": "measure"
      },
      {
        "startTime": 13628.38,
        "name": "lh:audit:identical-links-same-purpose",
        "duration": 2.2,
        "entryType": "measure"
      },
      {
        "startTime": 13630.82,
        "name": "lh:audit:image-alt",
        "duration": 2.19,
        "entryType": "measure"
      },
      {
        "startTime": 13633.26,
        "name": "lh:audit:image-redundant-alt",
        "duration": 2.18,
        "entryType": "measure"
      },
      {
        "startTime": 13635.6,
        "name": "lh:audit:input-button-name",
        "duration": 1.17,
        "entryType": "measure"
      },
      {
        "startTime": 13637.03,
        "name": "lh:audit:input-image-alt",
        "duration": 1.1,
        "entryType": "measure"
      },
      {
        "startTime": 13638.29,
        "name": "lh:audit:label-content-name-mismatch",
        "duration": 1.98,
        "entryType": "measure"
      },
      {
        "startTime": 13640.42,
        "name": "lh:audit:label",
        "duration": 10.23,
        "entryType": "measure"
      },
      {
        "startTime": 13650.9,
        "name": "lh:audit:landmark-one-main",
        "duration": 2.59,
        "entryType": "measure"
      },
      {
        "startTime": 13653.75,
        "name": "lh:audit:link-name",
        "duration": 2.97,
        "entryType": "measure"
      },
      {
        "startTime": 13657.06,
        "name": "lh:audit:link-in-text-block",
        "duration": 2.51,
        "entryType": "measure"
      },
      {
        "startTime": 13659.9,
        "name": "lh:audit:list",
        "duration": 3.41,
        "entryType": "measure"
      },
      {
        "startTime": 13663.55,
        "name": "lh:audit:listitem",
        "duration": 2.63,
        "entryType": "measure"
      },
      {
        "startTime": 13666.49,
        "name": "lh:audit:meta-refresh",
        "duration": 2.01,
        "entryType": "measure"
      },
      {
        "startTime": 13668.78,
        "name": "lh:audit:meta-viewport",
        "duration": 2.74,
        "entryType": "measure"
      },
      {
        "startTime": 13671.79,
        "name": "lh:audit:object-alt",
        "duration": 9.85,
        "entryType": "measure"
      },
      {
        "startTime": 13681.85,
        "name": "lh:audit:select-name",
        "duration": 1.83,
        "entryType": "measure"
      },
      {
        "startTime": 13684.02,
        "name": "lh:audit:skip-link",
        "duration": 2.58,
        "entryType": "measure"
      },
      {
        "startTime": 13686.92,
        "name": "lh:audit:tabindex",
        "duration": 3.34,
        "entryType": "measure"
      },
      {
        "startTime": 13690.56,
        "name": "lh:audit:table-duplicate-name",
        "duration": 2.07,
        "entryType": "measure"
      },
      {
        "startTime": 13692.84,
        "name": "lh:audit:table-fake-caption",
        "duration": 2.44,
        "entryType": "measure"
      },
      {
        "startTime": 13695.46,
        "name": "lh:audit:target-size",
        "duration": 2.55,
        "entryType": "measure"
      },
      {
        "startTime": 13698.31,
        "name": "lh:audit:td-has-header",
        "duration": 2.15,
        "entryType": "measure"
      },
      {
        "startTime": 13700.63,
        "name": "lh:audit:td-headers-attr",
        "duration": 2.3,
        "entryType": "measure"
      },
      {
        "startTime": 13703.11,
        "name": "lh:audit:th-has-data-cells",
        "duration": 11.17,
        "entryType": "measure"
      },
      {
        "startTime": 13714.63,
        "name": "lh:audit:valid-lang",
        "duration": 2.24,
        "entryType": "measure"
      },
      {
        "startTime": 13717.09,
        "name": "lh:audit:video-caption",
        "duration": 2.3,
        "entryType": "measure"
      },
      {
        "startTime": 13719.45,
        "name": "lh:audit:custom-controls-labels",
        "duration": 0.2,
        "entryType": "measure"
      },
      {
        "startTime": 13719.67,
        "name": "lh:audit:custom-controls-roles",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 13719.7,
        "name": "lh:audit:focus-traps",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 13719.73,
        "name": "lh:audit:focusable-controls",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 13719.76,
        "name": "lh:audit:interactive-element-affordance",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 13719.78,
        "name": "lh:audit:logical-tab-order",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 13719.8,
        "name": "lh:audit:managed-focus",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 13719.82,
        "name": "lh:audit:offscreen-content-hidden",
        "duration": 0.01,
        "entryType": "measure"
      },
      {
        "startTime": 13719.84,
        "name": "lh:audit:use-landmarks",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 13719.87,
        "name": "lh:audit:visual-order-follows-dom",
        "duration": 0.02,
        "entryType": "measure"
      },
      {
        "startTime": 13720.18,
        "name": "lh:audit:total-byte-weight",
        "duration": 1.93,
        "entryType": "measure"
      },
      {
        "startTime": 13722.31,
        "name": "lh:audit:unminified-css",
        "duration": 75.04,
        "entryType": "measure"
      },
      {
        "startTime": 13797.58,
        "name": "lh:audit:unminified-javascript",
        "duration": 97.28,
        "entryType": "measure"
      },
      {
        "startTime": 13895.07,
        "name": "lh:audit:unused-css-rules",
        "duration": 41.92,
        "entryType": "measure"
      },
      {
        "startTime": 13895.39,
        "name": "lh:computed:UnusedCSS",
        "duration": 34.85,
        "entryType": "measure"
      },
      {
        "startTime": 13937.23,
        "name": "lh:audit:unused-javascript",
        "duration": 13.22,
        "entryType": "measure"
      },
      {
        "startTime": 13950.67,
        "name": "lh:audit:doctype",
        "duration": 0.77,
        "entryType": "measure"
      },
      {
        "startTime": 13951.66,
        "name": "lh:audit:charset",
        "duration": 0.88,
        "entryType": "measure"
      },
      {
        "startTime": 13952.75,
        "name": "lh:audit:geolocation-on-start",
        "duration": 0.78,
        "entryType": "measure"
      },
      {
        "startTime": 13953.73,
        "name": "lh:audit:inspector-issues",
        "duration": 0.73,
        "entryType": "measure"
      },
      {
        "startTime": 13954.59,
        "name": "lh:audit:js-libraries",
        "duration": 0.75,
        "entryType": "measure"
      },
      {
        "startTime": 13955.65,
        "name": "lh:audit:notification-on-start",
        "duration": 0.67,
        "entryType": "measure"
      },
      {
        "startTime": 13956.48,
        "name": "lh:audit:paste-preventing-inputs",
        "duration": 0.58,
        "entryType": "measure"
      },
      {
        "startTime": 13957.24,
        "name": "lh:audit:meta-description",
        "duration": 0.52,
        "entryType": "measure"
      },
      {
        "startTime": 13957.9,
        "name": "lh:audit:http-status-code",
        "duration": 0.69,
        "entryType": "measure"
      },
      {
        "startTime": 13958.75,
        "name": "lh:audit:link-text",
        "duration": 1.62,
        "entryType": "measure"
      },
      {
        "startTime": 13960.56,
        "name": "lh:audit:crawlable-anchors",
        "duration": 1.58,
        "entryType": "measure"
      },
      {
        "startTime": 13962.41,
        "name": "lh:audit:is-crawlable",
        "duration": 3.16,
        "entryType": "measure"
      },
      {
        "startTime": 13965.74,
        "name": "lh:audit:robots-txt",
        "duration": 0.99,
        "entryType": "measure"
      },
      {
        "startTime": 13966.92,
        "name": "lh:audit:hreflang",
        "duration": 0.69,
        "entryType": "measure"
      },
      {
        "startTime": 13967.82,
        "name": "lh:audit:canonical",
        "duration": 0.77,
        "entryType": "measure"
      },
      {
        "startTime": 13968.75,
        "name": "lh:audit:structured-data",
        "duration": 0.34,
        "entryType": "measure"
      },
      {
        "startTime": 13969.25,
        "name": "lh:audit:bf-cache",
        "duration": 0.6,
        "entryType": "measure"
      },
      {
        "startTime": 13970.02,
        "name": "lh:audit:cache-insight",
        "duration": 1.53,
        "entryType": "measure"
      },
      {
        "startTime": 13971.71,
        "name": "lh:audit:cls-culprits-insight",
        "duration": 0.92,
        "entryType": "measure"
      },
      {
        "startTime": 13972.78,
        "name": "lh:audit:document-latency-insight",
        "duration": 0.81,
        "entryType": "measure"
      },
      {
        "startTime": 13973.75,
        "name": "lh:audit:dom-size-insight",
        "duration": 1.05,
        "entryType": "measure"
      },
      {
        "startTime": 13974.96,
        "name": "lh:audit:duplicated-javascript-insight",
        "duration": 0.82,
        "entryType": "measure"
      },
      {
        "startTime": 13975.95,
        "name": "lh:audit:font-display-insight",
        "duration": 0.68,
        "entryType": "measure"
      },
      {
        "startTime": 13976.79,
        "name": "lh:audit:forced-reflow-insight",
        "duration": 0.76,
        "entryType": "measure"
      },
      {
        "startTime": 13977.71,
        "name": "lh:audit:image-delivery-insight",
        "duration": 2.51,
        "entryType": "measure"
      },
      {
        "startTime": 13980.38,
        "name": "lh:audit:inp-breakdown-insight",
        "duration": 0.75,
        "entryType": "measure"
      },
      {
        "startTime": 13981.34,
        "name": "lh:audit:lcp-breakdown-insight",
        "duration": 0.97,
        "entryType": "measure"
      },
      {
        "startTime": 13982.52,
        "name": "lh:audit:lcp-discovery-insight",
        "duration": 0.75,
        "entryType": "measure"
      },
      {
        "startTime": 13983.53,
        "name": "lh:audit:legacy-javascript-insight",
        "duration": 0.91,
        "entryType": "measure"
      },
      {
        "startTime": 13984.61,
        "name": "lh:audit:modern-http-insight",
        "duration": 0.84,
        "entryType": "measure"
      },
      {
        "startTime": 13985.64,
        "name": "lh:audit:network-dependency-tree-insight",
        "duration": 1.45,
        "entryType": "measure"
      },
      {
        "startTime": 13987.36,
        "name": "lh:audit:render-blocking-insight",
        "duration": 1.25,
        "entryType": "measure"
      },
      {
        "startTime": 13988.84,
        "name": "lh:audit:third-parties-insight",
        "duration": 0.91,
        "entryType": "measure"
      },
      {
        "startTime": 13989.96,
        "name": "lh:audit:viewport-insight",
        "duration": 0.55,
        "entryType": "measure"
      },
      {
        "startTime": 13990.54,
        "name": "lh:runner:generate",
        "duration": 0.62,
        "entryType": "measure"
      }
    ],
    "total": 11870.400000000001
  },
  "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://usatoday.com/",
            "final": "https://eu.usatoday.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": 4603.057720000001
          },
          "path": "audits[first-contentful-paint].displayValue"
        },
        {
          "values": {
            "timeInMs": 10064.180451984252
          },
          "path": "audits[largest-contentful-paint].displayValue"
        },
        {
          "values": {
            "timeInMs": 6052.143468764187
          },
          "path": "audits[speed-index].displayValue"
        },
        {
          "values": {
            "timeInMs": 10161.709513984253
          },
          "path": "audits.interactive.displayValue"
        },
        {
          "values": {
            "timeInMs": 3667.055999999952
          },
          "path": "audits[mainthread-work-breakdown].displayValue"
        },
        {
          "values": {
            "timeInMs": 1552.7959999999998
          },
          "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": 551
          },
          "path": "audits[total-blocking-time].displayValue"
        },
        {
          "values": {
            "timeInMs": 419
          },
          "path": "audits[max-potential-fid].displayValue"
        },
        {
          "values": {
            "timeInMs": 24.632
          },
          "path": "audits[network-rtt].displayValue"
        },
        {
          "values": {
            "timeInMs": 32.544000000000004
          },
          "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": 33
          },
          "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": 1575.0320000000002
          },
          "path": "audits.redirects.displayValue"
        },
        {
          "values": {
            "wastedMs": 116
          },
          "path": "audits[document-latency-insight].displayValue"
        },
        {
          "values": {
            "wastedMs": 151
          },
          "path": "audits[render-blocking-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 | failureTitle": [
        "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"
      ],
      "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/lib/i18n/i18n.js | columnElement": [
        "audits[layout-shifts].details.headings[0].label",
        "audits[non-composited-animations].details.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/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": 9
          },
          "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[image-redundant-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 | failureTitle": [
        "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": 2385473
          },
          "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": 290619
          },
          "path": "audits[unminified-javascript].displayValue"
        },
        {
          "values": {
            "wastedBytes": 150970
          },
          "path": "audits[unused-javascript].displayValue"
        },
        {
          "values": {
            "wastedBytes": 237392.48124999995
          },
          "path": "audits[cache-insight].displayValue"
        },
        {
          "values": {
            "wastedBytes": 686395
          },
          "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"
      ],
      "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": "116 ms"
          },
          "path": "audits[document-latency-insight].details.items.noRedirects.label"
        }
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": [
        {
          "values": {
            "PH1": "33 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",
        "audits[image-delivery-insight].details.items[1].subItems.items[0].reason",
        "audits[image-delivery-insight].details.items[2].subItems.items[0].reason",
        "audits[image-delivery-insight].details.items[3].subItems.items[0].reason"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": [
        {
          "values": {
            "PH1": "270x271",
            "PH2": "104x105"
          },
          "path": "audits[image-delivery-insight].details.items[0].subItems.items[1].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[1].subItems.items[1].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[2].subItems.items[1].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[3].subItems.items[1].reason"
        },
        {
          "values": {
            "PH1": "776x437",
            "PH2": "412x232"
          },
          "path": "audits[image-delivery-insight].details.items[4].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[5].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "270x270",
            "PH2": "104x104"
          },
          "path": "audits[image-delivery-insight].details.items[6].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[7].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[8].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[9].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[10].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[11].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[12].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[13].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[14].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[15].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[16].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[17].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[18].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[19].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[20].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[21].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[22].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[23].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[24].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[25].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[26].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[27].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[28].subItems.items[0].reason"
        },
        {
          "values": {
            "PH1": "384x216",
            "PH2": "124x70"
          },
          "path": "audits[image-delivery-insight].details.items[29].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 | resourceLoadDelay": [
        "audits[lcp-breakdown-insight].details.items[0].items[1].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | resourceLoadDuration": [
        "audits[lcp-breakdown-insight].details.items[0].items[2].label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | elementRenderDelay": [
        "audits[lcp-breakdown-insight].details.items[0].items[3].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/LCPDiscovery.js | fetchPriorityShouldBeApplied": [
        "audits[lcp-discovery-insight].details.items[0].items.priorityHinted.label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | requestDiscoverable": [
        "audits[lcp-discovery-insight].details.items[0].items.requestDiscoverable.label"
      ],
      "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | lazyLoadNotApplied": [
        "audits[lcp-discovery-insight].details.items[0].items.eagerlyLoaded.label"
      ],
      "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"
      ]
    }
  }
}
