__vite_ssr_exportName__("DTYPE_NORM", () => { try { return DTYPE_NORM } catch {} });
__vite_ssr_exportName__("dtypeKind", () => { try { return dtypeKind } catch {} });
__vite_ssr_exportName__("populatedExtent", () => { try { return populatedExtent } catch {} });
__vite_ssr_exportName__("remapToAxis", () => { try { return remapToAxis } catch {} });
__vite_ssr_exportName__("classifyDtypes", () => { try { return classifyDtypes } catch {} });
__vite_ssr_exportName__("accumulateGroupHistograms", () => { try { return accumulateGroupHistograms } catch {} });
__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
const NBINS           = 256;
const DEFAULT_SAMPLES = 2000;
const MAX_IMAGE_OPTIONS = 500;
const GROUP_SEL_ID    = 'hist-group-select';
const IMAGE_SEL_ID    = 'hist-image-select';
const SAMPLE_INPUT_ID = 'hist-sample-input';
const SPREAD_ID       = 'hist-spread-cb';
const INDIV_ID        = 'hist-indiv-cb';
const INDIV_LIMIT     = 50;

// Normalization divisor per dtype for the dtype-range display mode.
// uint: width of the representable range (dtype_max + 1), so [0, 256) → [0, 1].
// int:  abs(dtype_min) = 2^(bits-1), so [-128, 128) → [-1, 1].
const DTYPE_NORM = {
  uint8: 256, uint16: 65536, uint32: 4294967296, uint64: 2 ** 64,
  int8:  128, int16:  32768, int32:  2147483648, int64: 2 ** 63,
};

const KIND_LABEL = { uint: 'Unsigned integer', int: 'Signed integer', float: 'Floating point' };

function dtypeKind(dtype) {
  if (dtype?.startsWith('float')) return 'float';
  if (dtype?.startsWith('uint'))  return 'uint';
  if (dtype?.startsWith('int'))   return 'int';
  return null;
};

function histTotal(counts) {
  let t = 0;
  for (let i = 0; i < counts.length; i++) t += counts[i];
  return t;
}

// Left-edge x positions for NBINS bins spanning [lo, hi].
function binXs(lo, hi) {
  const step = (hi - lo) / NBINS || 1 / NBINS;
  return Array.from({ length: NBINS }, (_, i) => lo + i * step);
}

// Value-space extent of the non-zero bins of a [lo, hi)-spanning series, or null if all zero.
// Used to zoom the plotted x-axis onto real data instead of the (possibly dtype-widened) bin window.
function populatedExtent(lo, hi, ys) {
  const step = (hi - lo) / ys.length || 1 / ys.length;
  let first = -1, last = -1;
  for (let i = 0; i < ys.length; i++) {
    if (ys[i] > 0) { if (first < 0) first = i; last = i; }
  };
  if (first < 0) return null;
  return [lo + first * step, lo + (last + 1) * step];
};

// Convert a color string (hex or rgb) to rgba with the given alpha.
function withAlpha(color, alpha) {
  if (color.startsWith('#') && color.length === 7) {
    const r = parseInt(color.slice(1, 3), 16);
    const g = parseInt(color.slice(3, 5), 16);
    const b = parseInt(color.slice(5, 7), 16);
    return `rgba(${r},${g},${b},${alpha})`;
  };
  if (color.startsWith('rgb(')) return color.replace('rgb(', 'rgba(').replace(')', `,${alpha})`);
  return color;
}

// Uses the same widget-warning-yellow class other widgets share (see plot-utils.js's prependWarning) -
// built by hand instead of via prependWarning since these banners are inserted at a specific position,
// not always as the container's first child.
function warningBanner(text, marginBottom = 16) {
  const el = document.createElement('div');
  el.className = 'widget-warning widget-warning-yellow';
  if (marginBottom !== 16) el.style.marginBottom = `${marginBottom}px`;
  const icon = document.createElement('span');
  icon.className = 'widget-warning-icon';
  icon.textContent = '⚠️';
  const content = document.createElement('div');
  content.textContent = text;
  el.append(icon, content);
  return el;
}

function isClose(a, b, rtol = 1e-9, atol = 1e-9) {
  return Math.abs(a - b) <= atol + rtol * Math.abs(b);
}

// Redistributes a value array from its own [srcLo,srcHi) axis onto a shared [tgtLo,tgtHi) axis via bin-centre remap.
function remapToAxis(values, srcLo, srcHi, tgtLo, tgtHi) {
  if (isClose(srcLo, tgtLo) && isClose(srcHi, tgtHi)) return values;
  const B = values.length;
  const out = new Float64Array(B);
  if (tgtLo === tgtHi) {
    let total = 0; for (let i = 0; i < B; i++) total += values[i];
    out[0] = total;
    return out;
  };
  const tgtStep = (tgtHi - tgtLo) / B;
  if (srcLo === srcHi) {
    const idx = Math.min(Math.max(Math.floor((srcLo - tgtLo) / tgtStep), 0), B - 1);
    for (let i = 0; i < B; i++) out[idx] += values[i];
    return out;
  };
  const srcStep = (srcHi - srcLo) / B;
  for (let i = 0; i < B; i++) {
    if (!values[i]) continue;
    const center = srcLo + (i + 0.5) * srcStep;
    let idx = Math.floor((center - tgtLo) / tgtStep);
    if (idx < 0) idx = 0; else if (idx >= B) idx = B - 1;
    out[idx] += values[i];
  };
  return out;
};

// Classifies the dataset's distinct dtypes into the kinds this widget can plot, plus
// any dtype it can't (e.g. bool) so callers can warn instead of silently dropping them.
// dtypeRows: rows with a `dtype` field, as returned by `SELECT DISTINCT dtype`.
function classifyDtypes(dtypeRows, hasDtype) {
  if (!hasDtype) return { presentKinds: ['uint'], multiKind: false, unsupportedDtypes: [] };
  const presentKinds = ['uint', 'int', 'float'].filter(k => dtypeRows.some(r => dtypeKind(r.dtype) === k));
  const unsupportedDtypes = [...new Set(dtypeRows.map(r => r.dtype).filter(d => !dtypeKind(d)))];
  return { presentKinds, multiKind: presentKinds.length > 1, unsupportedDtypes };
};

// Combines per-image histograms into per-(kind,group) means on a shared axis, instead of summing raw bin indices.
// records: [{ kind, group, counts, total, aMin, aMax, nMin, nMax, nanCount }].
// Normalized by (finite + nan), so bins + nanFrac sum to 1 per image.
function accumulateGroupHistograms(records, { computeNormalized = true } = {}) {
  const buckets = {};
  for (const r of records) {
    (buckets[r.kind] ??= {});
    (buckets[r.kind][r.group] ??= []).push(r);
  };

  const result = {};
  for (const kind of Object.keys(buckets)) {
    result[kind] = {};
    const doNorm = computeNormalized && kind !== 'float';
    for (const group of Object.keys(buckets[kind])) {
      const items = buckets[kind][group];
      let aLo = Infinity, aHi = -Infinity, nLo = Infinity, nHi = -Infinity;
      for (const it of items) {
        if (it.aMin < aLo) aLo = it.aMin;
        if (it.aMax > aHi) aHi = it.aMax;
        if (doNorm) {
          if (it.nMin < nLo) nLo = it.nMin;
          if (it.nMax > nHi) nHi = it.nMax;
        }
      };

      const sums      = new Float64Array(NBINS);
      const sumSq     = new Float64Array(NBINS);
      const sumsNorm  = doNorm ? new Float64Array(NBINS) : null;
      const sumSqNorm = doNorm ? new Float64Array(NBINS) : null;
      let nanSum = 0;

      for (const it of items) {
        const nanCount = it.nanCount || 0;
        const inv = 1 / (it.total + nanCount);
        const v = new Float64Array(it.counts.length);
        for (let i = 0; i < v.length; i++) v[i] = it.counts[i] * inv;
        nanSum += nanCount * inv;

        const vA = remapToAxis(v, it.aMin, it.aMax, aLo, aHi);
        for (let i = 0; i < NBINS; i++) { sums[i] += vA[i]; sumSq[i] += vA[i] * vA[i]; };

        if (doNorm) {
          const vN = remapToAxis(v, it.nMin, it.nMax, nLo, nHi);
          for (let i = 0; i < NBINS; i++) { sumsNorm[i] += vN[i]; sumSqNorm[i] += vN[i] * vN[i]; }
        }
      };

      result[kind][group] = {
        count: items.length,
        aMin: aLo, aMax: aHi,
        nMin: doNorm ? nLo : aLo, nMax: doNorm ? nHi : aHi,
        sums, sumSq,
        sumsNorm: sumsNorm ?? sums, sumSqNorm: sumSqNorm ?? sumSq,
        nanSum,
      };
    }
  };
  return result;
};

// Source table + WHERE respecting pinned dims (pp_all at the right obs_level).
// The tile preview and the full card share it, so a pinned dim moves both to
// the same slice.
function histSource(ctx) {
  const parts = ctx.sql.dimSubsetWhere({ fixed: ctx.sql.pinnedDims() });
  return { table: 'pp_all', where: parts.length ? `WHERE ${parts.join(' AND ')}` : '' };
}

const __vite_ssr_export_default__ = {
  id: 'histogram',
  required_inputs: ['histogram_counts'],
  inputs: ['histogram_min', 'histogram_max', 'histogram_nan_count', 'dtype', 'name'],
  group: 'Dataset Stats',
  scope: 'image',
  label: 'Pixel Value Histograms',
  shortLabel: 'Histograms',
  info: [
    'Histograms are computed per image (256 bins) and averaged per group.',
    'Each image is area-normalized before averaging, so image size does not affect the result.',
    'A **NaN** bucket left of the real data shows the fraction of pixels excluded as NaN, if any.',
    '',
    'If the dataset mixes unsigned integer, signed integer, and/or floating-point images, each kind gets its own plot.',
    '',
    '**Display mode** (integer panels only)',
    '- **Actual values** – x-axis shows real pixel values.',
    '- **Dtype range** – x-axis normalized to the representable range of the pixel type (unsigned integers: 0 to 1, signed integers: -1 to 1). Useful for comparing images across bit depths.',
    '',
    'Float images always show actual values.',
    '',
    '**Spread** – shaded +/-1 std band around the group mean.',
    'A wider band means more variation between images in that group.',
    '',
    '**Show individual images** – visible when one group is selected with 50 or fewer images.',
    'Replaces the group mean with one line per image.',
  ].join('\n'),

  requires(schema) {
    return schema.blobCols.includes('histogram_counts');
  },

  async overviewMessage(ctx) {
    try {
      const [{ total, n }] = await ctx.queryRows(
        `SELECT COUNT(*) AS total, COUNT("histogram_counts") AS n FROM pp_data ${ctx.where}`,
      );
      const totalN = Number(total ?? 0), withHist = Number(n ?? 0);
      if (withHist < totalN)
        return { text: `Only <strong>${withHist.toLocaleString()}</strong>/${totalN.toLocaleString()} have histograms.`, warning: true };
      return 'Compare pixel intensity distributions across groups.';
    } catch { return null; }
  },

  async overviewPlot(container, ctx) {
    const { groupExpr: geFn } = ctx.sql;
    const { extractBinary }   = ctx.data;
    const hasRange    = ctx.schema.allCols.includes('histogram_min') && ctx.schema.allCols.includes('histogram_max');
    const hasDtype    = ctx.schema.allCols.includes('dtype');
    const hasNanCount = ctx.schema.allCols.includes('histogram_nan_count');
    const rangeCols   = hasRange    ? ', "histogram_min", "histogram_max"' : '';
    const dtypeCol    = hasDtype    ? ', "dtype"'                          : '';
    const nanCol      = hasNanCount ? ', "histogram_nan_count"'            : '';

    const { table, where } = histSource(ctx);
    const result = await ctx.query(`
      SELECT ${geFn()}, "histogram_counts"${rangeCols}${dtypeCol}${nanCol}
      FROM ${table} ${where}
      QUALIFY ROW_NUMBER() OVER (PARTITION BY __group__ ORDER BY random()) <= 300
    `);
    const rows = result.toArray();
    if (!rows.length) return false;

    const records = [];
    const kindCounts = {};
    for (const row of rows) {
      const kind = hasDtype ? dtypeKind(row.dtype) : 'uint';
      if (!kind) continue;
      const counts = extractBinary(row.histogram_counts);
      if (!counts?.length) continue;
      const total = histTotal(counts);
      const nanCount = hasNanCount ? Number(row.histogram_nan_count ?? 0) : 0;
      if (total <= 0 && nanCount <= 0) continue; // no pixels at all - nothing to show, even as NaN
      const aMin = hasRange ? Number(row.histogram_min) : 0;
      const aMax = hasRange ? Number(row.histogram_max) : NBINS - 1;
      records.push({ kind, group: String(row.__group__), counts, total, aMin, aMax, nanCount });
      kindCounts[kind] = (kindCounts[kind] || 0) + 1;
    };
    if (!records.length) return false;

    // Mini preview is a single combined chart — plot only the dataset's dominant pixel kind.
    const dominantKind = Object.keys(kindCounts).sort((a, b) => kindCounts[b] - kindCounts[a])[0];
    const kindData = accumulateGroupHistograms(records.filter(r => r.kind === dominantKind), { computeNormalized: false });
    const gdByGroup = kindData[dominantKind] ?? {};

    const groups = ctx.groups.filter(g => gdByGroup[g]?.count);
    if (!groups.length) return false;

    const traces = groups.map(g => {
      const gd = gdByGroup[g];
      return {
        type: 'scatter', mode: 'lines', fill: 'tozeroy', opacity: 0.6,
        x: binXs(gd.aMin, gd.aMax), y: Array.from(gd.sums, v => v / gd.count),
        line: { color: ctx.color.group(g), width: 1.5 }, hoverinfo: 'skip',
      };
    });

    // NaN bucket on its own small axis, same trick as the full widget.
    let hasNanBar = false;
    for (const g of groups) {
      const gd = gdByGroup[g];
      const nanMean = gd.nanSum / gd.count;
      if (!(nanMean > 0)) continue;
      hasNanBar = true;
      traces.push({
        type: 'bar', xaxis: 'x2', x: [0], y: [nanMean], width: [0.5],
        marker: { color: ctx.color.group(g) }, opacity: 0.6, hoverinfo: 'skip',
      });
    };

    ctx.plot.appendMini(container, traces, {
      xaxis: { title: 'intensity', ...(hasNanBar ? { domain: [0, 0.86] } : {}) },
      yaxis: { showticklabels: false },
      ...(hasNanBar ? { xaxis2: { domain: [0.92, 1], anchor: 'y', range: [-0.5, 0.5], tickvals: [0], ticktext: ['NaN'] } } : {}),
    });
    return true;
  },

  async render(container, ctx) {
    // Pinned dims narrow every point to one slice (see histSource above).
    ctx.plot.syncPinnedScopeBadge(container, ctx);

    const hasRange = ctx.schema.allCols.includes('histogram_min') && ctx.schema.allCols.includes('histogram_max');
    const hasDtype = ctx.schema.allCols.includes('dtype');
    const hasNames = ctx.schema.allCols.includes('name');
    const hasPath  = ctx.schema.allCols.includes('path');
    const hasNanCount = ctx.schema.allCols.includes('histogram_nan_count');

    try {
      const [availRow] = await ctx.queryRows(
        `SELECT COUNT(*) AS total, COUNT("histogram_counts") AS n FROM pp_data ${ctx.where}`
      );
      ctx.plot.dataAvailabilityWarning(container,
        [{ label: 'Pixel Value Histograms', present: Number(availRow.n) }],
        Number(availRow.total), { unit: 'images' });

      const { groupExpr: geFn } = ctx.sql;

      // Parallel setup queries.
      const [dtypeRows, imageRows] = await Promise.all([
        hasDtype ? ctx.queryRows(`SELECT DISTINCT "dtype" FROM pp_data ${ctx.where}`) : [],
        hasPath ? ctx.queryRows(
          `SELECT ${imageKey(ctx)} AS key, ${imageLabelSql(ctx)} AS label
           FROM pp_data ${ctx.where} ORDER BY 2 LIMIT ${MAX_IMAGE_OPTIONS}`) : [],
      ]);

      const { presentKinds, multiKind, unsupportedDtypes } = classifyDtypes(dtypeRows, hasDtype);

      container.appendChild(buildControls(ctx, { hasPath, imageRows }));

      const samplingWarning = warningBanner('', 16);
      samplingWarning.style.display = 'none';
      container.appendChild(samplingWarning);

      if (multiKind) {
        container.appendChild(warningBanner(
          'This dataset mixes different kinds of pixel types (e.g. integer and float). '
          + 'Their value scales are not directly comparable, so each kind is shown in its own plot below.',
          20,
        ));
      };

      if (unsupportedDtypes.length) {
        container.appendChild(warningBanner(
          `Images with pixel type(s) ${unsupportedDtypes.join(', ')} are not supported by this widget and are excluded.`,
          20,
        ));
      };

      if (!presentKinds.length) {
        const noData = document.createElement('div');
        noData.className = 'no-data';
        noData.textContent = 'No supported pixel types to display.';
        container.appendChild(noData);
        return;
      };

      const nanWarning = hasNanCount ? warningBanner('', 20) : null;
      if (nanWarning) { nanWarning.style.display = 'none'; container.appendChild(nanWarning); };

      // One panel per kind — int/uint get a per-panel mode toggle, float does not.
      const panels = {};
      for (const kind of presentKinds) {
        const wrap = document.createElement('div');
        wrap.style.marginBottom = '32px';

        if (multiKind) {
          const h = document.createElement('div');
          h.style.cssText = 'font-weight:600;font-size:1.05em;margin-bottom:8px';
          h.textContent   = `${KIND_LABEL[kind]} images`;
          wrap.appendChild(h);
        };

        let toggleEl = null, labelLeft = null, labelRight = null;
        if (kind !== 'float') {
          const normLabel  = kind === 'int' ? 'Dtype range (−1 to 1, 256 bins)' : 'Dtype range (0 to 1, 256 bins)';
          const toggleWrap = document.createElement('div');
          toggleWrap.style.cssText = 'display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:0.88em;color:#444';

          const switchWrap = document.createElement('div');
          switchWrap.className = 'form-check form-switch mb-0';
          toggleEl = document.createElement('input');
          toggleEl.className = 'form-check-input';
          toggleEl.type      = 'checkbox';
          toggleEl.setAttribute('role', 'switch');
          toggleEl.style.cursor = 'pointer';
          switchWrap.appendChild(toggleEl);

          labelLeft  = document.createElement('span');
          labelLeft.textContent = 'Actual values (256 bins)';
          labelRight = document.createElement('span');
          labelRight.textContent = normLabel;

          toggleWrap.append(labelLeft, switchWrap, labelRight);
          wrap.appendChild(toggleWrap);
        } else if (multiKind) {
          const note = document.createElement('div');
          note.style.cssText = 'font-size:0.82em;color:#888;margin-bottom:10px';
          note.textContent = 'Float images always show actual pixel values — there is no fixed representable range.';
          wrap.appendChild(note);
        };

        const plotDiv = document.createElement('div');
        wrap.appendChild(plotDiv);
        container.appendChild(wrap);
        panels[kind] = { plotDiv, toggleEl, labelLeft, labelRight };
      };

      // Cached across mode/spread toggles — re-populated on every other control change.
      let kindData      = null; // { [kind]: { [group]: { sums, sumSq, sumsNorm, sumSqNorm, count, aMin, aMax, nMin, nMax } } }
      let imageOverlay  = null; // { ys, aMin, aMax, nMin, nMax, kind, label }
      let indivImages   = null; // { rows: [...], overflow: bool } | null

      const fetchAndAccumulate = async () => {
        const { q } = ctx.sql;
        const { extractBinary } = ctx.data;
        const ctrl = readControls(container);

        const { table: srcTable, where: srcWhere } = histSource(ctx);
        let where = srcWhere;
        if (ctrl.selectedGroups.length && ctx.state.groupCol) {
          const list = ctrl.selectedGroups.map(g => `'${g.replace(/'/g, "''")}'`).join(', ');
          const extra = `${ctx.sql.groupCol()} IN (${list})`;
          where = where ? `${where} AND ${extra}` : `WHERE ${extra}`;
        };

        const rangeSel = hasRange    ? ', "histogram_min", "histogram_max"' : '';
        const dtypeSel = hasDtype    ? ', "dtype"'                          : '';
        const nanSel   = hasNanCount ? ', "histogram_nan_count"'           : '';
        const result   = await ctx.query(
          `SELECT ${geFn()}, "histogram_counts"${rangeSel}${dtypeSel}${nanSel}
           FROM ${srcTable} ${where}
           QUALIFY ROW_NUMBER() OVER (PARTITION BY __group__ ORDER BY random()) <= ${ctrl.samplesPerGroup}`
        );
        const rows = result.toArray();

        const records = [];
        for (const row of rows) {
          const kind = hasDtype ? dtypeKind(row.dtype) : 'uint';
          if (!kind) continue;
          const counts = extractBinary(row.histogram_counts);
          if (!counts?.length) continue;
          const total = histTotal(counts);
          const nanCount = hasNanCount ? Number(row.histogram_nan_count ?? 0) : 0;
          if (total <= 0 && nanCount <= 0) continue; // no pixels at all - nothing to show, even as NaN

          const aMin  = hasRange ? Number(row.histogram_min) : 0;
          const aMax  = hasRange ? Number(row.histogram_max) : NBINS - 1;
          const dNorm = DTYPE_NORM[row.dtype];
          const nMin  = dNorm != null ? aMin / dNorm : aMin;
          const nMax  = dNorm != null ? aMax / dNorm : aMax;

          records.push({ kind, group: String(row.__group__), counts, total, aMin, aMax, nMin, nMax, nanCount });
        };
        kindData = accumulateGroupHistograms(records);

        const rowsPerGroup = {};
        for (const r of rows) {
          const g = String(r.__group__);
          rowsPerGroup[g] = (rowsPerGroup[g] || 0) + 1;
        };
        const cappedGroups = Object.keys(rowsPerGroup)
          .filter(g => rowsPerGroup[g] >= ctrl.samplesPerGroup);
        if (cappedGroups.length === 0) {
          samplingWarning.style.display = 'none';
        } else {
          const allCapped = cappedGroups.length === Object.keys(rowsPerGroup).length;
          let msg = `Results are sampled: showing up to ${ctrl.samplesPerGroup.toLocaleString()} images per group`;
          if (!allCapped)
            msg += `. Groups at limit: ${cappedGroups.map(g => ctx.groupLabel(g)).join(', ')}`;
          samplingWarning.querySelector('div').textContent = msg + '. Increase "Max samples" for full accuracy.';
          samplingWarning.style.display = '';
        };

        // Individual-image lines — only when one group is active and few enough images.
        indivImages = null;
        const isSingleGroup = ctrl.selectedGroups.length === 1 ||
          (ctrl.selectedGroups.length === 0 && ctx.groups.length === 1);
        let singleGroupCount = 0;
        if (isSingleGroup) {
          for (const kd of Object.values(kindData))
            for (const gd of Object.values(kd)) singleGroupCount += gd.count;
        };
        const indivWrap = container.querySelector('#hist-indiv-wrap');
        if (indivWrap) indivWrap.style.display = (isSingleGroup && singleGroupCount <= INDIV_LIMIT) ? '' : 'none';

        if (container.querySelector(`#${INDIV_ID}`)?.checked && isSingleGroup && singleGroupCount <= INDIV_LIMIT) {
          const nameSel2  = hasNames ? `, ${imageLabelSql(ctx)} AS __label__` : '';
          const iResult   = await ctx.query(
            `SELECT "histogram_counts"${rangeSel}${dtypeSel}${nanSel}${nameSel2}
             FROM ${srcTable} ${where}
             LIMIT ${INDIV_LIMIT + 1}`
          );
          const iRows    = iResult.toArray();
          const overflow = iRows.length > INDIV_LIMIT;
          indivImages    = { rows: [], overflow };
          for (const row of iRows.slice(0, INDIV_LIMIT)) {
            const counts = extractBinary(row.histogram_counts);
            if (!counts?.length) continue;
            const total  = histTotal(counts);
            const nanCount = hasNanCount ? Number(row.histogram_nan_count ?? 0) : 0;
            if (total <= 0 && nanCount <= 0) continue;
            const aMin   = hasRange ? Number(row.histogram_min) : 0;
            const aMax   = hasRange ? Number(row.histogram_max) : NBINS - 1;
            const dNorm  = DTYPE_NORM[row.dtype];
            const inv    = 1 / (total + nanCount);
            indivImages.rows.push({
              ys: Array.from(counts, c => c * inv),
              nanFrac: nanCount * inv,
              aMin, aMax,
              nMin: dNorm != null ? aMin / dNorm : aMin,
              nMax: dNorm != null ? aMax / dNorm : aMax,
              kind: hasDtype ? dtypeKind(row.dtype) : 'uint',
              label: hasNames ? String(row.__label__ ?? '') : '',
            });
          }
        };

        // Single-image overlay — separate query, doesn't pollute the group sample.
        imageOverlay = null;
        if (ctrl.selectedImage && hasRange) {
          const safe        = ctrl.selectedImage.replace(/'/g, "''");
          const imageWhere  = ctx.sql.andWhere(srcWhere, `${imageKey(ctx)} = '${safe}'`);
          const imageResult = await ctx.query(
            `SELECT "histogram_counts", "histogram_min", "histogram_max"${dtypeSel}${nanSel}
             FROM ${srcTable} ${imageWhere} LIMIT 1`
          );
          const fr = imageResult.toArray()[0];
          if (fr) {
            const counts = extractBinary(fr.histogram_counts);
            if (counts?.length) {
              const total = histTotal(counts);
              const aMin  = Number(fr.histogram_min), aMax = Number(fr.histogram_max);
              const dNorm = DTYPE_NORM[fr.dtype];
              const nanCount = hasNanCount ? Number(fr.histogram_nan_count ?? 0) : 0;
              const inv   = total + nanCount > 0 ? 1 / (total + nanCount) : 0;
              imageOverlay = {
                ys:    Array.from(counts, v => v * inv),
                nanFrac: nanCount * inv,
                aMin,  aMax,
                nMin:  dNorm != null ? aMin / dNorm : aMin,
                nMax:  dNorm != null ? aMax / dNorm : aMax,
                kind:  hasDtype ? dtypeKind(fr.dtype) : 'uint',
                label: ctrl.selectedImageLabel,
              };
            }
          }
        }
      };

      const renderPanel = (kind) => {
        if (!kindData) return;
        const { plotDiv, toggleEl, labelLeft, labelRight } = panels[kind];
        const useNorm                = (toggleEl?.checked ?? false) && kind !== 'float';
        const spreadChecked          = container.querySelector(`#${SPREAD_ID}`)?.checked ?? false;
        const ctrl                   = readControls(container);
        const activeGroups           = ctrl.selectedGroups.length ? ctrl.selectedGroups : ctx.groups;
        const { append: appendPlot, plotlyLegendConfig } = ctx.plot;

        if (labelLeft) {
          labelLeft.style.fontWeight  = useNorm ? 'normal' : '600';
          labelRight.style.fontWeight = useNorm ? '600' : 'normal';
        };

        plotDiv.innerHTML = '';
        const kd         = kindData[kind] ?? {};
        const visGroups  = activeGroups.filter(g => kd[g]?.count);
        const hasOverlay = imageOverlay?.kind === kind;

        if (!visGroups.length && !hasOverlay) {
          plotDiv.innerHTML = '<div class="no-data" style="color:#aaa;padding:8px 0">No data for the current filter.</div>';
          return;
        };

        const traces = [];
        const nanSeries = []; // { frac, color, label } - rendered as a bucket left of the real bins
        let yMax = 0;
        let xLo = Infinity, xHi = -Infinity;
        const trackExtent = (lo, hi, ys) => {
          const ext = populatedExtent(lo, hi, ys);
          if (!ext) return;
          if (ext[0] < xLo) xLo = ext[0];
          if (ext[1] > xHi) xHi = ext[1];
        };

        // Individual image traces replace the group mean when active.
        const kindRows  = (indivImages && visGroups.length === 1)
          ? indivImages.rows.filter(r => r.kind === kind)
          : [];
        const showIndiv = kindRows.length > 0;

        if (!showIndiv) {
          for (const g of visGroups) {
            const gd        = kd[g];
            const color     = ctx.color.group(g);
            const label     = ctx.groupLabel(String(g));
            const lo        = useNorm ? gd.nMin : gd.aMin;
            const hi        = useNorm ? gd.nMax : gd.aMax;
            const sumsArr   = useNorm ? gd.sumsNorm  : gd.sums;
            const sumSqArr  = useNorm ? gd.sumSqNorm : gd.sumSq;
            const xs        = binXs(lo, hi);
            const meanYs    = Array.from(sumsArr, v => v / gd.count);
            const showSpread = spreadChecked && gd.count >= 2;

            for (let i = 0; i < NBINS; i++) if (meanYs[i] > yMax) yMax = meanYs[i];
            trackExtent(lo, hi, meanYs);
            nanSeries.push({ frac: gd.nanSum / gd.count, color, label });

            if (showSpread) {
              // ±1 std band as a closed polygon behind the mean line.
              const upper = new Array(NBINS), lower = new Array(NBINS);
              for (let i = 0; i < NBINS; i++) {
                const m = meanYs[i];
                const s = Math.sqrt(Math.max(0, sumSqArr[i] / gd.count - m * m));
                upper[i] = m + s;
                lower[i] = Math.max(0, m - s);
              };
              const xRev = xs.slice().reverse();
              traces.push({
                x: [...xs, ...xRev], y: [...upper, ...lower.slice().reverse()],
                fill: 'toself', mode: 'none', line: { width: 0 },
                fillcolor: withAlpha(color, 0.18),
                showlegend: false, hoverinfo: 'skip',
              });
            };

            traces.push({
              type: 'scatter', mode: 'lines', name: label,
              x: xs, y: meanYs,
              fill: showSpread ? 'none' : 'tozeroy',
              opacity: 0.6, line: { color, width: 2 },
            });
          }
        } else {
          const color = ctx.color.group(visGroups[0]);
          for (const row of kindRows) {
            const lo = useNorm ? row.nMin : row.aMin;
            const hi = useNorm ? row.nMax : row.aMax;
            for (let i = 0; i < row.ys.length; i++) if (row.ys[i] > yMax) yMax = row.ys[i];
            trackExtent(lo, hi, row.ys);
            nanSeries.push({ frac: row.nanFrac || 0, color, label: row.label || 'image' });
            traces.push({
              type: 'scatter', mode: 'lines',
              x: binXs(lo, hi), y: row.ys,
              name: row.label || 'image',
              line: { color, width: 1.5 },
              opacity: 0.6,
              showlegend: false,
              hovertemplate: `%{y:.4f}<br>${row.label}<extra></extra>`,
            });
          }
        };

        if (hasOverlay) {
          const fo = imageOverlay;
          const label = `Image: ${fo.label}`;
          const lo = useNorm ? fo.nMin : fo.aMin;
          const hi = useNorm ? fo.nMax : fo.aMax;
          const xs = binXs(lo, hi);
          trackExtent(lo, hi, fo.ys);
          nanSeries.push({ frac: fo.nanFrac || 0, color: 'black', label, opacity: 0.3 });
          traces.unshift({
            type: 'bar', name: label, x: xs, y: fo.ys,
            width: Array(NBINS).fill(xs.length > 1 ? xs[1] - xs[0] : 1),
            marker: { color: 'black' }, opacity: 0.3,
          });
        };

        // NaN bucket - own small categorical axis (xaxis2), not part of the numeric intensity
        // axis, so it can never coincide with a real tick like "100".
        let hasNanBar = false;
        for (const { frac, color, label, opacity: op } of nanSeries) {
          if (!(frac > 0)) continue;
          hasNanBar = true;
          if (frac > yMax) yMax = frac;
          traces.push({
            type: 'bar', name: `${label} (NaN)`, xaxis: 'x2', x: [0], y: [frac], width: [0.5],
            marker: { color }, opacity: op ?? 0.6, showlegend: false,
            hovertemplate: `NaN pixels: %{y:.4f}<extra>${label}</extra>`,
          });
        };

        const xTitle     = useNorm
          ? (kind === 'int' ? 'Dtype range (−1 to 1)' : 'Dtype range (0 to 1)')
          : 'Pixel value';
        const showLegend = ctx.groups.length > 1 || hasOverlay;
        const yRange     = yMax > 0 ? [0, yMax * 1.12] : undefined;
        // Zoom to where the data actually is instead of the full (possibly dtype-widened) bin window,
        // which would otherwise pad narrow-range integer data out with a wall of empty bins.
        const xPad       = xHi > xLo ? (xHi - xLo) * 0.04 : 0;
        const xRange     = xHi > xLo ? [xLo - xPad, xHi + xPad] : undefined;

        appendPlot(plotDiv, traces, {
          title:  { text: multiKind ? `${KIND_LABEL[kind]} — Intensity Histograms` : 'Intensity Histograms (averaged per group)' },
          xaxis:  {
            title: xTitle, exponentformat: 'e', ...(xRange ? { range: xRange } : {}),
            ...(hasNanBar ? { domain: [0, 0.86] } : {}),
          },
          yaxis:  { title: 'Normalized count', ...(yRange ? { range: yRange } : {}) },
          bargap: 0, height: 500, showlegend: showLegend, hovermode: 'x unified',
          ...(hasNanBar ? {
            xaxis2: {
              domain: [0.92, 1], anchor: 'y', range: [-0.5, 0.5],
              tickvals: [0], ticktext: ['NaN'], showgrid: false, zeroline: false,
            },
          } : {}),
          ...(showLegend ? { legend: plotlyLegendConfig } : {}),
        });
      };

      const renderPanels = () => { for (const kind of presentKinds) renderPanel(kind); };

      const updateNanWarning = () => {
        if (!nanWarning || !kindData) return;
        const pct = g => {
          let nanSum = 0, count = 0;
          for (const kd of Object.values(kindData)) { if (kd[g]) { nanSum += kd[g].nanSum; count += kd[g].count; } };
          return count ? nanSum / count : 0;
        };
        const groups = [...new Set(Object.values(kindData).flatMap(kd => Object.keys(kd)))];
        const withNan = groups.filter(g => pct(g) > 0);
        if (!withNan.length) { nanWarning.style.display = 'none'; return; };
        const parts = withNan.map(g => {
          const label = ctx.groupLabel ? ctx.groupLabel(g) : g;
          return groups.length > 1 ? `${label}: ${(pct(g) * 100).toFixed(2)}%` : `${(pct(g) * 100).toFixed(2)}%`;
        });
        nanWarning.querySelector('div').innerHTML = `NaN pixels detected${groups.length > 1 ? '' : ` (${parts[0]})`}${groups.length > 1 ? ': ' + parts.join(', ') : ''}.`;
        nanWarning.style.display = '';
      };

      const draw = async () => { await fetchAndAccumulate(); updateNanWarning(); renderPanels(); };

      // Per-panel mode toggles re-render only their panel; spread and group controls re-render all.
      for (const kind of presentKinds)
        panels[kind].toggleEl?.addEventListener('change', () => renderPanel(kind));
      container.querySelector(`#${SPREAD_ID}`)?.addEventListener('change', renderPanels);
      wireControls(container, draw);

      await draw();

    } catch (e) {
      console.error('Histogram widget error', e);
      container.innerHTML = '<div class="no-data">Failed to load data.</div>';
    }
  },
};

// Unique key per image: path + child_id when present, path alone otherwise.
function imageKey(ctx) {
  return ctx.schema.allCols.includes('child_id')
    ? `("path" || COALESCE(' \u2022 ' || "child_id", ''))`
    : '"path"';
}

function imageLabelSql(ctx) {
  const base = ctx.schema.allCols.includes('name') ? '"name"' : '"path"';
  return ctx.schema.allCols.includes('child_id')
    ? `(${base} || COALESCE(' \u2022 ' || "child_id", ''))`
    : base;
}

function buildControls(ctx, { hasPath, imageRows }) {
  const { escapeHtml } = ctx.plot;

  const groupOpts = ctx.groups.map(g =>
    `<option value="${escapeHtml(String(g))}">${escapeHtml(ctx.groupLabel(g))}</option>`).join('');

  const imageBlock = hasPath ? `
    <div style="max-width:400px;flex:1 1 240px">
      <div style="font-weight:600;margin-bottom:6px">Overlay specific image (optional):</div>
      <select id="${IMAGE_SEL_ID}" class="form-select form-select-sm">
        <option value="">- none -</option>
        ${imageRows.map(r => `<option value="${escapeHtml(String(r.key))}">${escapeHtml(String(r.label))}</option>`).join('')}
      </select>
      ${imageRows.length === MAX_IMAGE_OPTIONS ? `<small class="text-muted">Showing first ${MAX_IMAGE_OPTIONS} images.</small>` : ''}
    </div>` : '';

  const el = document.createElement('div');
  el.style.cssText = 'display:flex;flex-wrap:wrap;gap:20px;margin-bottom:20px';
  el.innerHTML = `
    <div style="max-width:360px;flex:1 1 240px">
      <div style="font-weight:600;margin-bottom:6px">Select groups (optional):</div>
      <select id="${GROUP_SEL_ID}" class="form-select form-select-sm" multiple style="height:80px">
        <option value="" selected>All groups</option>
        ${groupOpts}
      </select>
      <small class="text-muted">Ctrl/Cmd to multi-select.</small>
    </div>
    ${imageBlock}
    <div style="align-self:flex-start">
      <div class="form-check" style="margin-bottom:6px">
        <input class="form-check-input" type="checkbox" id="${SPREAD_ID}">
        <label class="form-check-label" for="${SPREAD_ID}" style="font-size:0.9em">
          Show spread (±1 std)
        </label>
      </div>
      <div id="hist-indiv-wrap" style="display:none;margin-bottom:8px">
        <div class="form-check">
          <input class="form-check-input" type="checkbox" id="${INDIV_ID}">
          <label class="form-check-label" for="${INDIV_ID}" style="font-size:0.9em">
            Show individual images
          </label>
        </div>
      </div>
      <label style="font-weight:600">Max samples per group:
        <input type="number" id="${SAMPLE_INPUT_ID}" value="${DEFAULT_SAMPLES}" min="50" step="100"
               style="width:90px;margin-left:8px;padding:2px 6px;border:1px solid #ccc;border-radius:4px">
      </label>
    </div>
  `;
  return el;
}

function readControls(container) {
  const groupSel  = container.querySelector(`#${GROUP_SEL_ID}`);
  const imageSel  = container.querySelector(`#${IMAGE_SEL_ID}`);
  const sampleRaw = container.querySelector(`#${SAMPLE_INPUT_ID}`)?.value ?? DEFAULT_SAMPLES;
  // value='' is the "All groups" option — filter(Boolean) drops it, leaving [] = all groups.
  const selectedGroups = groupSel
    ? [...groupSel.selectedOptions].map(o => o.value).filter(Boolean)
    : [];
  return {
    selectedGroups,
    selectedImage:      imageSel?.value ?? '',
    selectedImageLabel: imageSel?.selectedOptions[0]?.textContent?.trim() ?? '',
    samplesPerGroup: Math.max(50, parseInt(sampleRaw, 10) || DEFAULT_SAMPLES),
  };
}

function wireControls(container, onDraw) {
  // Group select: enforce "All groups" mutual-exclusivity before re-fetching.
  const groupSel = container.querySelector(`#${GROUP_SEL_ID}`);
  if (groupSel) {
    groupSel.addEventListener('change', () => {
      const allOpt   = groupSel.options[0];
      const specific = [...groupSel.options].slice(1).filter(o => o.selected);
      if (allOpt.selected && specific.length > 0) {
        allOpt.selected = false;       // specific selected alongside All → drop All
      } else if (!allOpt.selected && specific.length === 0) {
        allOpt.selected = true;        // nothing selected → revert to All
      };
      onDraw();
    });
  };
  for (const id of [IMAGE_SEL_ID, SAMPLE_INPUT_ID])
    container.querySelector(`#${id}`)?.addEventListener('change', onDraw);

  // Individual-image lines replace the group mean, so "spread around the mean" is meaningless then.
  const indivEl  = container.querySelector(`#${INDIV_ID}`);
  const spreadEl = container.querySelector(`#${SPREAD_ID}`);
  indivEl?.addEventListener('change', () => {
    if (spreadEl) spreadEl.disabled = indivEl.checked;
    onDraw();
  });
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9oaXN0b2dyYW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTkJJTlMgICAgICAgICAgID0gMjU2O1xuY29uc3QgREVGQVVMVF9TQU1QTEVTID0gMjAwMDtcbmNvbnN0IE1BWF9JTUFHRV9PUFRJT05TID0gNTAwO1xuY29uc3QgR1JPVVBfU0VMX0lEICAgID0gJ2hpc3QtZ3JvdXAtc2VsZWN0JztcbmNvbnN0IElNQUdFX1NFTF9JRCAgICA9ICdoaXN0LWltYWdlLXNlbGVjdCc7XG5jb25zdCBTQU1QTEVfSU5QVVRfSUQgPSAnaGlzdC1zYW1wbGUtaW5wdXQnO1xuY29uc3QgU1BSRUFEX0lEICAgICAgID0gJ2hpc3Qtc3ByZWFkLWNiJztcbmNvbnN0IElORElWX0lEICAgICAgICA9ICdoaXN0LWluZGl2LWNiJztcbmNvbnN0IElORElWX0xJTUlUICAgICA9IDUwO1xuXG4vLyBOb3JtYWxpemF0aW9uIGRpdmlzb3IgcGVyIGR0eXBlIGZvciB0aGUgZHR5cGUtcmFuZ2UgZGlzcGxheSBtb2RlLlxuLy8gdWludDogd2lkdGggb2YgdGhlIHJlcHJlc2VudGFibGUgcmFuZ2UgKGR0eXBlX21heCArIDEpLCBzbyBbMCwgMjU2KSDihpIgWzAsIDFdLlxuLy8gaW50OiAgYWJzKGR0eXBlX21pbikgPSAyXihiaXRzLTEpLCBzbyBbLTEyOCwgMTI4KSDihpIgWy0xLCAxXS5cbmV4cG9ydCBjb25zdCBEVFlQRV9OT1JNID0ge1xuICB1aW50ODogMjU2LCB1aW50MTY6IDY1NTM2LCB1aW50MzI6IDQyOTQ5NjcyOTYsIHVpbnQ2NDogMiAqKiA2NCxcbiAgaW50ODogIDEyOCwgaW50MTY6ICAzMjc2OCwgaW50MzI6ICAyMTQ3NDgzNjQ4LCBpbnQ2NDogMiAqKiA2Myxcbn07XG5cbmNvbnN0IEtJTkRfTEFCRUwgPSB7IHVpbnQ6ICdVbnNpZ25lZCBpbnRlZ2VyJywgaW50OiAnU2lnbmVkIGludGVnZXInLCBmbG9hdDogJ0Zsb2F0aW5nIHBvaW50JyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZHR5cGVLaW5kKGR0eXBlKSB7XG4gIGlmIChkdHlwZT8uc3RhcnRzV2l0aCgnZmxvYXQnKSkgcmV0dXJuICdmbG9hdCc7XG4gIGlmIChkdHlwZT8uc3RhcnRzV2l0aCgndWludCcpKSAgcmV0dXJuICd1aW50JztcbiAgaWYgKGR0eXBlPy5zdGFydHNXaXRoKCdpbnQnKSkgICByZXR1cm4gJ2ludCc7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBoaXN0VG90YWwoY291bnRzKSB7XG4gIGxldCB0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudHMubGVuZ3RoOyBpKyspIHQgKz0gY291bnRzW2ldO1xuICByZXR1cm4gdDtcbn1cblxuLy8gTGVmdC1lZGdlIHggcG9zaXRpb25zIGZvciBOQklOUyBiaW5zIHNwYW5uaW5nIFtsbywgaGldLlxuZnVuY3Rpb24gYmluWHMobG8sIGhpKSB7XG4gIGNvbnN0IHN0ZXAgPSAoaGkgLSBsbykgLyBOQklOUyB8fCAxIC8gTkJJTlM7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBOQklOUyB9LCAoXywgaSkgPT4gbG8gKyBpICogc3RlcCk7XG59XG5cbi8vIFZhbHVlLXNwYWNlIGV4dGVudCBvZiB0aGUgbm9uLXplcm8gYmlucyBvZiBhIFtsbywgaGkpLXNwYW5uaW5nIHNlcmllcywgb3IgbnVsbCBpZiBhbGwgemVyby5cbi8vIFVzZWQgdG8gem9vbSB0aGUgcGxvdHRlZCB4LWF4aXMgb250byByZWFsIGRhdGEgaW5zdGVhZCBvZiB0aGUgKHBvc3NpYmx5IGR0eXBlLXdpZGVuZWQpIGJpbiB3aW5kb3cuXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVkRXh0ZW50KGxvLCBoaSwgeXMpIHtcbiAgY29uc3Qgc3RlcCA9IChoaSAtIGxvKSAvIHlzLmxlbmd0aCB8fCAxIC8geXMubGVuZ3RoO1xuICBsZXQgZmlyc3QgPSAtMSwgbGFzdCA9IC0xO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHlzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHlzW2ldID4gMCkgeyBpZiAoZmlyc3QgPCAwKSBmaXJzdCA9IGk7IGxhc3QgPSBpOyB9XG4gIH1cbiAgaWYgKGZpcnN0IDwgMCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBbbG8gKyBmaXJzdCAqIHN0ZXAsIGxvICsgKGxhc3QgKyAxKSAqIHN0ZXBdO1xufVxuXG4vLyBDb252ZXJ0IGEgY29sb3Igc3RyaW5nIChoZXggb3IgcmdiKSB0byByZ2JhIHdpdGggdGhlIGdpdmVuIGFscGhhLlxuZnVuY3Rpb24gd2l0aEFscGhhKGNvbG9yLCBhbHBoYSkge1xuICBpZiAoY29sb3Iuc3RhcnRzV2l0aCgnIycpICYmIGNvbG9yLmxlbmd0aCA9PT0gNykge1xuICAgIGNvbnN0IHIgPSBwYXJzZUludChjb2xvci5zbGljZSgxLCAzKSwgMTYpO1xuICAgIGNvbnN0IGcgPSBwYXJzZUludChjb2xvci5zbGljZSgzLCA1KSwgMTYpO1xuICAgIGNvbnN0IGIgPSBwYXJzZUludChjb2xvci5zbGljZSg1LCA3KSwgMTYpO1xuICAgIHJldHVybiBgcmdiYSgke3J9LCR7Z30sJHtifSwke2FscGhhfSlgO1xuICB9XG4gIGlmIChjb2xvci5zdGFydHNXaXRoKCdyZ2IoJykpIHJldHVybiBjb2xvci5yZXBsYWNlKCdyZ2IoJywgJ3JnYmEoJykucmVwbGFjZSgnKScsIGAsJHthbHBoYX0pYCk7XG4gIHJldHVybiBjb2xvcjtcbn1cblxuLy8gVXNlcyB0aGUgc2FtZSB3aWRnZXQtd2FybmluZy15ZWxsb3cgY2xhc3Mgb3RoZXIgd2lkZ2V0cyBzaGFyZSAoc2VlIHBsb3QtdXRpbHMuanMncyBwcmVwZW5kV2FybmluZykgLVxuLy8gYnVpbHQgYnkgaGFuZCBpbnN0ZWFkIG9mIHZpYSBwcmVwZW5kV2FybmluZyBzaW5jZSB0aGVzZSBiYW5uZXJzIGFyZSBpbnNlcnRlZCBhdCBhIHNwZWNpZmljIHBvc2l0aW9uLFxuLy8gbm90IGFsd2F5cyBhcyB0aGUgY29udGFpbmVyJ3MgZmlyc3QgY2hpbGQuXG5mdW5jdGlvbiB3YXJuaW5nQmFubmVyKHRleHQsIG1hcmdpbkJvdHRvbSA9IDE2KSB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGVsLmNsYXNzTmFtZSA9ICd3aWRnZXQtd2FybmluZyB3aWRnZXQtd2FybmluZy15ZWxsb3cnO1xuICBpZiAobWFyZ2luQm90dG9tICE9PSAxNikgZWwuc3R5bGUubWFyZ2luQm90dG9tID0gYCR7bWFyZ2luQm90dG9tfXB4YDtcbiAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgaWNvbi5jbGFzc05hbWUgPSAnd2lkZ2V0LXdhcm5pbmctaWNvbic7XG4gIGljb24udGV4dENvbnRlbnQgPSAn4pqg77iPJztcbiAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250ZW50LnRleHRDb250ZW50ID0gdGV4dDtcbiAgZWwuYXBwZW5kKGljb24sIGNvbnRlbnQpO1xuICByZXR1cm4gZWw7XG59XG5cbmZ1bmN0aW9uIGlzQ2xvc2UoYSwgYiwgcnRvbCA9IDFlLTksIGF0b2wgPSAxZS05KSB7XG4gIHJldHVybiBNYXRoLmFicyhhIC0gYikgPD0gYXRvbCArIHJ0b2wgKiBNYXRoLmFicyhiKTtcbn1cblxuLy8gUmVkaXN0cmlidXRlcyBhIHZhbHVlIGFycmF5IGZyb20gaXRzIG93biBbc3JjTG8sc3JjSGkpIGF4aXMgb250byBhIHNoYXJlZCBbdGd0TG8sdGd0SGkpIGF4aXMgdmlhIGJpbi1jZW50cmUgcmVtYXAuXG5leHBvcnQgZnVuY3Rpb24gcmVtYXBUb0F4aXModmFsdWVzLCBzcmNMbywgc3JjSGksIHRndExvLCB0Z3RIaSkge1xuICBpZiAoaXNDbG9zZShzcmNMbywgdGd0TG8pICYmIGlzQ2xvc2Uoc3JjSGksIHRndEhpKSkgcmV0dXJuIHZhbHVlcztcbiAgY29uc3QgQiA9IHZhbHVlcy5sZW5ndGg7XG4gIGNvbnN0IG91dCA9IG5ldyBGbG9hdDY0QXJyYXkoQik7XG4gIGlmICh0Z3RMbyA9PT0gdGd0SGkpIHtcbiAgICBsZXQgdG90YWwgPSAwOyBmb3IgKGxldCBpID0gMDsgaSA8IEI7IGkrKykgdG90YWwgKz0gdmFsdWVzW2ldO1xuICAgIG91dFswXSA9IHRvdGFsO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgY29uc3QgdGd0U3RlcCA9ICh0Z3RIaSAtIHRndExvKSAvIEI7XG4gIGlmIChzcmNMbyA9PT0gc3JjSGkpIHtcbiAgICBjb25zdCBpZHggPSBNYXRoLm1pbihNYXRoLm1heChNYXRoLmZsb29yKChzcmNMbyAtIHRndExvKSAvIHRndFN0ZXApLCAwKSwgQiAtIDEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQjsgaSsrKSBvdXRbaWR4XSArPSB2YWx1ZXNbaV07XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuICBjb25zdCBzcmNTdGVwID0gKHNyY0hpIC0gc3JjTG8pIC8gQjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBCOyBpKyspIHtcbiAgICBpZiAoIXZhbHVlc1tpXSkgY29udGludWU7XG4gICAgY29uc3QgY2VudGVyID0gc3JjTG8gKyAoaSArIDAuNSkgKiBzcmNTdGVwO1xuICAgIGxldCBpZHggPSBNYXRoLmZsb29yKChjZW50ZXIgLSB0Z3RMbykgLyB0Z3RTdGVwKTtcbiAgICBpZiAoaWR4IDwgMCkgaWR4ID0gMDsgZWxzZSBpZiAoaWR4ID49IEIpIGlkeCA9IEIgLSAxO1xuICAgIG91dFtpZHhdICs9IHZhbHVlc1tpXTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vLyBDbGFzc2lmaWVzIHRoZSBkYXRhc2V0J3MgZGlzdGluY3QgZHR5cGVzIGludG8gdGhlIGtpbmRzIHRoaXMgd2lkZ2V0IGNhbiBwbG90LCBwbHVzXG4vLyBhbnkgZHR5cGUgaXQgY2FuJ3QgKGUuZy4gYm9vbCkgc28gY2FsbGVycyBjYW4gd2FybiBpbnN0ZWFkIG9mIHNpbGVudGx5IGRyb3BwaW5nIHRoZW0uXG4vLyBkdHlwZVJvd3M6IHJvd3Mgd2l0aCBhIGBkdHlwZWAgZmllbGQsIGFzIHJldHVybmVkIGJ5IGBTRUxFQ1QgRElTVElOQ1QgZHR5cGVgLlxuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5RHR5cGVzKGR0eXBlUm93cywgaGFzRHR5cGUpIHtcbiAgaWYgKCFoYXNEdHlwZSkgcmV0dXJuIHsgcHJlc2VudEtpbmRzOiBbJ3VpbnQnXSwgbXVsdGlLaW5kOiBmYWxzZSwgdW5zdXBwb3J0ZWREdHlwZXM6IFtdIH07XG4gIGNvbnN0IHByZXNlbnRLaW5kcyA9IFsndWludCcsICdpbnQnLCAnZmxvYXQnXS5maWx0ZXIoayA9PiBkdHlwZVJvd3Muc29tZShyID0+IGR0eXBlS2luZChyLmR0eXBlKSA9PT0gaykpO1xuICBjb25zdCB1bnN1cHBvcnRlZER0eXBlcyA9IFsuLi5uZXcgU2V0KGR0eXBlUm93cy5tYXAociA9PiByLmR0eXBlKS5maWx0ZXIoZCA9PiAhZHR5cGVLaW5kKGQpKSldO1xuICByZXR1cm4geyBwcmVzZW50S2luZHMsIG11bHRpS2luZDogcHJlc2VudEtpbmRzLmxlbmd0aCA+IDEsIHVuc3VwcG9ydGVkRHR5cGVzIH07XG59XG5cbi8vIENvbWJpbmVzIHBlci1pbWFnZSBoaXN0b2dyYW1zIGludG8gcGVyLShraW5kLGdyb3VwKSBtZWFucyBvbiBhIHNoYXJlZCBheGlzLCBpbnN0ZWFkIG9mIHN1bW1pbmcgcmF3IGJpbiBpbmRpY2VzLlxuLy8gcmVjb3JkczogW3sga2luZCwgZ3JvdXAsIGNvdW50cywgdG90YWwsIGFNaW4sIGFNYXgsIG5NaW4sIG5NYXgsIG5hbkNvdW50IH1dLlxuLy8gTm9ybWFsaXplZCBieSAoZmluaXRlICsgbmFuKSwgc28gYmlucyArIG5hbkZyYWMgc3VtIHRvIDEgcGVyIGltYWdlLlxuZXhwb3J0IGZ1bmN0aW9uIGFjY3VtdWxhdGVHcm91cEhpc3RvZ3JhbXMocmVjb3JkcywgeyBjb21wdXRlTm9ybWFsaXplZCA9IHRydWUgfSA9IHt9KSB7XG4gIGNvbnN0IGJ1Y2tldHMgPSB7fTtcbiAgZm9yIChjb25zdCByIG9mIHJlY29yZHMpIHtcbiAgICAoYnVja2V0c1tyLmtpbmRdID8/PSB7fSk7XG4gICAgKGJ1Y2tldHNbci5raW5kXVtyLmdyb3VwXSA/Pz0gW10pLnB1c2gocik7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgZm9yIChjb25zdCBraW5kIG9mIE9iamVjdC5rZXlzKGJ1Y2tldHMpKSB7XG4gICAgcmVzdWx0W2tpbmRdID0ge307XG4gICAgY29uc3QgZG9Ob3JtID0gY29tcHV0ZU5vcm1hbGl6ZWQgJiYga2luZCAhPT0gJ2Zsb2F0JztcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIE9iamVjdC5rZXlzKGJ1Y2tldHNba2luZF0pKSB7XG4gICAgICBjb25zdCBpdGVtcyA9IGJ1Y2tldHNba2luZF1bZ3JvdXBdO1xuICAgICAgbGV0IGFMbyA9IEluZmluaXR5LCBhSGkgPSAtSW5maW5pdHksIG5MbyA9IEluZmluaXR5LCBuSGkgPSAtSW5maW5pdHk7XG4gICAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChpdC5hTWluIDwgYUxvKSBhTG8gPSBpdC5hTWluO1xuICAgICAgICBpZiAoaXQuYU1heCA+IGFIaSkgYUhpID0gaXQuYU1heDtcbiAgICAgICAgaWYgKGRvTm9ybSkge1xuICAgICAgICAgIGlmIChpdC5uTWluIDwgbkxvKSBuTG8gPSBpdC5uTWluO1xuICAgICAgICAgIGlmIChpdC5uTWF4ID4gbkhpKSBuSGkgPSBpdC5uTWF4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1bXMgICAgICA9IG5ldyBGbG9hdDY0QXJyYXkoTkJJTlMpO1xuICAgICAgY29uc3Qgc3VtU3EgICAgID0gbmV3IEZsb2F0NjRBcnJheShOQklOUyk7XG4gICAgICBjb25zdCBzdW1zTm9ybSAgPSBkb05vcm0gPyBuZXcgRmxvYXQ2NEFycmF5KE5CSU5TKSA6IG51bGw7XG4gICAgICBjb25zdCBzdW1TcU5vcm0gPSBkb05vcm0gPyBuZXcgRmxvYXQ2NEFycmF5KE5CSU5TKSA6IG51bGw7XG4gICAgICBsZXQgbmFuU3VtID0gMDtcblxuICAgICAgZm9yIChjb25zdCBpdCBvZiBpdGVtcykge1xuICAgICAgICBjb25zdCBuYW5Db3VudCA9IGl0Lm5hbkNvdW50IHx8IDA7XG4gICAgICAgIGNvbnN0IGludiA9IDEgLyAoaXQudG90YWwgKyBuYW5Db3VudCk7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgRmxvYXQ2NEFycmF5KGl0LmNvdW50cy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspIHZbaV0gPSBpdC5jb3VudHNbaV0gKiBpbnY7XG4gICAgICAgIG5hblN1bSArPSBuYW5Db3VudCAqIGludjtcblxuICAgICAgICBjb25zdCB2QSA9IHJlbWFwVG9BeGlzKHYsIGl0LmFNaW4sIGl0LmFNYXgsIGFMbywgYUhpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOQklOUzsgaSsrKSB7IHN1bXNbaV0gKz0gdkFbaV07IHN1bVNxW2ldICs9IHZBW2ldICogdkFbaV07IH1cblxuICAgICAgICBpZiAoZG9Ob3JtKSB7XG4gICAgICAgICAgY29uc3Qgdk4gPSByZW1hcFRvQXhpcyh2LCBpdC5uTWluLCBpdC5uTWF4LCBuTG8sIG5IaSk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOQklOUzsgaSsrKSB7IHN1bXNOb3JtW2ldICs9IHZOW2ldOyBzdW1TcU5vcm1baV0gKz0gdk5baV0gKiB2TltpXTsgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdFtraW5kXVtncm91cF0gPSB7XG4gICAgICAgIGNvdW50OiBpdGVtcy5sZW5ndGgsXG4gICAgICAgIGFNaW46IGFMbywgYU1heDogYUhpLFxuICAgICAgICBuTWluOiBkb05vcm0gPyBuTG8gOiBhTG8sIG5NYXg6IGRvTm9ybSA/IG5IaSA6IGFIaSxcbiAgICAgICAgc3Vtcywgc3VtU3EsXG4gICAgICAgIHN1bXNOb3JtOiBzdW1zTm9ybSA/PyBzdW1zLCBzdW1TcU5vcm06IHN1bVNxTm9ybSA/PyBzdW1TcSxcbiAgICAgICAgbmFuU3VtLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gU291cmNlIHRhYmxlICsgV0hFUkUgcmVzcGVjdGluZyBwaW5uZWQgZGltcyAocHBfYWxsIGF0IHRoZSByaWdodCBvYnNfbGV2ZWwpLlxuLy8gVGhlIHRpbGUgcHJldmlldyBhbmQgdGhlIGZ1bGwgY2FyZCBzaGFyZSBpdCwgc28gYSBwaW5uZWQgZGltIG1vdmVzIGJvdGggdG9cbi8vIHRoZSBzYW1lIHNsaWNlLlxuZnVuY3Rpb24gaGlzdFNvdXJjZShjdHgpIHtcbiAgY29uc3QgcGFydHMgPSBjdHguc3FsLmRpbVN1YnNldFdoZXJlKHsgZml4ZWQ6IGN0eC5zcWwucGlubmVkRGltcygpIH0pO1xuICByZXR1cm4geyB0YWJsZTogJ3BwX2FsbCcsIHdoZXJlOiBwYXJ0cy5sZW5ndGggPyBgV0hFUkUgJHtwYXJ0cy5qb2luKCcgQU5EICcpfWAgOiAnJyB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAnaGlzdG9ncmFtJyxcbiAgcmVxdWlyZWRfaW5wdXRzOiBbJ2hpc3RvZ3JhbV9jb3VudHMnXSxcbiAgaW5wdXRzOiBbJ2hpc3RvZ3JhbV9taW4nLCAnaGlzdG9ncmFtX21heCcsICdoaXN0b2dyYW1fbmFuX2NvdW50JywgJ2R0eXBlJywgJ25hbWUnXSxcbiAgZ3JvdXA6ICdEYXRhc2V0IFN0YXRzJyxcbiAgc2NvcGU6ICdpbWFnZScsXG4gIGxhYmVsOiAnUGl4ZWwgVmFsdWUgSGlzdG9ncmFtcycsXG4gIHNob3J0TGFiZWw6ICdIaXN0b2dyYW1zJyxcbiAgaW5mbzogW1xuICAgICdIaXN0b2dyYW1zIGFyZSBjb21wdXRlZCBwZXIgaW1hZ2UgKDI1NiBiaW5zKSBhbmQgYXZlcmFnZWQgcGVyIGdyb3VwLicsXG4gICAgJ0VhY2ggaW1hZ2UgaXMgYXJlYS1ub3JtYWxpemVkIGJlZm9yZSBhdmVyYWdpbmcsIHNvIGltYWdlIHNpemUgZG9lcyBub3QgYWZmZWN0IHRoZSByZXN1bHQuJyxcbiAgICAnQSAqKk5hTioqIGJ1Y2tldCBsZWZ0IG9mIHRoZSByZWFsIGRhdGEgc2hvd3MgdGhlIGZyYWN0aW9uIG9mIHBpeGVscyBleGNsdWRlZCBhcyBOYU4sIGlmIGFueS4nLFxuICAgICcnLFxuICAgICdJZiB0aGUgZGF0YXNldCBtaXhlcyB1bnNpZ25lZCBpbnRlZ2VyLCBzaWduZWQgaW50ZWdlciwgYW5kL29yIGZsb2F0aW5nLXBvaW50IGltYWdlcywgZWFjaCBraW5kIGdldHMgaXRzIG93biBwbG90LicsXG4gICAgJycsXG4gICAgJyoqRGlzcGxheSBtb2RlKiogKGludGVnZXIgcGFuZWxzIG9ubHkpJyxcbiAgICAnLSAqKkFjdHVhbCB2YWx1ZXMqKiDigJMgeC1heGlzIHNob3dzIHJlYWwgcGl4ZWwgdmFsdWVzLicsXG4gICAgJy0gKipEdHlwZSByYW5nZSoqIOKAkyB4LWF4aXMgbm9ybWFsaXplZCB0byB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZiB0aGUgcGl4ZWwgdHlwZSAodW5zaWduZWQgaW50ZWdlcnM6IDAgdG8gMSwgc2lnbmVkIGludGVnZXJzOiAtMSB0byAxKS4gVXNlZnVsIGZvciBjb21wYXJpbmcgaW1hZ2VzIGFjcm9zcyBiaXQgZGVwdGhzLicsXG4gICAgJycsXG4gICAgJ0Zsb2F0IGltYWdlcyBhbHdheXMgc2hvdyBhY3R1YWwgdmFsdWVzLicsXG4gICAgJycsXG4gICAgJyoqU3ByZWFkKiog4oCTIHNoYWRlZCArLy0xIHN0ZCBiYW5kIGFyb3VuZCB0aGUgZ3JvdXAgbWVhbi4nLFxuICAgICdBIHdpZGVyIGJhbmQgbWVhbnMgbW9yZSB2YXJpYXRpb24gYmV0d2VlbiBpbWFnZXMgaW4gdGhhdCBncm91cC4nLFxuICAgICcnLFxuICAgICcqKlNob3cgaW5kaXZpZHVhbCBpbWFnZXMqKiDigJMgdmlzaWJsZSB3aGVuIG9uZSBncm91cCBpcyBzZWxlY3RlZCB3aXRoIDUwIG9yIGZld2VyIGltYWdlcy4nLFxuICAgICdSZXBsYWNlcyB0aGUgZ3JvdXAgbWVhbiB3aXRoIG9uZSBsaW5lIHBlciBpbWFnZS4nLFxuICBdLmpvaW4oJ1xcbicpLFxuXG4gIHJlcXVpcmVzKHNjaGVtYSkge1xuICAgIHJldHVybiBzY2hlbWEuYmxvYkNvbHMuaW5jbHVkZXMoJ2hpc3RvZ3JhbV9jb3VudHMnKTtcbiAgfSxcblxuICBhc3luYyBvdmVydmlld01lc3NhZ2UoY3R4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFt7IHRvdGFsLCBuIH1dID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhcbiAgICAgICAgYFNFTEVDVCBDT1VOVCgqKSBBUyB0b3RhbCwgQ09VTlQoXCJoaXN0b2dyYW1fY291bnRzXCIpIEFTIG4gRlJPTSBwcF9kYXRhICR7Y3R4LndoZXJlfWAsXG4gICAgICApO1xuICAgICAgY29uc3QgdG90YWxOID0gTnVtYmVyKHRvdGFsID8/IDApLCB3aXRoSGlzdCA9IE51bWJlcihuID8/IDApO1xuICAgICAgaWYgKHdpdGhIaXN0IDwgdG90YWxOKVxuICAgICAgICByZXR1cm4geyB0ZXh0OiBgT25seSA8c3Ryb25nPiR7d2l0aEhpc3QudG9Mb2NhbGVTdHJpbmcoKX08L3N0cm9uZz4vJHt0b3RhbE4udG9Mb2NhbGVTdHJpbmcoKX0gaGF2ZSBoaXN0b2dyYW1zLmAsIHdhcm5pbmc6IHRydWUgfTtcbiAgICAgIHJldHVybiAnQ29tcGFyZSBwaXhlbCBpbnRlbnNpdHkgZGlzdHJpYnV0aW9ucyBhY3Jvc3MgZ3JvdXBzLic7XG4gICAgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG4gIH0sXG5cbiAgYXN5bmMgb3ZlcnZpZXdQbG90KGNvbnRhaW5lciwgY3R4KSB7XG4gICAgY29uc3QgeyBncm91cEV4cHI6IGdlRm4gfSA9IGN0eC5zcWw7XG4gICAgY29uc3QgeyBleHRyYWN0QmluYXJ5IH0gICA9IGN0eC5kYXRhO1xuICAgIGNvbnN0IGhhc1JhbmdlICAgID0gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdoaXN0b2dyYW1fbWluJykgJiYgY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdoaXN0b2dyYW1fbWF4Jyk7XG4gICAgY29uc3QgaGFzRHR5cGUgICAgPSBjdHguc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ2R0eXBlJyk7XG4gICAgY29uc3QgaGFzTmFuQ291bnQgPSBjdHguc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ2hpc3RvZ3JhbV9uYW5fY291bnQnKTtcbiAgICBjb25zdCByYW5nZUNvbHMgICA9IGhhc1JhbmdlICAgID8gJywgXCJoaXN0b2dyYW1fbWluXCIsIFwiaGlzdG9ncmFtX21heFwiJyA6ICcnO1xuICAgIGNvbnN0IGR0eXBlQ29sICAgID0gaGFzRHR5cGUgICAgPyAnLCBcImR0eXBlXCInICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgIGNvbnN0IG5hbkNvbCAgICAgID0gaGFzTmFuQ291bnQgPyAnLCBcImhpc3RvZ3JhbV9uYW5fY291bnRcIicgICAgICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgeyB0YWJsZSwgd2hlcmUgfSA9IGhpc3RTb3VyY2UoY3R4KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdHgucXVlcnkoYFxuICAgICAgU0VMRUNUICR7Z2VGbigpfSwgXCJoaXN0b2dyYW1fY291bnRzXCIke3JhbmdlQ29sc30ke2R0eXBlQ29sfSR7bmFuQ29sfVxuICAgICAgRlJPTSAke3RhYmxlfSAke3doZXJlfVxuICAgICAgUVVBTElGWSBST1dfTlVNQkVSKCkgT1ZFUiAoUEFSVElUSU9OIEJZIF9fZ3JvdXBfXyBPUkRFUiBCWSByYW5kb20oKSkgPD0gMzAwXG4gICAgYCk7XG4gICAgY29uc3Qgcm93cyA9IHJlc3VsdC50b0FycmF5KCk7XG4gICAgaWYgKCFyb3dzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgcmVjb3JkcyA9IFtdO1xuICAgIGNvbnN0IGtpbmRDb3VudHMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICBjb25zdCBraW5kID0gaGFzRHR5cGUgPyBkdHlwZUtpbmQocm93LmR0eXBlKSA6ICd1aW50JztcbiAgICAgIGlmICgha2luZCkgY29udGludWU7XG4gICAgICBjb25zdCBjb3VudHMgPSBleHRyYWN0QmluYXJ5KHJvdy5oaXN0b2dyYW1fY291bnRzKTtcbiAgICAgIGlmICghY291bnRzPy5sZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgdG90YWwgPSBoaXN0VG90YWwoY291bnRzKTtcbiAgICAgIGNvbnN0IG5hbkNvdW50ID0gaGFzTmFuQ291bnQgPyBOdW1iZXIocm93Lmhpc3RvZ3JhbV9uYW5fY291bnQgPz8gMCkgOiAwO1xuICAgICAgaWYgKHRvdGFsIDw9IDAgJiYgbmFuQ291bnQgPD0gMCkgY29udGludWU7IC8vIG5vIHBpeGVscyBhdCBhbGwgLSBub3RoaW5nIHRvIHNob3csIGV2ZW4gYXMgTmFOXG4gICAgICBjb25zdCBhTWluID0gaGFzUmFuZ2UgPyBOdW1iZXIocm93Lmhpc3RvZ3JhbV9taW4pIDogMDtcbiAgICAgIGNvbnN0IGFNYXggPSBoYXNSYW5nZSA/IE51bWJlcihyb3cuaGlzdG9ncmFtX21heCkgOiBOQklOUyAtIDE7XG4gICAgICByZWNvcmRzLnB1c2goeyBraW5kLCBncm91cDogU3RyaW5nKHJvdy5fX2dyb3VwX18pLCBjb3VudHMsIHRvdGFsLCBhTWluLCBhTWF4LCBuYW5Db3VudCB9KTtcbiAgICAgIGtpbmRDb3VudHNba2luZF0gPSAoa2luZENvdW50c1traW5kXSB8fCAwKSArIDE7XG4gICAgfVxuICAgIGlmICghcmVjb3Jkcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIE1pbmkgcHJldmlldyBpcyBhIHNpbmdsZSBjb21iaW5lZCBjaGFydCDigJQgcGxvdCBvbmx5IHRoZSBkYXRhc2V0J3MgZG9taW5hbnQgcGl4ZWwga2luZC5cbiAgICBjb25zdCBkb21pbmFudEtpbmQgPSBPYmplY3Qua2V5cyhraW5kQ291bnRzKS5zb3J0KChhLCBiKSA9PiBraW5kQ291bnRzW2JdIC0ga2luZENvdW50c1thXSlbMF07XG4gICAgY29uc3Qga2luZERhdGEgPSBhY2N1bXVsYXRlR3JvdXBIaXN0b2dyYW1zKHJlY29yZHMuZmlsdGVyKHIgPT4gci5raW5kID09PSBkb21pbmFudEtpbmQpLCB7IGNvbXB1dGVOb3JtYWxpemVkOiBmYWxzZSB9KTtcbiAgICBjb25zdCBnZEJ5R3JvdXAgPSBraW5kRGF0YVtkb21pbmFudEtpbmRdID8/IHt9O1xuXG4gICAgY29uc3QgZ3JvdXBzID0gY3R4Lmdyb3Vwcy5maWx0ZXIoZyA9PiBnZEJ5R3JvdXBbZ10/LmNvdW50KTtcbiAgICBpZiAoIWdyb3Vwcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHRyYWNlcyA9IGdyb3Vwcy5tYXAoZyA9PiB7XG4gICAgICBjb25zdCBnZCA9IGdkQnlHcm91cFtnXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdzY2F0dGVyJywgbW9kZTogJ2xpbmVzJywgZmlsbDogJ3RvemVyb3knLCBvcGFjaXR5OiAwLjYsXG4gICAgICAgIHg6IGJpblhzKGdkLmFNaW4sIGdkLmFNYXgpLCB5OiBBcnJheS5mcm9tKGdkLnN1bXMsIHYgPT4gdiAvIGdkLmNvdW50KSxcbiAgICAgICAgbGluZTogeyBjb2xvcjogY3R4LmNvbG9yLmdyb3VwKGcpLCB3aWR0aDogMS41IH0sIGhvdmVyaW5mbzogJ3NraXAnLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIE5hTiBidWNrZXQgb24gaXRzIG93biBzbWFsbCBheGlzLCBzYW1lIHRyaWNrIGFzIHRoZSBmdWxsIHdpZGdldC5cbiAgICBsZXQgaGFzTmFuQmFyID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBnIG9mIGdyb3Vwcykge1xuICAgICAgY29uc3QgZ2QgPSBnZEJ5R3JvdXBbZ107XG4gICAgICBjb25zdCBuYW5NZWFuID0gZ2QubmFuU3VtIC8gZ2QuY291bnQ7XG4gICAgICBpZiAoIShuYW5NZWFuID4gMCkpIGNvbnRpbnVlO1xuICAgICAgaGFzTmFuQmFyID0gdHJ1ZTtcbiAgICAgIHRyYWNlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2JhcicsIHhheGlzOiAneDInLCB4OiBbMF0sIHk6IFtuYW5NZWFuXSwgd2lkdGg6IFswLjVdLFxuICAgICAgICBtYXJrZXI6IHsgY29sb3I6IGN0eC5jb2xvci5ncm91cChnKSB9LCBvcGFjaXR5OiAwLjYsIGhvdmVyaW5mbzogJ3NraXAnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3R4LnBsb3QuYXBwZW5kTWluaShjb250YWluZXIsIHRyYWNlcywge1xuICAgICAgeGF4aXM6IHsgdGl0bGU6ICdpbnRlbnNpdHknLCAuLi4oaGFzTmFuQmFyID8geyBkb21haW46IFswLCAwLjg2XSB9IDoge30pIH0sXG4gICAgICB5YXhpczogeyBzaG93dGlja2xhYmVsczogZmFsc2UgfSxcbiAgICAgIC4uLihoYXNOYW5CYXIgPyB7IHhheGlzMjogeyBkb21haW46IFswLjkyLCAxXSwgYW5jaG9yOiAneScsIHJhbmdlOiBbLTAuNSwgMC41XSwgdGlja3ZhbHM6IFswXSwgdGlja3RleHQ6IFsnTmFOJ10gfSB9IDoge30pLFxuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIGFzeW5jIHJlbmRlcihjb250YWluZXIsIGN0eCkge1xuICAgIC8vIFBpbm5lZCBkaW1zIG5hcnJvdyBldmVyeSBwb2ludCB0byBvbmUgc2xpY2UgKHNlZSBoaXN0U291cmNlIGFib3ZlKS5cbiAgICBjdHgucGxvdC5zeW5jUGlubmVkU2NvcGVCYWRnZShjb250YWluZXIsIGN0eCk7XG5cbiAgICBjb25zdCBoYXNSYW5nZSA9IGN0eC5zY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnaGlzdG9ncmFtX21pbicpICYmIGN0eC5zY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnaGlzdG9ncmFtX21heCcpO1xuICAgIGNvbnN0IGhhc0R0eXBlID0gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdkdHlwZScpO1xuICAgIGNvbnN0IGhhc05hbWVzID0gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCduYW1lJyk7XG4gICAgY29uc3QgaGFzUGF0aCAgPSBjdHguc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ3BhdGgnKTtcbiAgICBjb25zdCBoYXNOYW5Db3VudCA9IGN0eC5zY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnaGlzdG9ncmFtX25hbl9jb3VudCcpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFthdmFpbFJvd10gPSBhd2FpdCBjdHgucXVlcnlSb3dzKFxuICAgICAgICBgU0VMRUNUIENPVU5UKCopIEFTIHRvdGFsLCBDT1VOVChcImhpc3RvZ3JhbV9jb3VudHNcIikgQVMgbiBGUk9NIHBwX2RhdGEgJHtjdHgud2hlcmV9YFxuICAgICAgKTtcbiAgICAgIGN0eC5wbG90LmRhdGFBdmFpbGFiaWxpdHlXYXJuaW5nKGNvbnRhaW5lcixcbiAgICAgICAgW3sgbGFiZWw6ICdQaXhlbCBWYWx1ZSBIaXN0b2dyYW1zJywgcHJlc2VudDogTnVtYmVyKGF2YWlsUm93Lm4pIH1dLFxuICAgICAgICBOdW1iZXIoYXZhaWxSb3cudG90YWwpLCB7IHVuaXQ6ICdpbWFnZXMnIH0pO1xuXG4gICAgICBjb25zdCB7IGdyb3VwRXhwcjogZ2VGbiB9ID0gY3R4LnNxbDtcblxuICAgICAgLy8gUGFyYWxsZWwgc2V0dXAgcXVlcmllcy5cbiAgICAgIGNvbnN0IFtkdHlwZVJvd3MsIGltYWdlUm93c10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGhhc0R0eXBlID8gY3R4LnF1ZXJ5Um93cyhgU0VMRUNUIERJU1RJTkNUIFwiZHR5cGVcIiBGUk9NIHBwX2RhdGEgJHtjdHgud2hlcmV9YCkgOiBbXSxcbiAgICAgICAgaGFzUGF0aCA/IGN0eC5xdWVyeVJvd3MoXG4gICAgICAgICAgYFNFTEVDVCAke2ltYWdlS2V5KGN0eCl9IEFTIGtleSwgJHtpbWFnZUxhYmVsU3FsKGN0eCl9IEFTIGxhYmVsXG4gICAgICAgICAgIEZST00gcHBfZGF0YSAke2N0eC53aGVyZX0gT1JERVIgQlkgMiBMSU1JVCAke01BWF9JTUFHRV9PUFRJT05TfWApIDogW10sXG4gICAgICBdKTtcblxuICAgICAgY29uc3QgeyBwcmVzZW50S2luZHMsIG11bHRpS2luZCwgdW5zdXBwb3J0ZWREdHlwZXMgfSA9IGNsYXNzaWZ5RHR5cGVzKGR0eXBlUm93cywgaGFzRHR5cGUpO1xuXG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYnVpbGRDb250cm9scyhjdHgsIHsgaGFzUGF0aCwgaW1hZ2VSb3dzIH0pKTtcblxuICAgICAgY29uc3Qgc2FtcGxpbmdXYXJuaW5nID0gd2FybmluZ0Jhbm5lcignJywgMTYpO1xuICAgICAgc2FtcGxpbmdXYXJuaW5nLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2FtcGxpbmdXYXJuaW5nKTtcblxuICAgICAgaWYgKG11bHRpS2luZCkge1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQod2FybmluZ0Jhbm5lcihcbiAgICAgICAgICAnVGhpcyBkYXRhc2V0IG1peGVzIGRpZmZlcmVudCBraW5kcyBvZiBwaXhlbCB0eXBlcyAoZS5nLiBpbnRlZ2VyIGFuZCBmbG9hdCkuICdcbiAgICAgICAgICArICdUaGVpciB2YWx1ZSBzY2FsZXMgYXJlIG5vdCBkaXJlY3RseSBjb21wYXJhYmxlLCBzbyBlYWNoIGtpbmQgaXMgc2hvd24gaW4gaXRzIG93biBwbG90IGJlbG93LicsXG4gICAgICAgICAgMjAsXG4gICAgICAgICkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodW5zdXBwb3J0ZWREdHlwZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh3YXJuaW5nQmFubmVyKFxuICAgICAgICAgIGBJbWFnZXMgd2l0aCBwaXhlbCB0eXBlKHMpICR7dW5zdXBwb3J0ZWREdHlwZXMuam9pbignLCAnKX0gYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyB3aWRnZXQgYW5kIGFyZSBleGNsdWRlZC5gLFxuICAgICAgICAgIDIwLFxuICAgICAgICApKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcmVzZW50S2luZHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG5vRGF0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBub0RhdGEuY2xhc3NOYW1lID0gJ25vLWRhdGEnO1xuICAgICAgICBub0RhdGEudGV4dENvbnRlbnQgPSAnTm8gc3VwcG9ydGVkIHBpeGVsIHR5cGVzIHRvIGRpc3BsYXkuJztcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5vRGF0YSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmFuV2FybmluZyA9IGhhc05hbkNvdW50ID8gd2FybmluZ0Jhbm5lcignJywgMjApIDogbnVsbDtcbiAgICAgIGlmIChuYW5XYXJuaW5nKSB7IG5hbldhcm5pbmcuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgY29udGFpbmVyLmFwcGVuZENoaWxkKG5hbldhcm5pbmcpOyB9XG5cbiAgICAgIC8vIE9uZSBwYW5lbCBwZXIga2luZCDigJQgaW50L3VpbnQgZ2V0IGEgcGVyLXBhbmVsIG1vZGUgdG9nZ2xlLCBmbG9hdCBkb2VzIG5vdC5cbiAgICAgIGNvbnN0IHBhbmVscyA9IHt9O1xuICAgICAgZm9yIChjb25zdCBraW5kIG9mIHByZXNlbnRLaW5kcykge1xuICAgICAgICBjb25zdCB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHdyYXAuc3R5bGUubWFyZ2luQm90dG9tID0gJzMycHgnO1xuXG4gICAgICAgIGlmIChtdWx0aUtpbmQpIHtcbiAgICAgICAgICBjb25zdCBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgaC5zdHlsZS5jc3NUZXh0ID0gJ2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MS4wNWVtO21hcmdpbi1ib3R0b206OHB4JztcbiAgICAgICAgICBoLnRleHRDb250ZW50ICAgPSBgJHtLSU5EX0xBQkVMW2tpbmRdfSBpbWFnZXNgO1xuICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdG9nZ2xlRWwgPSBudWxsLCBsYWJlbExlZnQgPSBudWxsLCBsYWJlbFJpZ2h0ID0gbnVsbDtcbiAgICAgICAgaWYgKGtpbmQgIT09ICdmbG9hdCcpIHtcbiAgICAgICAgICBjb25zdCBub3JtTGFiZWwgID0ga2luZCA9PT0gJ2ludCcgPyAnRHR5cGUgcmFuZ2UgKOKIkjEgdG8gMSwgMjU2IGJpbnMpJyA6ICdEdHlwZSByYW5nZSAoMCB0byAxLCAyNTYgYmlucyknO1xuICAgICAgICAgIGNvbnN0IHRvZ2dsZVdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICB0b2dnbGVXcmFwLnN0eWxlLmNzc1RleHQgPSAnZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttYXJnaW4tYm90dG9tOjE0cHg7Zm9udC1zaXplOjAuODhlbTtjb2xvcjojNDQ0JztcblxuICAgICAgICAgIGNvbnN0IHN3aXRjaFdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICBzd2l0Y2hXcmFwLmNsYXNzTmFtZSA9ICdmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG1iLTAnO1xuICAgICAgICAgIHRvZ2dsZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICB0b2dnbGVFbC5jbGFzc05hbWUgPSAnZm9ybS1jaGVjay1pbnB1dCc7XG4gICAgICAgICAgdG9nZ2xlRWwudHlwZSAgICAgID0gJ2NoZWNrYm94JztcbiAgICAgICAgICB0b2dnbGVFbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnc3dpdGNoJyk7XG4gICAgICAgICAgdG9nZ2xlRWwuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgICAgIHN3aXRjaFdyYXAuYXBwZW5kQ2hpbGQodG9nZ2xlRWwpO1xuXG4gICAgICAgICAgbGFiZWxMZWZ0ICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICBsYWJlbExlZnQudGV4dENvbnRlbnQgPSAnQWN0dWFsIHZhbHVlcyAoMjU2IGJpbnMpJztcbiAgICAgICAgICBsYWJlbFJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgIGxhYmVsUmlnaHQudGV4dENvbnRlbnQgPSBub3JtTGFiZWw7XG5cbiAgICAgICAgICB0b2dnbGVXcmFwLmFwcGVuZChsYWJlbExlZnQsIHN3aXRjaFdyYXAsIGxhYmVsUmlnaHQpO1xuICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQodG9nZ2xlV3JhcCk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGlLaW5kKSB7XG4gICAgICAgICAgY29uc3Qgbm90ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgIG5vdGUuc3R5bGUuY3NzVGV4dCA9ICdmb250LXNpemU6MC44MmVtO2NvbG9yOiM4ODg7bWFyZ2luLWJvdHRvbToxMHB4JztcbiAgICAgICAgICBub3RlLnRleHRDb250ZW50ID0gJ0Zsb2F0IGltYWdlcyBhbHdheXMgc2hvdyBhY3R1YWwgcGl4ZWwgdmFsdWVzIOKAlCB0aGVyZSBpcyBubyBmaXhlZCByZXByZXNlbnRhYmxlIHJhbmdlLic7XG4gICAgICAgICAgd3JhcC5hcHBlbmRDaGlsZChub3RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsb3REaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgd3JhcC5hcHBlbmRDaGlsZChwbG90RGl2KTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHdyYXApO1xuICAgICAgICBwYW5lbHNba2luZF0gPSB7IHBsb3REaXYsIHRvZ2dsZUVsLCBsYWJlbExlZnQsIGxhYmVsUmlnaHQgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FjaGVkIGFjcm9zcyBtb2RlL3NwcmVhZCB0b2dnbGVzIOKAlCByZS1wb3B1bGF0ZWQgb24gZXZlcnkgb3RoZXIgY29udHJvbCBjaGFuZ2UuXG4gICAgICBsZXQga2luZERhdGEgICAgICA9IG51bGw7IC8vIHsgW2tpbmRdOiB7IFtncm91cF06IHsgc3Vtcywgc3VtU3EsIHN1bXNOb3JtLCBzdW1TcU5vcm0sIGNvdW50LCBhTWluLCBhTWF4LCBuTWluLCBuTWF4IH0gfSB9XG4gICAgICBsZXQgaW1hZ2VPdmVybGF5ICA9IG51bGw7IC8vIHsgeXMsIGFNaW4sIGFNYXgsIG5NaW4sIG5NYXgsIGtpbmQsIGxhYmVsIH1cbiAgICAgIGxldCBpbmRpdkltYWdlcyAgID0gbnVsbDsgLy8geyByb3dzOiBbLi4uXSwgb3ZlcmZsb3c6IGJvb2wgfSB8IG51bGxcblxuICAgICAgY29uc3QgZmV0Y2hBbmRBY2N1bXVsYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHEgfSA9IGN0eC5zcWw7XG4gICAgICAgIGNvbnN0IHsgZXh0cmFjdEJpbmFyeSB9ID0gY3R4LmRhdGE7XG4gICAgICAgIGNvbnN0IGN0cmwgPSByZWFkQ29udHJvbHMoY29udGFpbmVyKTtcblxuICAgICAgICBjb25zdCB7IHRhYmxlOiBzcmNUYWJsZSwgd2hlcmU6IHNyY1doZXJlIH0gPSBoaXN0U291cmNlKGN0eCk7XG4gICAgICAgIGxldCB3aGVyZSA9IHNyY1doZXJlO1xuICAgICAgICBpZiAoY3RybC5zZWxlY3RlZEdyb3Vwcy5sZW5ndGggJiYgY3R4LnN0YXRlLmdyb3VwQ29sKSB7XG4gICAgICAgICAgY29uc3QgbGlzdCA9IGN0cmwuc2VsZWN0ZWRHcm91cHMubWFwKGcgPT4gYCcke2cucmVwbGFjZSgvJy9nLCBcIicnXCIpfSdgKS5qb2luKCcsICcpO1xuICAgICAgICAgIGNvbnN0IGV4dHJhID0gYCR7Y3R4LnNxbC5ncm91cENvbCgpfSBJTiAoJHtsaXN0fSlgO1xuICAgICAgICAgIHdoZXJlID0gd2hlcmUgPyBgJHt3aGVyZX0gQU5EICR7ZXh0cmF9YCA6IGBXSEVSRSAke2V4dHJhfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYW5nZVNlbCA9IGhhc1JhbmdlICAgID8gJywgXCJoaXN0b2dyYW1fbWluXCIsIFwiaGlzdG9ncmFtX21heFwiJyA6ICcnO1xuICAgICAgICBjb25zdCBkdHlwZVNlbCA9IGhhc0R0eXBlICAgID8gJywgXCJkdHlwZVwiJyAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgY29uc3QgbmFuU2VsICAgPSBoYXNOYW5Db3VudCA/ICcsIFwiaGlzdG9ncmFtX25hbl9jb3VudFwiJyAgICAgICAgICAgOiAnJztcbiAgICAgICAgY29uc3QgcmVzdWx0ICAgPSBhd2FpdCBjdHgucXVlcnkoXG4gICAgICAgICAgYFNFTEVDVCAke2dlRm4oKX0sIFwiaGlzdG9ncmFtX2NvdW50c1wiJHtyYW5nZVNlbH0ke2R0eXBlU2VsfSR7bmFuU2VsfVxuICAgICAgICAgICBGUk9NICR7c3JjVGFibGV9ICR7d2hlcmV9XG4gICAgICAgICAgIFFVQUxJRlkgUk9XX05VTUJFUigpIE9WRVIgKFBBUlRJVElPTiBCWSBfX2dyb3VwX18gT1JERVIgQlkgcmFuZG9tKCkpIDw9ICR7Y3RybC5zYW1wbGVzUGVyR3JvdXB9YFxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3dzID0gcmVzdWx0LnRvQXJyYXkoKTtcblxuICAgICAgICBjb25zdCByZWNvcmRzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICBjb25zdCBraW5kID0gaGFzRHR5cGUgPyBkdHlwZUtpbmQocm93LmR0eXBlKSA6ICd1aW50JztcbiAgICAgICAgICBpZiAoIWtpbmQpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IGNvdW50cyA9IGV4dHJhY3RCaW5hcnkocm93Lmhpc3RvZ3JhbV9jb3VudHMpO1xuICAgICAgICAgIGlmICghY291bnRzPy5sZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHRvdGFsID0gaGlzdFRvdGFsKGNvdW50cyk7XG4gICAgICAgICAgY29uc3QgbmFuQ291bnQgPSBoYXNOYW5Db3VudCA/IE51bWJlcihyb3cuaGlzdG9ncmFtX25hbl9jb3VudCA/PyAwKSA6IDA7XG4gICAgICAgICAgaWYgKHRvdGFsIDw9IDAgJiYgbmFuQ291bnQgPD0gMCkgY29udGludWU7IC8vIG5vIHBpeGVscyBhdCBhbGwgLSBub3RoaW5nIHRvIHNob3csIGV2ZW4gYXMgTmFOXG5cbiAgICAgICAgICBjb25zdCBhTWluICA9IGhhc1JhbmdlID8gTnVtYmVyKHJvdy5oaXN0b2dyYW1fbWluKSA6IDA7XG4gICAgICAgICAgY29uc3QgYU1heCAgPSBoYXNSYW5nZSA/IE51bWJlcihyb3cuaGlzdG9ncmFtX21heCkgOiBOQklOUyAtIDE7XG4gICAgICAgICAgY29uc3QgZE5vcm0gPSBEVFlQRV9OT1JNW3Jvdy5kdHlwZV07XG4gICAgICAgICAgY29uc3Qgbk1pbiAgPSBkTm9ybSAhPSBudWxsID8gYU1pbiAvIGROb3JtIDogYU1pbjtcbiAgICAgICAgICBjb25zdCBuTWF4ICA9IGROb3JtICE9IG51bGwgPyBhTWF4IC8gZE5vcm0gOiBhTWF4O1xuXG4gICAgICAgICAgcmVjb3Jkcy5wdXNoKHsga2luZCwgZ3JvdXA6IFN0cmluZyhyb3cuX19ncm91cF9fKSwgY291bnRzLCB0b3RhbCwgYU1pbiwgYU1heCwgbk1pbiwgbk1heCwgbmFuQ291bnQgfSk7XG4gICAgICAgIH1cbiAgICAgICAga2luZERhdGEgPSBhY2N1bXVsYXRlR3JvdXBIaXN0b2dyYW1zKHJlY29yZHMpO1xuXG4gICAgICAgIGNvbnN0IHJvd3NQZXJHcm91cCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHIgb2Ygcm93cykge1xuICAgICAgICAgIGNvbnN0IGcgPSBTdHJpbmcoci5fX2dyb3VwX18pO1xuICAgICAgICAgIHJvd3NQZXJHcm91cFtnXSA9IChyb3dzUGVyR3JvdXBbZ10gfHwgMCkgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhcHBlZEdyb3VwcyA9IE9iamVjdC5rZXlzKHJvd3NQZXJHcm91cClcbiAgICAgICAgICAuZmlsdGVyKGcgPT4gcm93c1Blckdyb3VwW2ddID49IGN0cmwuc2FtcGxlc1Blckdyb3VwKTtcbiAgICAgICAgaWYgKGNhcHBlZEdyb3Vwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzYW1wbGluZ1dhcm5pbmcuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBhbGxDYXBwZWQgPSBjYXBwZWRHcm91cHMubGVuZ3RoID09PSBPYmplY3Qua2V5cyhyb3dzUGVyR3JvdXApLmxlbmd0aDtcbiAgICAgICAgICBsZXQgbXNnID0gYFJlc3VsdHMgYXJlIHNhbXBsZWQ6IHNob3dpbmcgdXAgdG8gJHtjdHJsLnNhbXBsZXNQZXJHcm91cC50b0xvY2FsZVN0cmluZygpfSBpbWFnZXMgcGVyIGdyb3VwYDtcbiAgICAgICAgICBpZiAoIWFsbENhcHBlZClcbiAgICAgICAgICAgIG1zZyArPSBgLiBHcm91cHMgYXQgbGltaXQ6ICR7Y2FwcGVkR3JvdXBzLm1hcChnID0+IGN0eC5ncm91cExhYmVsKGcpKS5qb2luKCcsICcpfWA7XG4gICAgICAgICAgc2FtcGxpbmdXYXJuaW5nLnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLnRleHRDb250ZW50ID0gbXNnICsgJy4gSW5jcmVhc2UgXCJNYXggc2FtcGxlc1wiIGZvciBmdWxsIGFjY3VyYWN5Lic7XG4gICAgICAgICAgc2FtcGxpbmdXYXJuaW5nLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluZGl2aWR1YWwtaW1hZ2UgbGluZXMg4oCUIG9ubHkgd2hlbiBvbmUgZ3JvdXAgaXMgYWN0aXZlIGFuZCBmZXcgZW5vdWdoIGltYWdlcy5cbiAgICAgICAgaW5kaXZJbWFnZXMgPSBudWxsO1xuICAgICAgICBjb25zdCBpc1NpbmdsZUdyb3VwID0gY3RybC5zZWxlY3RlZEdyb3Vwcy5sZW5ndGggPT09IDEgfHxcbiAgICAgICAgICAoY3RybC5zZWxlY3RlZEdyb3Vwcy5sZW5ndGggPT09IDAgJiYgY3R4Lmdyb3Vwcy5sZW5ndGggPT09IDEpO1xuICAgICAgICBsZXQgc2luZ2xlR3JvdXBDb3VudCA9IDA7XG4gICAgICAgIGlmIChpc1NpbmdsZUdyb3VwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZCBvZiBPYmplY3QudmFsdWVzKGtpbmREYXRhKSlcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ2Qgb2YgT2JqZWN0LnZhbHVlcyhrZCkpIHNpbmdsZUdyb3VwQ291bnQgKz0gZ2QuY291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kaXZXcmFwID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJyNoaXN0LWluZGl2LXdyYXAnKTtcbiAgICAgICAgaWYgKGluZGl2V3JhcCkgaW5kaXZXcmFwLnN0eWxlLmRpc3BsYXkgPSAoaXNTaW5nbGVHcm91cCAmJiBzaW5nbGVHcm91cENvdW50IDw9IElORElWX0xJTUlUKSA/ICcnIDogJ25vbmUnO1xuXG4gICAgICAgIGlmIChjb250YWluZXIucXVlcnlTZWxlY3RvcihgIyR7SU5ESVZfSUR9YCk/LmNoZWNrZWQgJiYgaXNTaW5nbGVHcm91cCAmJiBzaW5nbGVHcm91cENvdW50IDw9IElORElWX0xJTUlUKSB7XG4gICAgICAgICAgY29uc3QgbmFtZVNlbDIgID0gaGFzTmFtZXMgPyBgLCAke2ltYWdlTGFiZWxTcWwoY3R4KX0gQVMgX19sYWJlbF9fYCA6ICcnO1xuICAgICAgICAgIGNvbnN0IGlSZXN1bHQgICA9IGF3YWl0IGN0eC5xdWVyeShcbiAgICAgICAgICAgIGBTRUxFQ1QgXCJoaXN0b2dyYW1fY291bnRzXCIke3JhbmdlU2VsfSR7ZHR5cGVTZWx9JHtuYW5TZWx9JHtuYW1lU2VsMn1cbiAgICAgICAgICAgICBGUk9NICR7c3JjVGFibGV9ICR7d2hlcmV9XG4gICAgICAgICAgICAgTElNSVQgJHtJTkRJVl9MSU1JVCArIDF9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgaVJvd3MgICAgPSBpUmVzdWx0LnRvQXJyYXkoKTtcbiAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGlSb3dzLmxlbmd0aCA+IElORElWX0xJTUlUO1xuICAgICAgICAgIGluZGl2SW1hZ2VzICAgID0geyByb3dzOiBbXSwgb3ZlcmZsb3cgfTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBpUm93cy5zbGljZSgwLCBJTkRJVl9MSU1JVCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cyA9IGV4dHJhY3RCaW5hcnkocm93Lmhpc3RvZ3JhbV9jb3VudHMpO1xuICAgICAgICAgICAgaWYgKCFjb3VudHM/Lmxlbmd0aCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0b3RhbCAgPSBoaXN0VG90YWwoY291bnRzKTtcbiAgICAgICAgICAgIGNvbnN0IG5hbkNvdW50ID0gaGFzTmFuQ291bnQgPyBOdW1iZXIocm93Lmhpc3RvZ3JhbV9uYW5fY291bnQgPz8gMCkgOiAwO1xuICAgICAgICAgICAgaWYgKHRvdGFsIDw9IDAgJiYgbmFuQ291bnQgPD0gMCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCBhTWluICAgPSBoYXNSYW5nZSA/IE51bWJlcihyb3cuaGlzdG9ncmFtX21pbikgOiAwO1xuICAgICAgICAgICAgY29uc3QgYU1heCAgID0gaGFzUmFuZ2UgPyBOdW1iZXIocm93Lmhpc3RvZ3JhbV9tYXgpIDogTkJJTlMgLSAxO1xuICAgICAgICAgICAgY29uc3QgZE5vcm0gID0gRFRZUEVfTk9STVtyb3cuZHR5cGVdO1xuICAgICAgICAgICAgY29uc3QgaW52ICAgID0gMSAvICh0b3RhbCArIG5hbkNvdW50KTtcbiAgICAgICAgICAgIGluZGl2SW1hZ2VzLnJvd3MucHVzaCh7XG4gICAgICAgICAgICAgIHlzOiBBcnJheS5mcm9tKGNvdW50cywgYyA9PiBjICogaW52KSxcbiAgICAgICAgICAgICAgbmFuRnJhYzogbmFuQ291bnQgKiBpbnYsXG4gICAgICAgICAgICAgIGFNaW4sIGFNYXgsXG4gICAgICAgICAgICAgIG5NaW46IGROb3JtICE9IG51bGwgPyBhTWluIC8gZE5vcm0gOiBhTWluLFxuICAgICAgICAgICAgICBuTWF4OiBkTm9ybSAhPSBudWxsID8gYU1heCAvIGROb3JtIDogYU1heCxcbiAgICAgICAgICAgICAga2luZDogaGFzRHR5cGUgPyBkdHlwZUtpbmQocm93LmR0eXBlKSA6ICd1aW50JyxcbiAgICAgICAgICAgICAgbGFiZWw6IGhhc05hbWVzID8gU3RyaW5nKHJvdy5fX2xhYmVsX18gPz8gJycpIDogJycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaW5nbGUtaW1hZ2Ugb3ZlcmxheSDigJQgc2VwYXJhdGUgcXVlcnksIGRvZXNuJ3QgcG9sbHV0ZSB0aGUgZ3JvdXAgc2FtcGxlLlxuICAgICAgICBpbWFnZU92ZXJsYXkgPSBudWxsO1xuICAgICAgICBpZiAoY3RybC5zZWxlY3RlZEltYWdlICYmIGhhc1JhbmdlKSB7XG4gICAgICAgICAgY29uc3Qgc2FmZSAgICAgICAgPSBjdHJsLnNlbGVjdGVkSW1hZ2UucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xuICAgICAgICAgIGNvbnN0IGltYWdlV2hlcmUgID0gY3R4LnNxbC5hbmRXaGVyZShzcmNXaGVyZSwgYCR7aW1hZ2VLZXkoY3R4KX0gPSAnJHtzYWZlfSdgKTtcbiAgICAgICAgICBjb25zdCBpbWFnZVJlc3VsdCA9IGF3YWl0IGN0eC5xdWVyeShcbiAgICAgICAgICAgIGBTRUxFQ1QgXCJoaXN0b2dyYW1fY291bnRzXCIsIFwiaGlzdG9ncmFtX21pblwiLCBcImhpc3RvZ3JhbV9tYXhcIiR7ZHR5cGVTZWx9JHtuYW5TZWx9XG4gICAgICAgICAgICAgRlJPTSAke3NyY1RhYmxlfSAke2ltYWdlV2hlcmV9IExJTUlUIDFgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBmciA9IGltYWdlUmVzdWx0LnRvQXJyYXkoKVswXTtcbiAgICAgICAgICBpZiAoZnIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cyA9IGV4dHJhY3RCaW5hcnkoZnIuaGlzdG9ncmFtX2NvdW50cyk7XG4gICAgICAgICAgICBpZiAoY291bnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSBoaXN0VG90YWwoY291bnRzKTtcbiAgICAgICAgICAgICAgY29uc3QgYU1pbiAgPSBOdW1iZXIoZnIuaGlzdG9ncmFtX21pbiksIGFNYXggPSBOdW1iZXIoZnIuaGlzdG9ncmFtX21heCk7XG4gICAgICAgICAgICAgIGNvbnN0IGROb3JtID0gRFRZUEVfTk9STVtmci5kdHlwZV07XG4gICAgICAgICAgICAgIGNvbnN0IG5hbkNvdW50ID0gaGFzTmFuQ291bnQgPyBOdW1iZXIoZnIuaGlzdG9ncmFtX25hbl9jb3VudCA/PyAwKSA6IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGludiAgID0gdG90YWwgKyBuYW5Db3VudCA+IDAgPyAxIC8gKHRvdGFsICsgbmFuQ291bnQpIDogMDtcbiAgICAgICAgICAgICAgaW1hZ2VPdmVybGF5ID0ge1xuICAgICAgICAgICAgICAgIHlzOiAgICBBcnJheS5mcm9tKGNvdW50cywgdiA9PiB2ICogaW52KSxcbiAgICAgICAgICAgICAgICBuYW5GcmFjOiBuYW5Db3VudCAqIGludixcbiAgICAgICAgICAgICAgICBhTWluLCAgYU1heCxcbiAgICAgICAgICAgICAgICBuTWluOiAgZE5vcm0gIT0gbnVsbCA/IGFNaW4gLyBkTm9ybSA6IGFNaW4sXG4gICAgICAgICAgICAgICAgbk1heDogIGROb3JtICE9IG51bGwgPyBhTWF4IC8gZE5vcm0gOiBhTWF4LFxuICAgICAgICAgICAgICAgIGtpbmQ6ICBoYXNEdHlwZSA/IGR0eXBlS2luZChmci5kdHlwZSkgOiAndWludCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGN0cmwuc2VsZWN0ZWRJbWFnZUxhYmVsLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVuZGVyUGFuZWwgPSAoa2luZCkgPT4ge1xuICAgICAgICBpZiAoIWtpbmREYXRhKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgcGxvdERpdiwgdG9nZ2xlRWwsIGxhYmVsTGVmdCwgbGFiZWxSaWdodCB9ID0gcGFuZWxzW2tpbmRdO1xuICAgICAgICBjb25zdCB1c2VOb3JtICAgICAgICAgICAgICAgID0gKHRvZ2dsZUVsPy5jaGVja2VkID8/IGZhbHNlKSAmJiBraW5kICE9PSAnZmxvYXQnO1xuICAgICAgICBjb25zdCBzcHJlYWRDaGVja2VkICAgICAgICAgID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke1NQUkVBRF9JRH1gKT8uY2hlY2tlZCA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgY3RybCAgICAgICAgICAgICAgICAgICA9IHJlYWRDb250cm9scyhjb250YWluZXIpO1xuICAgICAgICBjb25zdCBhY3RpdmVHcm91cHMgICAgICAgICAgID0gY3RybC5zZWxlY3RlZEdyb3Vwcy5sZW5ndGggPyBjdHJsLnNlbGVjdGVkR3JvdXBzIDogY3R4Lmdyb3VwcztcbiAgICAgICAgY29uc3QgeyBhcHBlbmQ6IGFwcGVuZFBsb3QsIHBsb3RseUxlZ2VuZENvbmZpZyB9ID0gY3R4LnBsb3Q7XG5cbiAgICAgICAgaWYgKGxhYmVsTGVmdCkge1xuICAgICAgICAgIGxhYmVsTGVmdC5zdHlsZS5mb250V2VpZ2h0ICA9IHVzZU5vcm0gPyAnbm9ybWFsJyA6ICc2MDAnO1xuICAgICAgICAgIGxhYmVsUmlnaHQuc3R5bGUuZm9udFdlaWdodCA9IHVzZU5vcm0gPyAnNjAwJyA6ICdub3JtYWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgcGxvdERpdi5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgY29uc3Qga2QgICAgICAgICA9IGtpbmREYXRhW2tpbmRdID8/IHt9O1xuICAgICAgICBjb25zdCB2aXNHcm91cHMgID0gYWN0aXZlR3JvdXBzLmZpbHRlcihnID0+IGtkW2ddPy5jb3VudCk7XG4gICAgICAgIGNvbnN0IGhhc092ZXJsYXkgPSBpbWFnZU92ZXJsYXk/LmtpbmQgPT09IGtpbmQ7XG5cbiAgICAgICAgaWYgKCF2aXNHcm91cHMubGVuZ3RoICYmICFoYXNPdmVybGF5KSB7XG4gICAgICAgICAgcGxvdERpdi5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm5vLWRhdGFcIiBzdHlsZT1cImNvbG9yOiNhYWE7cGFkZGluZzo4cHggMFwiPk5vIGRhdGEgZm9yIHRoZSBjdXJyZW50IGZpbHRlci48L2Rpdj4nO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYWNlcyA9IFtdO1xuICAgICAgICBjb25zdCBuYW5TZXJpZXMgPSBbXTsgLy8geyBmcmFjLCBjb2xvciwgbGFiZWwgfSAtIHJlbmRlcmVkIGFzIGEgYnVja2V0IGxlZnQgb2YgdGhlIHJlYWwgYmluc1xuICAgICAgICBsZXQgeU1heCA9IDA7XG4gICAgICAgIGxldCB4TG8gPSBJbmZpbml0eSwgeEhpID0gLUluZmluaXR5O1xuICAgICAgICBjb25zdCB0cmFja0V4dGVudCA9IChsbywgaGksIHlzKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXh0ID0gcG9wdWxhdGVkRXh0ZW50KGxvLCBoaSwgeXMpO1xuICAgICAgICAgIGlmICghZXh0KSByZXR1cm47XG4gICAgICAgICAgaWYgKGV4dFswXSA8IHhMbykgeExvID0gZXh0WzBdO1xuICAgICAgICAgIGlmIChleHRbMV0gPiB4SGkpIHhIaSA9IGV4dFsxXTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBJbmRpdmlkdWFsIGltYWdlIHRyYWNlcyByZXBsYWNlIHRoZSBncm91cCBtZWFuIHdoZW4gYWN0aXZlLlxuICAgICAgICBjb25zdCBraW5kUm93cyAgPSAoaW5kaXZJbWFnZXMgJiYgdmlzR3JvdXBzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICA/IGluZGl2SW1hZ2VzLnJvd3MuZmlsdGVyKHIgPT4gci5raW5kID09PSBraW5kKVxuICAgICAgICAgIDogW107XG4gICAgICAgIGNvbnN0IHNob3dJbmRpdiA9IGtpbmRSb3dzLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgaWYgKCFzaG93SW5kaXYpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGcgb2YgdmlzR3JvdXBzKSB7XG4gICAgICAgICAgICBjb25zdCBnZCAgICAgICAgPSBrZFtnXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yICAgICA9IGN0eC5jb2xvci5ncm91cChnKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsICAgICA9IGN0eC5ncm91cExhYmVsKFN0cmluZyhnKSk7XG4gICAgICAgICAgICBjb25zdCBsbyAgICAgICAgPSB1c2VOb3JtID8gZ2Qubk1pbiA6IGdkLmFNaW47XG4gICAgICAgICAgICBjb25zdCBoaSAgICAgICAgPSB1c2VOb3JtID8gZ2Qubk1heCA6IGdkLmFNYXg7XG4gICAgICAgICAgICBjb25zdCBzdW1zQXJyICAgPSB1c2VOb3JtID8gZ2Quc3Vtc05vcm0gIDogZ2Quc3VtcztcbiAgICAgICAgICAgIGNvbnN0IHN1bVNxQXJyICA9IHVzZU5vcm0gPyBnZC5zdW1TcU5vcm0gOiBnZC5zdW1TcTtcbiAgICAgICAgICAgIGNvbnN0IHhzICAgICAgICA9IGJpblhzKGxvLCBoaSk7XG4gICAgICAgICAgICBjb25zdCBtZWFuWXMgICAgPSBBcnJheS5mcm9tKHN1bXNBcnIsIHYgPT4gdiAvIGdkLmNvdW50KTtcbiAgICAgICAgICAgIGNvbnN0IHNob3dTcHJlYWQgPSBzcHJlYWRDaGVja2VkICYmIGdkLmNvdW50ID49IDI7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTkJJTlM7IGkrKykgaWYgKG1lYW5Zc1tpXSA+IHlNYXgpIHlNYXggPSBtZWFuWXNbaV07XG4gICAgICAgICAgICB0cmFja0V4dGVudChsbywgaGksIG1lYW5Zcyk7XG4gICAgICAgICAgICBuYW5TZXJpZXMucHVzaCh7IGZyYWM6IGdkLm5hblN1bSAvIGdkLmNvdW50LCBjb2xvciwgbGFiZWwgfSk7XG5cbiAgICAgICAgICAgIGlmIChzaG93U3ByZWFkKSB7XG4gICAgICAgICAgICAgIC8vIMKxMSBzdGQgYmFuZCBhcyBhIGNsb3NlZCBwb2x5Z29uIGJlaGluZCB0aGUgbWVhbiBsaW5lLlxuICAgICAgICAgICAgICBjb25zdCB1cHBlciA9IG5ldyBBcnJheShOQklOUyksIGxvd2VyID0gbmV3IEFycmF5KE5CSU5TKTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOQklOUzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbSA9IG1lYW5Zc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gTWF0aC5zcXJ0KE1hdGgubWF4KDAsIHN1bVNxQXJyW2ldIC8gZ2QuY291bnQgLSBtICogbSkpO1xuICAgICAgICAgICAgICAgIHVwcGVyW2ldID0gbSArIHM7XG4gICAgICAgICAgICAgICAgbG93ZXJbaV0gPSBNYXRoLm1heCgwLCBtIC0gcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgeFJldiA9IHhzLnNsaWNlKCkucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICB0cmFjZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgeDogWy4uLnhzLCAuLi54UmV2XSwgeTogWy4uLnVwcGVyLCAuLi5sb3dlci5zbGljZSgpLnJldmVyc2UoKV0sXG4gICAgICAgICAgICAgICAgZmlsbDogJ3Rvc2VsZicsIG1vZGU6ICdub25lJywgbGluZTogeyB3aWR0aDogMCB9LFxuICAgICAgICAgICAgICAgIGZpbGxjb2xvcjogd2l0aEFscGhhKGNvbG9yLCAwLjE4KSxcbiAgICAgICAgICAgICAgICBzaG93bGVnZW5kOiBmYWxzZSwgaG92ZXJpbmZvOiAnc2tpcCcsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cmFjZXMucHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdzY2F0dGVyJywgbW9kZTogJ2xpbmVzJywgbmFtZTogbGFiZWwsXG4gICAgICAgICAgICAgIHg6IHhzLCB5OiBtZWFuWXMsXG4gICAgICAgICAgICAgIGZpbGw6IHNob3dTcHJlYWQgPyAnbm9uZScgOiAndG96ZXJveScsXG4gICAgICAgICAgICAgIG9wYWNpdHk6IDAuNiwgbGluZTogeyBjb2xvciwgd2lkdGg6IDIgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb2xvciA9IGN0eC5jb2xvci5ncm91cCh2aXNHcm91cHNbMF0pO1xuICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIGtpbmRSb3dzKSB7XG4gICAgICAgICAgICBjb25zdCBsbyA9IHVzZU5vcm0gPyByb3cubk1pbiA6IHJvdy5hTWluO1xuICAgICAgICAgICAgY29uc3QgaGkgPSB1c2VOb3JtID8gcm93Lm5NYXggOiByb3cuYU1heDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93LnlzLmxlbmd0aDsgaSsrKSBpZiAocm93LnlzW2ldID4geU1heCkgeU1heCA9IHJvdy55c1tpXTtcbiAgICAgICAgICAgIHRyYWNrRXh0ZW50KGxvLCBoaSwgcm93LnlzKTtcbiAgICAgICAgICAgIG5hblNlcmllcy5wdXNoKHsgZnJhYzogcm93Lm5hbkZyYWMgfHwgMCwgY29sb3IsIGxhYmVsOiByb3cubGFiZWwgfHwgJ2ltYWdlJyB9KTtcbiAgICAgICAgICAgIHRyYWNlcy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ3NjYXR0ZXInLCBtb2RlOiAnbGluZXMnLFxuICAgICAgICAgICAgICB4OiBiaW5YcyhsbywgaGkpLCB5OiByb3cueXMsXG4gICAgICAgICAgICAgIG5hbWU6IHJvdy5sYWJlbCB8fCAnaW1hZ2UnLFxuICAgICAgICAgICAgICBsaW5lOiB7IGNvbG9yLCB3aWR0aDogMS41IH0sXG4gICAgICAgICAgICAgIG9wYWNpdHk6IDAuNixcbiAgICAgICAgICAgICAgc2hvd2xlZ2VuZDogZmFsc2UsXG4gICAgICAgICAgICAgIGhvdmVydGVtcGxhdGU6IGAle3k6LjRmfTxicj4ke3Jvdy5sYWJlbH08ZXh0cmE+PC9leHRyYT5gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc092ZXJsYXkpIHtcbiAgICAgICAgICBjb25zdCBmbyA9IGltYWdlT3ZlcmxheTtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IGBJbWFnZTogJHtmby5sYWJlbH1gO1xuICAgICAgICAgIGNvbnN0IGxvID0gdXNlTm9ybSA/IGZvLm5NaW4gOiBmby5hTWluO1xuICAgICAgICAgIGNvbnN0IGhpID0gdXNlTm9ybSA/IGZvLm5NYXggOiBmby5hTWF4O1xuICAgICAgICAgIGNvbnN0IHhzID0gYmluWHMobG8sIGhpKTtcbiAgICAgICAgICB0cmFja0V4dGVudChsbywgaGksIGZvLnlzKTtcbiAgICAgICAgICBuYW5TZXJpZXMucHVzaCh7IGZyYWM6IGZvLm5hbkZyYWMgfHwgMCwgY29sb3I6ICdibGFjaycsIGxhYmVsLCBvcGFjaXR5OiAwLjMgfSk7XG4gICAgICAgICAgdHJhY2VzLnVuc2hpZnQoe1xuICAgICAgICAgICAgdHlwZTogJ2JhcicsIG5hbWU6IGxhYmVsLCB4OiB4cywgeTogZm8ueXMsXG4gICAgICAgICAgICB3aWR0aDogQXJyYXkoTkJJTlMpLmZpbGwoeHMubGVuZ3RoID4gMSA/IHhzWzFdIC0geHNbMF0gOiAxKSxcbiAgICAgICAgICAgIG1hcmtlcjogeyBjb2xvcjogJ2JsYWNrJyB9LCBvcGFjaXR5OiAwLjMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOYU4gYnVja2V0IC0gb3duIHNtYWxsIGNhdGVnb3JpY2FsIGF4aXMgKHhheGlzMiksIG5vdCBwYXJ0IG9mIHRoZSBudW1lcmljIGludGVuc2l0eVxuICAgICAgICAvLyBheGlzLCBzbyBpdCBjYW4gbmV2ZXIgY29pbmNpZGUgd2l0aCBhIHJlYWwgdGljayBsaWtlIFwiMTAwXCIuXG4gICAgICAgIGxldCBoYXNOYW5CYXIgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCB7IGZyYWMsIGNvbG9yLCBsYWJlbCwgb3BhY2l0eTogb3AgfSBvZiBuYW5TZXJpZXMpIHtcbiAgICAgICAgICBpZiAoIShmcmFjID4gMCkpIGNvbnRpbnVlO1xuICAgICAgICAgIGhhc05hbkJhciA9IHRydWU7XG4gICAgICAgICAgaWYgKGZyYWMgPiB5TWF4KSB5TWF4ID0gZnJhYztcbiAgICAgICAgICB0cmFjZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnYmFyJywgbmFtZTogYCR7bGFiZWx9IChOYU4pYCwgeGF4aXM6ICd4MicsIHg6IFswXSwgeTogW2ZyYWNdLCB3aWR0aDogWzAuNV0sXG4gICAgICAgICAgICBtYXJrZXI6IHsgY29sb3IgfSwgb3BhY2l0eTogb3AgPz8gMC42LCBzaG93bGVnZW5kOiBmYWxzZSxcbiAgICAgICAgICAgIGhvdmVydGVtcGxhdGU6IGBOYU4gcGl4ZWxzOiAle3k6LjRmfTxleHRyYT4ke2xhYmVsfTwvZXh0cmE+YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHhUaXRsZSAgICAgPSB1c2VOb3JtXG4gICAgICAgICAgPyAoa2luZCA9PT0gJ2ludCcgPyAnRHR5cGUgcmFuZ2UgKOKIkjEgdG8gMSknIDogJ0R0eXBlIHJhbmdlICgwIHRvIDEpJylcbiAgICAgICAgICA6ICdQaXhlbCB2YWx1ZSc7XG4gICAgICAgIGNvbnN0IHNob3dMZWdlbmQgPSBjdHguZ3JvdXBzLmxlbmd0aCA+IDEgfHwgaGFzT3ZlcmxheTtcbiAgICAgICAgY29uc3QgeVJhbmdlICAgICA9IHlNYXggPiAwID8gWzAsIHlNYXggKiAxLjEyXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gWm9vbSB0byB3aGVyZSB0aGUgZGF0YSBhY3R1YWxseSBpcyBpbnN0ZWFkIG9mIHRoZSBmdWxsIChwb3NzaWJseSBkdHlwZS13aWRlbmVkKSBiaW4gd2luZG93LFxuICAgICAgICAvLyB3aGljaCB3b3VsZCBvdGhlcndpc2UgcGFkIG5hcnJvdy1yYW5nZSBpbnRlZ2VyIGRhdGEgb3V0IHdpdGggYSB3YWxsIG9mIGVtcHR5IGJpbnMuXG4gICAgICAgIGNvbnN0IHhQYWQgICAgICAgPSB4SGkgPiB4TG8gPyAoeEhpIC0geExvKSAqIDAuMDQgOiAwO1xuICAgICAgICBjb25zdCB4UmFuZ2UgICAgID0geEhpID4geExvID8gW3hMbyAtIHhQYWQsIHhIaSArIHhQYWRdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGFwcGVuZFBsb3QocGxvdERpdiwgdHJhY2VzLCB7XG4gICAgICAgICAgdGl0bGU6ICB7IHRleHQ6IG11bHRpS2luZCA/IGAke0tJTkRfTEFCRUxba2luZF19IOKAlCBJbnRlbnNpdHkgSGlzdG9ncmFtc2AgOiAnSW50ZW5zaXR5IEhpc3RvZ3JhbXMgKGF2ZXJhZ2VkIHBlciBncm91cCknIH0sXG4gICAgICAgICAgeGF4aXM6ICB7XG4gICAgICAgICAgICB0aXRsZTogeFRpdGxlLCBleHBvbmVudGZvcm1hdDogJ2UnLCAuLi4oeFJhbmdlID8geyByYW5nZTogeFJhbmdlIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4oaGFzTmFuQmFyID8geyBkb21haW46IFswLCAwLjg2XSB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeWF4aXM6ICB7IHRpdGxlOiAnTm9ybWFsaXplZCBjb3VudCcsIC4uLih5UmFuZ2UgPyB7IHJhbmdlOiB5UmFuZ2UgfSA6IHt9KSB9LFxuICAgICAgICAgIGJhcmdhcDogMCwgaGVpZ2h0OiA1MDAsIHNob3dsZWdlbmQ6IHNob3dMZWdlbmQsIGhvdmVybW9kZTogJ3ggdW5pZmllZCcsXG4gICAgICAgICAgLi4uKGhhc05hbkJhciA/IHtcbiAgICAgICAgICAgIHhheGlzMjoge1xuICAgICAgICAgICAgICBkb21haW46IFswLjkyLCAxXSwgYW5jaG9yOiAneScsIHJhbmdlOiBbLTAuNSwgMC41XSxcbiAgICAgICAgICAgICAgdGlja3ZhbHM6IFswXSwgdGlja3RleHQ6IFsnTmFOJ10sIHNob3dncmlkOiBmYWxzZSwgemVyb2xpbmU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9IDoge30pLFxuICAgICAgICAgIC4uLihzaG93TGVnZW5kID8geyBsZWdlbmQ6IHBsb3RseUxlZ2VuZENvbmZpZyB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlbmRlclBhbmVscyA9ICgpID0+IHsgZm9yIChjb25zdCBraW5kIG9mIHByZXNlbnRLaW5kcykgcmVuZGVyUGFuZWwoa2luZCk7IH07XG5cbiAgICAgIGNvbnN0IHVwZGF0ZU5hbldhcm5pbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmICghbmFuV2FybmluZyB8fCAha2luZERhdGEpIHJldHVybjtcbiAgICAgICAgY29uc3QgcGN0ID0gZyA9PiB7XG4gICAgICAgICAgbGV0IG5hblN1bSA9IDAsIGNvdW50ID0gMDtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtkIG9mIE9iamVjdC52YWx1ZXMoa2luZERhdGEpKSB7IGlmIChrZFtnXSkgeyBuYW5TdW0gKz0ga2RbZ10ubmFuU3VtOyBjb3VudCArPSBrZFtnXS5jb3VudDsgfSB9XG4gICAgICAgICAgcmV0dXJuIGNvdW50ID8gbmFuU3VtIC8gY291bnQgOiAwO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBncm91cHMgPSBbLi4ubmV3IFNldChPYmplY3QudmFsdWVzKGtpbmREYXRhKS5mbGF0TWFwKGtkID0+IE9iamVjdC5rZXlzKGtkKSkpXTtcbiAgICAgICAgY29uc3Qgd2l0aE5hbiA9IGdyb3Vwcy5maWx0ZXIoZyA9PiBwY3QoZykgPiAwKTtcbiAgICAgICAgaWYgKCF3aXRoTmFuLmxlbmd0aCkgeyBuYW5XYXJuaW5nLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7IHJldHVybjsgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IHdpdGhOYW4ubWFwKGcgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gY3R4Lmdyb3VwTGFiZWwgPyBjdHguZ3JvdXBMYWJlbChnKSA6IGc7XG4gICAgICAgICAgcmV0dXJuIGdyb3Vwcy5sZW5ndGggPiAxID8gYCR7bGFiZWx9OiAkeyhwY3QoZykgKiAxMDApLnRvRml4ZWQoMil9JWAgOiBgJHsocGN0KGcpICogMTAwKS50b0ZpeGVkKDIpfSVgO1xuICAgICAgICB9KTtcbiAgICAgICAgbmFuV2FybmluZy5xdWVyeVNlbGVjdG9yKCdkaXYnKS5pbm5lckhUTUwgPSBgTmFOIHBpeGVscyBkZXRlY3RlZCR7Z3JvdXBzLmxlbmd0aCA+IDEgPyAnJyA6IGAgKCR7cGFydHNbMF19KWB9JHtncm91cHMubGVuZ3RoID4gMSA/ICc6ICcgKyBwYXJ0cy5qb2luKCcsICcpIDogJyd9LmA7XG4gICAgICAgIG5hbldhcm5pbmcuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZHJhdyA9IGFzeW5jICgpID0+IHsgYXdhaXQgZmV0Y2hBbmRBY2N1bXVsYXRlKCk7IHVwZGF0ZU5hbldhcm5pbmcoKTsgcmVuZGVyUGFuZWxzKCk7IH07XG5cbiAgICAgIC8vIFBlci1wYW5lbCBtb2RlIHRvZ2dsZXMgcmUtcmVuZGVyIG9ubHkgdGhlaXIgcGFuZWw7IHNwcmVhZCBhbmQgZ3JvdXAgY29udHJvbHMgcmUtcmVuZGVyIGFsbC5cbiAgICAgIGZvciAoY29uc3Qga2luZCBvZiBwcmVzZW50S2luZHMpXG4gICAgICAgIHBhbmVsc1traW5kXS50b2dnbGVFbD8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gcmVuZGVyUGFuZWwoa2luZCkpO1xuICAgICAgY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke1NQUkVBRF9JRH1gKT8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgcmVuZGVyUGFuZWxzKTtcbiAgICAgIHdpcmVDb250cm9scyhjb250YWluZXIsIGRyYXcpO1xuXG4gICAgICBhd2FpdCBkcmF3KCk7XG5cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdIaXN0b2dyYW0gd2lkZ2V0IGVycm9yJywgZSk7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+RmFpbGVkIHRvIGxvYWQgZGF0YS48L2Rpdj4nO1xuICAgIH1cbiAgfSxcbn07XG5cbi8vIFVuaXF1ZSBrZXkgcGVyIGltYWdlOiBwYXRoICsgY2hpbGRfaWQgd2hlbiBwcmVzZW50LCBwYXRoIGFsb25lIG90aGVyd2lzZS5cbmZ1bmN0aW9uIGltYWdlS2V5KGN0eCkge1xuICByZXR1cm4gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdjaGlsZF9pZCcpXG4gICAgPyBgKFwicGF0aFwiIHx8IENPQUxFU0NFKCcgXFx1MjAyMiAnIHx8IFwiY2hpbGRfaWRcIiwgJycpKWBcbiAgICA6ICdcInBhdGhcIic7XG59XG5cbmZ1bmN0aW9uIGltYWdlTGFiZWxTcWwoY3R4KSB7XG4gIGNvbnN0IGJhc2UgPSBjdHguc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ25hbWUnKSA/ICdcIm5hbWVcIicgOiAnXCJwYXRoXCInO1xuICByZXR1cm4gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdjaGlsZF9pZCcpXG4gICAgPyBgKCR7YmFzZX0gfHwgQ09BTEVTQ0UoJyBcXHUyMDIyICcgfHwgXCJjaGlsZF9pZFwiLCAnJykpYFxuICAgIDogYmFzZTtcbn1cblxuZnVuY3Rpb24gYnVpbGRDb250cm9scyhjdHgsIHsgaGFzUGF0aCwgaW1hZ2VSb3dzIH0pIHtcbiAgY29uc3QgeyBlc2NhcGVIdG1sIH0gPSBjdHgucGxvdDtcblxuICBjb25zdCBncm91cE9wdHMgPSBjdHguZ3JvdXBzLm1hcChnID0+XG4gICAgYDxvcHRpb24gdmFsdWU9XCIke2VzY2FwZUh0bWwoU3RyaW5nKGcpKX1cIj4ke2VzY2FwZUh0bWwoY3R4Lmdyb3VwTGFiZWwoZykpfTwvb3B0aW9uPmApLmpvaW4oJycpO1xuXG4gIGNvbnN0IGltYWdlQmxvY2sgPSBoYXNQYXRoID8gYFxuICAgIDxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6NDAwcHg7ZmxleDoxIDEgMjQwcHhcIj5cbiAgICAgIDxkaXYgc3R5bGU9XCJmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo2cHhcIj5PdmVybGF5IHNwZWNpZmljIGltYWdlIChvcHRpb25hbCk6PC9kaXY+XG4gICAgICA8c2VsZWN0IGlkPVwiJHtJTUFHRV9TRUxfSUR9XCIgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LSBub25lIC08L29wdGlvbj5cbiAgICAgICAgJHtpbWFnZVJvd3MubWFwKHIgPT4gYDxvcHRpb24gdmFsdWU9XCIke2VzY2FwZUh0bWwoU3RyaW5nKHIua2V5KSl9XCI+JHtlc2NhcGVIdG1sKFN0cmluZyhyLmxhYmVsKSl9PC9vcHRpb24+YCkuam9pbignJyl9XG4gICAgICA8L3NlbGVjdD5cbiAgICAgICR7aW1hZ2VSb3dzLmxlbmd0aCA9PT0gTUFYX0lNQUdFX09QVElPTlMgPyBgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPlNob3dpbmcgZmlyc3QgJHtNQVhfSU1BR0VfT1BUSU9OU30gaW1hZ2VzLjwvc21hbGw+YCA6ICcnfVxuICAgIDwvZGl2PmAgOiAnJztcblxuICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBlbC5zdHlsZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MjBweDttYXJnaW4tYm90dG9tOjIwcHgnO1xuICBlbC5pbm5lckhUTUwgPSBgXG4gICAgPGRpdiBzdHlsZT1cIm1heC13aWR0aDozNjBweDtmbGV4OjEgMSAyNDBweFwiPlxuICAgICAgPGRpdiBzdHlsZT1cImZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjZweFwiPlNlbGVjdCBncm91cHMgKG9wdGlvbmFsKTo8L2Rpdj5cbiAgICAgIDxzZWxlY3QgaWQ9XCIke0dST1VQX1NFTF9JRH1cIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgbXVsdGlwbGUgc3R5bGU9XCJoZWlnaHQ6ODBweFwiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+QWxsIGdyb3Vwczwvb3B0aW9uPlxuICAgICAgICAke2dyb3VwT3B0c31cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPkN0cmwvQ21kIHRvIG11bHRpLXNlbGVjdC48L3NtYWxsPlxuICAgIDwvZGl2PlxuICAgICR7aW1hZ2VCbG9ja31cbiAgICA8ZGl2IHN0eWxlPVwiYWxpZ24tc2VsZjpmbGV4LXN0YXJ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTo2cHhcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiJHtTUFJFQURfSUR9XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCIke1NQUkVBRF9JRH1cIiBzdHlsZT1cImZvbnQtc2l6ZTowLjllbVwiPlxuICAgICAgICAgIFNob3cgc3ByZWFkICjCsTEgc3RkKVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwiaGlzdC1pbmRpdi13cmFwXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7bWFyZ2luLWJvdHRvbTo4cHhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCIke0lORElWX0lEfVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCIke0lORElWX0lEfVwiIHN0eWxlPVwiZm9udC1zaXplOjAuOWVtXCI+XG4gICAgICAgICAgICBTaG93IGluZGl2aWR1YWwgaW1hZ2VzXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtd2VpZ2h0OjYwMFwiPk1heCBzYW1wbGVzIHBlciBncm91cDpcbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cIiR7U0FNUExFX0lOUFVUX0lEfVwiIHZhbHVlPVwiJHtERUZBVUxUX1NBTVBMRVN9XCIgbWluPVwiNTBcIiBzdGVwPVwiMTAwXCJcbiAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6OTBweDttYXJnaW4tbGVmdDo4cHg7cGFkZGluZzoycHggNnB4O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweFwiPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgYDtcbiAgcmV0dXJuIGVsO1xufVxuXG5mdW5jdGlvbiByZWFkQ29udHJvbHMoY29udGFpbmVyKSB7XG4gIGNvbnN0IGdyb3VwU2VsICA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtHUk9VUF9TRUxfSUR9YCk7XG4gIGNvbnN0IGltYWdlU2VsICA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtJTUFHRV9TRUxfSUR9YCk7XG4gIGNvbnN0IHNhbXBsZVJhdyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtTQU1QTEVfSU5QVVRfSUR9YCk/LnZhbHVlID8/IERFRkFVTFRfU0FNUExFUztcbiAgLy8gdmFsdWU9JycgaXMgdGhlIFwiQWxsIGdyb3Vwc1wiIG9wdGlvbiDigJQgZmlsdGVyKEJvb2xlYW4pIGRyb3BzIGl0LCBsZWF2aW5nIFtdID0gYWxsIGdyb3Vwcy5cbiAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBncm91cFNlbFxuICAgID8gWy4uLmdyb3VwU2VsLnNlbGVjdGVkT3B0aW9uc10ubWFwKG8gPT4gby52YWx1ZSkuZmlsdGVyKEJvb2xlYW4pXG4gICAgOiBbXTtcbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RlZEdyb3VwcyxcbiAgICBzZWxlY3RlZEltYWdlOiAgICAgIGltYWdlU2VsPy52YWx1ZSA/PyAnJyxcbiAgICBzZWxlY3RlZEltYWdlTGFiZWw6IGltYWdlU2VsPy5zZWxlY3RlZE9wdGlvbnNbMF0/LnRleHRDb250ZW50Py50cmltKCkgPz8gJycsXG4gICAgc2FtcGxlc1Blckdyb3VwOiBNYXRoLm1heCg1MCwgcGFyc2VJbnQoc2FtcGxlUmF3LCAxMCkgfHwgREVGQVVMVF9TQU1QTEVTKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lyZUNvbnRyb2xzKGNvbnRhaW5lciwgb25EcmF3KSB7XG4gIC8vIEdyb3VwIHNlbGVjdDogZW5mb3JjZSBcIkFsbCBncm91cHNcIiBtdXR1YWwtZXhjbHVzaXZpdHkgYmVmb3JlIHJlLWZldGNoaW5nLlxuICBjb25zdCBncm91cFNlbCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtHUk9VUF9TRUxfSUR9YCk7XG4gIGlmIChncm91cFNlbCkge1xuICAgIGdyb3VwU2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGFsbE9wdCAgID0gZ3JvdXBTZWwub3B0aW9uc1swXTtcbiAgICAgIGNvbnN0IHNwZWNpZmljID0gWy4uLmdyb3VwU2VsLm9wdGlvbnNdLnNsaWNlKDEpLmZpbHRlcihvID0+IG8uc2VsZWN0ZWQpO1xuICAgICAgaWYgKGFsbE9wdC5zZWxlY3RlZCAmJiBzcGVjaWZpYy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFsbE9wdC5zZWxlY3RlZCA9IGZhbHNlOyAgICAgICAvLyBzcGVjaWZpYyBzZWxlY3RlZCBhbG9uZ3NpZGUgQWxsIOKGkiBkcm9wIEFsbFxuICAgICAgfSBlbHNlIGlmICghYWxsT3B0LnNlbGVjdGVkICYmIHNwZWNpZmljLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBhbGxPcHQuc2VsZWN0ZWQgPSB0cnVlOyAgICAgICAgLy8gbm90aGluZyBzZWxlY3RlZCDihpIgcmV2ZXJ0IHRvIEFsbFxuICAgICAgfVxuICAgICAgb25EcmF3KCk7XG4gICAgfSk7XG4gIH1cbiAgZm9yIChjb25zdCBpZCBvZiBbSU1BR0VfU0VMX0lELCBTQU1QTEVfSU5QVVRfSURdKVxuICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKT8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25EcmF3KTtcblxuICAvLyBJbmRpdmlkdWFsLWltYWdlIGxpbmVzIHJlcGxhY2UgdGhlIGdyb3VwIG1lYW4sIHNvIFwic3ByZWFkIGFyb3VuZCB0aGUgbWVhblwiIGlzIG1lYW5pbmdsZXNzIHRoZW4uXG4gIGNvbnN0IGluZGl2RWwgID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke0lORElWX0lEfWApO1xuICBjb25zdCBzcHJlYWRFbCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAjJHtTUFJFQURfSUR9YCk7XG4gIGluZGl2RWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICBpZiAoc3ByZWFkRWwpIHNwcmVhZEVsLmRpc2FibGVkID0gaW5kaXZFbC5jaGVja2VkO1xuICAgIG9uRHJhdygpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFBOzs7Ozs7O0FBQUEsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQzNCLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDNUIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQzdCLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDM0MsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUMzQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzNDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDeEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3ZDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTs7QUFFMUIsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSTtBQUNuRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQy9ELENBQUM7O0FBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOztBQUV4RixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDL0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNiOztBQUVBLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNWOztBQUVBLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekQsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQzdDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvRDs7QUFFQSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDN0YsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUM3RixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTTtBQUNyRCxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3BEOztBQUVBLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQ25FLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ2Q7O0FBRUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0FBQ3RHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQzVDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDdkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUM1QixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ1g7O0FBRUEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQ7O0FBRUEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUM3RyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDbkUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHO0FBQ2QsQ0FBQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUc7QUFDZCxDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRztBQUNaOztBQUVBLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJO0FBQ3ZGLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUN4RSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2hGOztBQUVBLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU87QUFDakgsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSztBQUM5RCxRQUFRLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQzs7QUFFRixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXBCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUc7O0FBRWhDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXZGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU07QUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUc7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztBQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ2pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDZjs7QUFFQSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQzlFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDM0UsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLO0FBQ2pCLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2Rjs7QUFFQSxtQ0FBYyxDQUFDO0FBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BGLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDeEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9GLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2SCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlMLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDLENBQUM7O0FBRUgsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVM7QUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUM7O0FBRUgsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3BILENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRS9FLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTtBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUTtBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNoRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVsRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDZixDQUFDLENBQUMsQ0FBQzs7QUFFSCxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDOztBQUVqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDakgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7O0FBRTFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzNGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVM7QUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHOztBQUV6QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU87QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzs7QUFFaEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ25ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQzs7QUFFNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYTtBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYTtBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQ25FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzs7QUFFOUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO0FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7O0FBRXhDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQ2hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQzs7QUFFOUgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDOztBQUUxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7O0FBRTVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztBQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDL0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU07QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFckUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7O0FBRTVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQzdFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUMxRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7O0FBRXJDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTtBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVE7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7O0FBRXBHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTs7QUFFM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMvRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7O0FBRXJELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTTtBQUNwRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbEgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNoSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUM1RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7O0FBRWpILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDL0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVc7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUNsRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDM0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7QUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO0FBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU07QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNqRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07QUFDcEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTs7QUFFbkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2xFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7O0FBRXRELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDaEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTTtBQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRVQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUNyRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ3pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUN6RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQzlELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ3BFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTdELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7O0FBRXhFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDOUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFWixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7QUFDekQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVk7QUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztBQUNyRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUs7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO0FBQzlELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQ2xFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUNyRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzs7QUFFM0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVQLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUV4RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU07QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVQLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVsRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUc7QUFDbkcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWTtBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDeEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUNILENBQUM7O0FBRUQsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztBQUMzRSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNkOztBQUVBLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQ1Y7O0FBRUEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJOztBQUVqQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVsRyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDNUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUN6QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWhCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUM5RSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDbkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2xHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ2hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN2RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ25GLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDYixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSztBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRztBQUNsRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3pHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUNULENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ1g7O0FBRUEsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUM1RixDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU87QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztBQUM3RSxDQUFDLENBQUMsQ0FBQztBQUNIOztBQUVBLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVE7QUFDN0UsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsZUFBZSxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7O0FBRXpFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUk7QUFDbkcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ1osQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKOyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5faGlzdG9ncmFtLmpzIix7InVybHMiOiI1IiwiaWRzIjoiNiJ9LFtdLFtdLFtdLHt9XQ==