@substrate-system/image
Version:
An image component
642 lines • 110 kB
JavaScript
true&&(function polyfill() {
const relList = document.createElement("link").relList;
if (relList && relList.supports && relList.supports("modulepreload")) {
return;
}
for (const link of document.querySelectorAll('link[rel="modulepreload"]')) {
processPreload(link);
}
new MutationObserver((mutations) => {
for (const mutation of mutations) {
if (mutation.type !== "childList") {
continue;
}
for (const node of mutation.addedNodes) {
if (node.tagName === "LINK" && node.rel === "modulepreload")
processPreload(node);
}
}
}).observe(document, { childList: true, subtree: true });
function getFetchOpts(link) {
const fetchOpts = {};
if (link.integrity) fetchOpts.integrity = link.integrity;
if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy;
if (link.crossOrigin === "use-credentials")
fetchOpts.credentials = "include";
else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit";
else fetchOpts.credentials = "same-origin";
return fetchOpts;
}
function processPreload(link) {
if (link.ep)
return;
link.ep = true;
const fetchOpts = getFetchOpts(link);
fetch(link.href, fetchOpts);
}
}());
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class TonicTemplate {
static {
__name(this, "TonicTemplate");
}
constructor(rawText, templateStrings, unsafe) {
this.isTonicTemplate = true;
this.unsafe = !!unsafe;
this.rawText = rawText;
this.templateStrings = templateStrings;
}
valueOf() {
return this.rawText;
}
toString() {
return this.rawText;
}
}
class Tonic extends window.HTMLElement {
constructor() {
super();
this._props = Tonic.getPropertyNames(this);
const state = Tonic._states[super.id];
delete Tonic._states[super.id];
this._state = state || {};
this.preventRenderOnReconnect = false;
this.props = {};
this.elements = [...this.children];
this.elements.__children__ = true;
this.nodes = [...this.childNodes];
this.nodes.__children__ = true;
this._events();
}
static {
__name(this, "Tonic");
}
static {
this._tags = "";
}
static {
this._refIds = [];
}
static {
this._data = {};
}
static {
this._states = {};
}
static {
this._children = {};
}
static {
this._reg = {};
}
static {
this._stylesheetRegistry = [];
}
static {
this._index = 0;
}
// @ts-expect-error VERSION is injected during build
static get version() {
return "16.0.9";
}
static get SPREAD() {
return /\.\.\.\s?(__\w+__\w+__)/g;
}
static get ESC() {
return /["&'<>`/]/g;
}
static get AsyncFunctionGenerator() {
return async function* () {
}.constructor;
}
// eslint-disable-next-line
static get AsyncFunction() {
return async function() {
}.constructor;
}
static get MAP() {
return {
'"': """,
"&": "&",
"'": "'",
"<": "<",
">": ">",
"`": "`",
"/": "/"
};
}
get isTonicComponent() {
return true;
}
/**
* Get a namespaced event name, given a non-namespaced string.
*
* @example
* MyElement.event('example') // => my-element:example
*
* @param {string} type The name of the event
* @returns {string} The namespaced event name
*/
static event(type) {
return `${this.tag}:${type}`;
}
/**
* Get the tag name of this component.
*/
static get tag() {
return Tonic.getTagName(this.name);
}
static _createId() {
return `tonic${Tonic._index++}`;
}
static _normalizeAttrs(o, x = {}) {
[...o].forEach((o2) => x[o2.name] = o2.value);
return x;
}
_checkId() {
const _id = super.id;
if (!_id) {
const html = this.outerHTML.replace(this.innerHTML, "...");
throw new Error(`Component: ${html} has no id`);
}
return _id;
}
/**
* Get the component state property.
*/
get state() {
return this._checkId(), this._state;
}
set state(newState) {
this._state = (this._checkId(), newState);
}
_events() {
const hp = Object.getOwnPropertyNames(window.HTMLElement.prototype);
for (const p of this._props) {
if (hp.indexOf("on" + p) === -1) continue;
this.addEventListener(p, this);
}
}
_prop(o) {
const id = this._id;
const p = `__${id}__${Tonic._createId()}__`;
Tonic._data[id] = Tonic._data[id] || {};
Tonic._data[id][p] = o;
return p;
}
_placehold(r) {
const id = this._id;
const ref = `placehold:${id}:${Tonic._createId()}__`;
Tonic._children[id] = Tonic._children[id] || {};
Tonic._children[id][ref] = r;
return ref;
}
static match(el, s) {
if (!el.matches) el = el.parentElement;
return el.matches(s) ? el : el.closest(s);
}
static getTagName(camelName) {
return camelName.match(/[A-Z][a-z0-9]*/g).join("-").toLowerCase();
}
static getPropertyNames(proto) {
const props = [];
while (proto && proto !== Tonic.prototype) {
props.push(...Object.getOwnPropertyNames(proto));
proto = Object.getPrototypeOf(proto);
}
return props;
}
/**
* Add a component. Calls `window.customElements.define` with the
* component's name.
*
* @param {TonicComponent} c
* @param {string} [htmlName] Name of the element, default to the class name
* @returns {void}
*/
static add(c, htmlName) {
const hasValidName = htmlName || c.name && c.name.length > 1;
if (!hasValidName) {
throw Error("Mangling. https://bit.ly/2TkJ6zP");
}
if (!htmlName) htmlName = Tonic.getTagName(c.name);
if (!Tonic.ssr && window.customElements.get(htmlName)) {
throw new Error(`Cannot Tonic.add(${c.name}, '${htmlName}') twice`);
}
if (!c.prototype || !c.prototype.isTonicComponent) {
const tmp = { [c.name]: class extends Tonic {
} }[c.name];
tmp.prototype.render = c;
c = tmp;
}
c.prototype._props = Tonic.getPropertyNames(c.prototype);
Tonic._reg[htmlName] = c;
Tonic._tags = Object.keys(Tonic._reg).join();
window.customElements.define(htmlName, c);
if (typeof c.stylesheet === "function") {
Tonic.registerStyles(c.stylesheet);
}
return c;
}
static registerStyles(stylesheetFn) {
if (Tonic._stylesheetRegistry.includes(stylesheetFn)) return;
Tonic._stylesheetRegistry.push(stylesheetFn);
const styleNode = document.createElement("style");
if (Tonic.nonce) styleNode.setAttribute("nonce", Tonic.nonce);
styleNode.appendChild(document.createTextNode(stylesheetFn()));
if (document.head) document.head.appendChild(styleNode);
}
static escape(s) {
return s.replace(Tonic.ESC, (c) => Tonic.MAP[c]);
}
static unsafeRawString(s, templateStrings) {
return new TonicTemplate(s, templateStrings, true);
}
/**
* Emit a regular, non-namespaced event.
*
* @param {string} eventName Event name as a string.
* @param {any} detail Any data to go with the event.
*/
dispatch(eventName, detail = null) {
const opts = { bubbles: true, detail };
this.dispatchEvent(new window.CustomEvent(eventName, opts));
}
/**
* Emit a namespaced event, using a convention for event names.
*
* @example
* myComponent.emit('test') // => `my-compnent:test`
*
* @param {string} type The event type, comes after `:` in event name.
* @param {string|object|any[]} detail detail for Event constructor
* @param {{ bubbles?:boolean, cancelable?:boolean }} opts `Cancelable` and
* `bubbles`
* @returns {boolean}
*/
emit(type, detail = {}, opts = {}) {
const namespace = Tonic.getTagName(this.constructor.name);
const event = new CustomEvent(`${namespace}:${type}`, {
bubbles: opts.bubbles === void 0 ? true : opts.bubbles,
cancelable: opts.cancelable === void 0 ? true : opts.cancelable,
detail
});
return this.dispatchEvent(event);
}
html(strings, ...values) {
const refs = /* @__PURE__ */ __name((o) => {
if (o && o.__children__) return this._placehold(o);
if (o && o.isTonicTemplate) return o.rawText;
switch (Object.prototype.toString.call(o)) {
case "[object HTMLCollection]":
case "[object NodeList]":
return this._placehold([...o]);
case "[object Array]": {
if (o.every((x) => x.isTonicTemplate && !x.unsafe)) {
return new TonicTemplate(o.join("\n"), null, false);
}
return this._prop(o);
}
case "[object Object]":
case "[object Function]":
case "[object AsyncFunction]":
case "[object Set]":
case "[object Map]":
case "[object WeakMap]":
case "[object File]":
return this._prop(o);
case "[object NamedNodeMap]":
return this._prop(Tonic._normalizeAttrs(o));
case "[object Number]":
return `${o}__float`;
case "[object String]":
return Tonic.escape(o);
case "[object Boolean]":
return `${o}__boolean`;
case "[object Null]":
return `${o}__null`;
case "[object HTMLElement]":
return this._placehold([o]);
}
if (typeof o === "object" && o && o.nodeType === 1 && typeof o.cloneNode === "function") {
return this._placehold([o]);
}
return o;
}, "refs");
const out = [];
for (let i = 0; i < strings.length - 1; i++) {
out.push(strings[i], refs(values[i]));
}
out.push(strings[strings.length - 1]);
const htmlStr = out.join("").replace(Tonic.SPREAD, (_, p) => {
const o = Tonic._data[p.split("__")[1]][p];
return Object.entries(o).map(([key, value]) => {
const k = key.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
if (value === true) return k;
else if (value) return `${k}="${Tonic.escape(String(value))}"`;
else return "";
}).filter(Boolean).join(" ");
});
return new TonicTemplate(htmlStr, strings, false);
}
scheduleReRender(oldProps) {
if (this.pendingReRender) return this.pendingReRender;
this.pendingReRender = new Promise((resolve) => setTimeout(() => {
if (!this.isInDocument(this.shadowRoot || this)) return;
const p = this._set(this.shadowRoot || this, this.render);
this.pendingReRender = null;
if (p && p.then) {
return p.then(() => {
this.updated && this.updated(oldProps);
resolve(this);
});
}
this.updated && this.updated(oldProps);
resolve(this);
}, 0));
return this.pendingReRender;
}
/**
* Update the view
*/
reRender(o = this.props) {
const oldProps = { ...this.props };
this.props = typeof o === "function" ? o(oldProps) : o;
return this.scheduleReRender(oldProps);
}
/**
* If there is a method with the same name as the event type,
* then call the method.
* @see {@link https://gomakethings.com/the-handleevent-method-is-the-absolute-best-way-to-handle-events-in-web-components/#what-is-the-handleevent-method What is the handleEvent() method?}
*/
handleEvent(ev) {
this[ev.type] && this[ev.type](ev);
}
_drainIterator(target, iterator) {
return iterator.next().then((result) => {
this._set(target, null, result.value);
if (result.done) return;
return this._drainIterator(target, iterator);
});
}
/**
* _set
* @param {Element|InstanceType<typeof Tonic>|ShadowRoot} target
* @param {()=>any} render
* @param {string} content
* @returns {Promise<void>|void}
* @private
*/
_set(target, render, content = "") {
this.willRender && this.willRender();
for (const node of target.querySelectorAll(Tonic._tags)) {
if (!node.isTonicComponent) continue;
const id = node.getAttribute("id");
if (!id || !Tonic._refIds.includes(id)) continue;
Tonic._states[id] = node.state;
}
if (render instanceof Tonic.AsyncFunction) {
return render.call(this, this.html, this.props).then((content2) => this._apply(target, content2));
} else if (render instanceof Tonic.AsyncFunctionGenerator) {
return this._drainIterator(target, render.call(this));
} else if (render === null) {
this._apply(target, content);
} else if (render instanceof Function) {
this._apply(target, render.call(this, this.html, this.props) || "");
}
}
_apply(target, content) {
if (content && content.isTonicTemplate) {
content = content.rawText;
} else if (typeof content === "string") {
content = Tonic.escape(content);
}
if (typeof content === "string") {
if (this.stylesheet) {
content = `<style nonce=${Tonic.nonce || ""}>${this.stylesheet()}</style>${content}`;
}
target.innerHTML = content;
if (this.styles) {
const styles = this.styles();
for (const node of target.querySelectorAll("[styles]")) {
for (const s of node.getAttribute("styles").split(/\s+/)) {
Object.assign(node.style, styles[s.trim()]);
}
}
}
const children = Tonic._children[this._id] || {};
const walk = /* @__PURE__ */ __name((node, fn) => {
if (node.nodeType === 3) {
const id = node.textContent.trim();
if (children[id]) fn(node, children[id], id);
}
const childNodes = node.childNodes;
if (!childNodes) return;
for (let i = 0; i < childNodes.length; i++) {
walk(childNodes[i], fn);
}
}, "walk");
walk(target, (node, children2, id) => {
for (const child of children2) {
node.parentNode.insertBefore(child, node);
}
delete Tonic._children[this._id][id];
node.parentNode.removeChild(node);
});
} else {
target.innerHTML = "";
target.appendChild(content.cloneNode(true));
}
}
connectedCallback() {
this.root = this.shadowRoot || this;
if (super.id && !Tonic._refIds.includes(super.id)) {
Tonic._refIds.push(super.id);
}
const cc = /* @__PURE__ */ __name((s) => s.replace(/-(.)/g, (_, m) => m.toUpperCase()), "cc");
for (const { name: _name, value } of this.attributes) {
const name = cc(_name);
const p = this.props[name] = value;
if (/__\w+__\w+__/.test(p)) {
const { 1: root } = p.split("__");
this.props[name] = Tonic._data[root][p];
} else if (/\d+__float/.test(p)) {
this.props[name] = parseFloat(p);
} else if (p === "null__null") {
this.props[name] = null;
} else if (/\w+__boolean/.test(p)) {
this.props[name] = p.includes("true");
} else if (/placehold:\w+:\w+__/.test(p)) {
const { 1: root } = p.split(":");
this.props[name] = Tonic._children[root][p][0];
}
}
this.props = Object.assign(
this.defaults ? this.defaults() : {},
this.props
);
this._id = this._id || Tonic._createId();
this.willConnect && this.willConnect();
if (!this.isInDocument(this.root)) return;
if (!this.preventRenderOnReconnect) {
if (!this._source) {
this._source = this.innerHTML;
} else {
this.innerHTML = this._source;
}
const p = this._set(this.root, this.render);
if (p && p.then) return p.then(() => this.connected && this.connected());
}
this.connected && this.connected();
}
isInDocument(target) {
const root = target.getRootNode();
return root === document || root.toString() === "[object ShadowRoot]";
}
disconnectedCallback() {
this.disconnected && this.disconnected();
delete Tonic._data[this._id];
delete Tonic._children[this._id];
}
}
const defaultSizes = [1024, 768, 480];
function defaultSrcset(filename) {
const URIs = getSrcset(filename, defaultSizes);
return URIs;
}
function getSrcset(filename, sizes) {
// return filenames like `file-480.jpg`
return sizes.map(n => {
return getSrcsetItem(filename, n);
}).join(', ');
}
function getSrcsetItem(filename, n) {
const fileParts = filename.split('.');
const ext = fileParts.pop();
const noExt = fileParts.join('.');
return noExt + `-${n}.${ext} ${n}w`;
}
// @ts-check
/**
* create an `img` component that uses locally hosted files
*/
class ImageTag extends Tonic {
render () {
const {
className,
filename,
decoding,
loading,
fetchpriority,
sources
} = this.props;
const sizes = this.props.sizes || ['100vw'];
const _class = (this.props.class || className);
const srcset = sources ?
getSrcset(filename, sources) :
defaultSrcset(filename);
return this.html`<div class=${'image' + (_class ? ` ${_class}` : '')}>
<img
srcset="${srcset}"
sizes="${sizes}"
src="${filename}"
decoding="${decoding || 'auto'}"
loading="${loading || 'lazy'}"
fetchpriority="${fetchpriority || 'low'}"
/>
</div>`
}
}
/**
* A `tonic` component for images.
* Be sure to pass an `id` in HTML to the component. Also takes a prop
* `blurPlaceholder`, which is a base64 string to use inline as src,
* and a prop `filename` -- the filename to fetch
* @returns {HTMLElement} HTML element created with `tonic`
* @description HTML element takes these props:
* * srcset -- an array of numbers for widths
* * filename -- the filename for src attribute
*/
class BlurredImage extends Tonic {
constructor () {
super();
const imgLarge = new window.Image();
imgLarge.classList.add('sharp');
this.state = { blurry: true, imgLarge };
imgLarge.onload = async () => {
this.state.blurry = false;
await this.reRender();
const placeholder = this.querySelector('.placeholder');
imgLarge.classList.add('loaded');
if (placeholder) placeholder.appendChild(imgLarge);
};
}
getImg () {
const { filename, sizes, sources } = this.props;
const { imgLarge } = this.state;
const srcset = sources ?
getSrcset(filename, sources) :
defaultSrcset(filename);
imgLarge.setAttribute('srcset', srcset);
imgLarge.setAttribute('sizes', sizes);
imgLarge.src = filename;
}
render () {
const { blurplaceholder, className } = this.props;
const _class = (this.props.class || className);
if (this.state.blurry) {
this.getImg();
}
return this.html`<div
class="${('image placeholder' + (_class ? ` ${_class}` : ''))}"
>
<img class="blurry" src=${blurplaceholder} />
</div>`
}
}
const placeholderImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAgICAgJCAkKCgkNDgwODRMSEBASEx0VFhUWFR0sHCAcHCAcLCcvJiQmLydGNzExN0ZRREBEUWJYWGJ8dnyiotkBCAgICAkICQoKCQ0ODA4NExIQEBITHRUWFRYVHSwcIBwcIBwsJy8mJCYvJ0Y3MTE3RlFEQERRYlhYYnx2fKKi2f/AABEIADIAMgMBIgACEQEDEQH/xAB4AAACAwEBAQAAAAAAAAAAAAAABgQFBwIDARAAAgEEAQMBBQYHAAAAAAAAAQIDAAQFERIGEzFyBxQhQVEVIiNhsbIzNTZxdIGRAQEBAQEAAAAAAAAAAAAAAAACAQMAEQEBAQEBAQEBAAAAAAAAAAABAAJBMRESIf/aAAwDAQACEQMRAD8A1vLJuKL1VRzQco6ZMov4cPqNVipsaoPrLknTmCGPlPMsY3rbECki/wA52LqVYJEkj7Z4EEnRP1q7v+nZ8xlLuRsiqRQvwijC8iBoE7rsez661aFUnfveSQvq2KgFaPHl8UURHuwW0AWIIBNOPSsI+0pXHjsmk296Js4feBcXFzB2zsq3H4BqfuhcbJZ45OcolO3UP9VHioB9EaM68aK9uNFaxoWSH4cXqqBCu9VYZL+EnqqBEwVdmi+15U5tYIbi5lRdM7EtTxYzRnH2bsVLCFCPy+FZXL1NiffXtvel7nMrrR8iuhkcUH7e4OXILrQ8kbo/0fpLky5NIrq7yYcbUlV/4gq5w8EcOPt0QaGm/Ws9yGdx+Ogcc4g7LyEYIBan7AXSXWIspk8PEDVyRWttUV9op0q7IEdlf70hdR9SW+NtzCjBp28LTll45ZrN0il7bkHT63qsCsMI2b6kvsdHkhIYFLyzkedEAgVO1o2NiEj3Vzw+4geWQn5/PVNvRlxDm7+XuKAibdtj6DVJucu0wuUzOPtotxyRwopJ8aQbP+91dezq5t7RsrJNKFkeJEiG6eRULPaZytK6sxdvLeCKIBHHxQ/Xl4Wnv2b3ofECzL7kgLbH5E7pD6pmN1KX1w3GVX5HY8EVc9Av3stFfIw43NnLzUfKRCvOlr1jh/WS2jdFeW6KztZc6od4+n8o6OVZbWUgg6IPGsT9k/8APb7/AAH/AHrRRVul/rH+p8h6o/2CukVfszfEb2aKKePWz3yYevI0jx+FMaBSyNvQ1v7oq69kvi6/KT9VooocnbbRRRUrf//Z';
const sizes = ['50vw'];
const imgUrl = new URL("/image/assets/100-CR9fdtDl.jpg", import.meta.url).href;
class TheApp extends Tonic {
render () {
return this.html`<div class="the-app">
<p>image</p>
<image-tag
id="tag-test"
filename="/100.jpg"
sizes=${sizes.join(', ')}
></image-tag>
<p>blurred placeholder image</p>
<blurred-image
id="test"
filename="${imgUrl}"
blurplaceholder=${placeholderImg}
sizes=${sizes.join(', ')}
></blurred-image>
</div>`
}
}
Tonic.add(ImageTag, 'image-tag');
Tonic.add(BlurredImage, 'blurred-image');
Tonic.add(TheApp, 'the-app');
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtekZ5STl0T3YuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ac3Vic3RyYXRlLXN5c3RlbS90b25pYy9kaXN0L3RvbmljLmpzIiwiLi4vLi4vLi4vZGlzdC9zcmNzZXQuanMiLCIuLi8uLi8uLi9kaXN0L3RvbmljLmpzIiwiLi4vLi4vdG9uaWMtbG9jYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmV4cG9ydCBjbGFzcyBUb25pY1RlbXBsYXRlIHtcbiAgc3RhdGljIHtcbiAgICBfX25hbWUodGhpcywgXCJUb25pY1RlbXBsYXRlXCIpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHJhd1RleHQsIHRlbXBsYXRlU3RyaW5ncywgdW5zYWZlKSB7XG4gICAgdGhpcy5pc1RvbmljVGVtcGxhdGUgPSB0cnVlO1xuICAgIHRoaXMudW5zYWZlID0gISF1bnNhZmU7XG4gICAgdGhpcy5yYXdUZXh0ID0gcmF3VGV4dDtcbiAgICB0aGlzLnRlbXBsYXRlU3RyaW5ncyA9IHRlbXBsYXRlU3RyaW5ncztcbiAgfVxuICB2YWx1ZU9mKCkge1xuICAgIHJldHVybiB0aGlzLnJhd1RleHQ7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMucmF3VGV4dDtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIFRvbmljIGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9wcm9wcyA9IFRvbmljLmdldFByb3BlcnR5TmFtZXModGhpcyk7XG4gICAgY29uc3Qgc3RhdGUgPSBUb25pYy5fc3RhdGVzW3N1cGVyLmlkXTtcbiAgICBkZWxldGUgVG9uaWMuX3N0YXRlc1tzdXBlci5pZF07XG4gICAgdGhpcy5fc3RhdGUgPSBzdGF0ZSB8fCB7fTtcbiAgICB0aGlzLnByZXZlbnRSZW5kZXJPblJlY29ubmVjdCA9IGZhbHNlO1xuICAgIHRoaXMucHJvcHMgPSB7fTtcbiAgICB0aGlzLmVsZW1lbnRzID0gWy4uLnRoaXMuY2hpbGRyZW5dO1xuICAgIHRoaXMuZWxlbWVudHMuX19jaGlsZHJlbl9fID0gdHJ1ZTtcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMuY2hpbGROb2Rlc107XG4gICAgdGhpcy5ub2Rlcy5fX2NoaWxkcmVuX18gPSB0cnVlO1xuICAgIHRoaXMuX2V2ZW50cygpO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgX19uYW1lKHRoaXMsIFwiVG9uaWNcIik7XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLl90YWdzID0gXCJcIjtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuX3JlZklkcyA9IFtdO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5fZGF0YSA9IHt9O1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5fc3RhdGVzID0ge307XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5fcmVnID0ge307XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLl9zdHlsZXNoZWV0UmVnaXN0cnkgPSBbXTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuX2luZGV4ID0gMDtcbiAgfVxuICAvLyBAdHMtZXhwZWN0LWVycm9yIFZFUlNJT04gaXMgaW5qZWN0ZWQgZHVyaW5nIGJ1aWxkXG4gIHN0YXRpYyBnZXQgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gXCIxNi4wLjlcIjtcbiAgfVxuICBzdGF0aWMgZ2V0IFNQUkVBRCgpIHtcbiAgICByZXR1cm4gL1xcLlxcLlxcLlxccz8oX19cXHcrX19cXHcrX18pL2c7XG4gIH1cbiAgc3RhdGljIGdldCBFU0MoKSB7XG4gICAgcmV0dXJuIC9bXCImJzw+YC9dL2c7XG4gIH1cbiAgc3RhdGljIGdldCBBc3luY0Z1bmN0aW9uR2VuZXJhdG9yKCkge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiogKCkge1xuICAgIH0uY29uc3RydWN0b3I7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHN0YXRpYyBnZXQgQXN5bmNGdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgfS5jb25zdHJ1Y3RvcjtcbiAgfVxuICBzdGF0aWMgZ2V0IE1BUCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1wiJzogXCImcXVvdDtcIixcbiAgICAgIFwiJlwiOiBcIiZhbXA7XCIsXG4gICAgICBcIidcIjogXCImI3gyNztcIixcbiAgICAgIFwiPFwiOiBcIiZsdDtcIixcbiAgICAgIFwiPlwiOiBcIiZndDtcIixcbiAgICAgIFwiYFwiOiBcIiYjeDYwO1wiLFxuICAgICAgXCIvXCI6IFwiJiN4MkY7XCJcbiAgICB9O1xuICB9XG4gIGdldCBpc1RvbmljQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgYSBuYW1lc3BhY2VkIGV2ZW50IG5hbWUsIGdpdmVuIGEgbm9uLW5hbWVzcGFjZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBNeUVsZW1lbnQuZXZlbnQoJ2V4YW1wbGUnKSAgLy8gPT4gbXktZWxlbWVudDpleGFtcGxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFRoZSBuYW1lIG9mIHRoZSBldmVudFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZXNwYWNlZCBldmVudCBuYW1lXG4gICAqL1xuICBzdGF0aWMgZXZlbnQodHlwZSkge1xuICAgIHJldHVybiBgJHt0aGlzLnRhZ306JHt0eXBlfWA7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgdGFnIG5hbWUgb2YgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBzdGF0aWMgZ2V0IHRhZygpIHtcbiAgICByZXR1cm4gVG9uaWMuZ2V0VGFnTmFtZSh0aGlzLm5hbWUpO1xuICB9XG4gIHN0YXRpYyBfY3JlYXRlSWQoKSB7XG4gICAgcmV0dXJuIGB0b25pYyR7VG9uaWMuX2luZGV4Kyt9YDtcbiAgfVxuICBzdGF0aWMgX25vcm1hbGl6ZUF0dHJzKG8sIHggPSB7fSkge1xuICAgIFsuLi5vXS5mb3JFYWNoKChvMikgPT4geFtvMi5uYW1lXSA9IG8yLnZhbHVlKTtcbiAgICByZXR1cm4geDtcbiAgfVxuICBfY2hlY2tJZCgpIHtcbiAgICBjb25zdCBfaWQgPSBzdXBlci5pZDtcbiAgICBpZiAoIV9pZCkge1xuICAgICAgY29uc3QgaHRtbCA9IHRoaXMub3V0ZXJIVE1MLnJlcGxhY2UodGhpcy5pbm5lckhUTUwsIFwiLi4uXCIpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQ6ICR7aHRtbH0gaGFzIG5vIGlkYCk7XG4gICAgfVxuICAgIHJldHVybiBfaWQ7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgY29tcG9uZW50IHN0YXRlIHByb3BlcnR5LlxuICAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGVja0lkKCksIHRoaXMuX3N0YXRlO1xuICB9XG4gIHNldCBzdGF0ZShuZXdTdGF0ZSkge1xuICAgIHRoaXMuX3N0YXRlID0gKHRoaXMuX2NoZWNrSWQoKSwgbmV3U3RhdGUpO1xuICB9XG4gIF9ldmVudHMoKSB7XG4gICAgY29uc3QgaHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlKTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5fcHJvcHMpIHtcbiAgICAgIGlmIChocC5pbmRleE9mKFwib25cIiArIHApID09PSAtMSkgY29udGludWU7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIocCwgdGhpcyk7XG4gICAgfVxuICB9XG4gIF9wcm9wKG8pIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuX2lkO1xuICAgIGNvbnN0IHAgPSBgX18ke2lkfV9fJHtUb25pYy5fY3JlYXRlSWQoKX1fX2A7XG4gICAgVG9uaWMuX2RhdGFbaWRdID0gVG9uaWMuX2RhdGFbaWRdIHx8IHt9O1xuICAgIFRvbmljLl9kYXRhW2lkXVtwXSA9IG87XG4gICAgcmV0dXJuIHA7XG4gIH1cbiAgX3BsYWNlaG9sZChyKSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLl9pZDtcbiAgICBjb25zdCByZWYgPSBgcGxhY2Vob2xkOiR7aWR9OiR7VG9uaWMuX2NyZWF0ZUlkKCl9X19gO1xuICAgIFRvbmljLl9jaGlsZHJlbltpZF0gPSBUb25pYy5fY2hpbGRyZW5baWRdIHx8IHt9O1xuICAgIFRvbmljLl9jaGlsZHJlbltpZF1bcmVmXSA9IHI7XG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuICBzdGF0aWMgbWF0Y2goZWwsIHMpIHtcbiAgICBpZiAoIWVsLm1hdGNoZXMpIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICByZXR1cm4gZWwubWF0Y2hlcyhzKSA/IGVsIDogZWwuY2xvc2VzdChzKTtcbiAgfVxuICBzdGF0aWMgZ2V0VGFnTmFtZShjYW1lbE5hbWUpIHtcbiAgICByZXR1cm4gY2FtZWxOYW1lLm1hdGNoKC9bQS1aXVthLXowLTldKi9nKS5qb2luKFwiLVwiKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHN0YXRpYyBnZXRQcm9wZXJ0eU5hbWVzKHByb3RvKSB7XG4gICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICB3aGlsZSAocHJvdG8gJiYgcHJvdG8gIT09IFRvbmljLnByb3RvdHlwZSkge1xuICAgICAgcHJvcHMucHVzaCguLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykpO1xuICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cbiAgLyoqXG4gICAqIEFkZCBhIGNvbXBvbmVudC4gQ2FsbHMgYHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmVgIHdpdGggdGhlXG4gICAqIGNvbXBvbmVudCdzIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7VG9uaWNDb21wb25lbnR9IGNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtodG1sTmFtZV0gTmFtZSBvZiB0aGUgZWxlbWVudCwgZGVmYXVsdCB0byB0aGUgY2xhc3MgbmFtZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBhZGQoYywgaHRtbE5hbWUpIHtcbiAgICBjb25zdCBoYXNWYWxpZE5hbWUgPSBodG1sTmFtZSB8fCBjLm5hbWUgJiYgYy5uYW1lLmxlbmd0aCA+IDE7XG4gICAgaWYgKCFoYXNWYWxpZE5hbWUpIHtcbiAgICAgIHRocm93IEVycm9yKFwiTWFuZ2xpbmcuIGh0dHBzOi8vYml0Lmx5LzJUa0o2elBcIik7XG4gICAgfVxuICAgIGlmICghaHRtbE5hbWUpIGh0bWxOYW1lID0gVG9uaWMuZ2V0VGFnTmFtZShjLm5hbWUpO1xuICAgIGlmICghVG9uaWMuc3NyICYmIHdpbmRvdy5jdXN0b21FbGVtZW50cy5nZXQoaHRtbE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBUb25pYy5hZGQoJHtjLm5hbWV9LCAnJHtodG1sTmFtZX0nKSB0d2ljZWApO1xuICAgIH1cbiAgICBpZiAoIWMucHJvdG90eXBlIHx8ICFjLnByb3RvdHlwZS5pc1RvbmljQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCB0bXAgPSB7IFtjLm5hbWVdOiBjbGFzcyBleHRlbmRzIFRvbmljIHtcbiAgICAgIH0gfVtjLm5hbWVdO1xuICAgICAgdG1wLnByb3RvdHlwZS5yZW5kZXIgPSBjO1xuICAgICAgYyA9IHRtcDtcbiAgICB9XG4gICAgYy5wcm90b3R5cGUuX3Byb3BzID0gVG9uaWMuZ2V0UHJvcGVydHlOYW1lcyhjLnByb3RvdHlwZSk7XG4gICAgVG9uaWMuX3JlZ1todG1sTmFtZV0gPSBjO1xuICAgIFRvbmljLl90YWdzID0gT2JqZWN0LmtleXMoVG9uaWMuX3JlZykuam9pbigpO1xuICAgIHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoaHRtbE5hbWUsIGMpO1xuICAgIGlmICh0eXBlb2YgYy5zdHlsZXNoZWV0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIFRvbmljLnJlZ2lzdGVyU3R5bGVzKGMuc3R5bGVzaGVldCk7XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9XG4gIHN0YXRpYyByZWdpc3RlclN0eWxlcyhzdHlsZXNoZWV0Rm4pIHtcbiAgICBpZiAoVG9uaWMuX3N0eWxlc2hlZXRSZWdpc3RyeS5pbmNsdWRlcyhzdHlsZXNoZWV0Rm4pKSByZXR1cm47XG4gICAgVG9uaWMuX3N0eWxlc2hlZXRSZWdpc3RyeS5wdXNoKHN0eWxlc2hlZXRGbik7XG4gICAgY29uc3Qgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgIGlmIChUb25pYy5ub25jZSkgc3R5bGVOb2RlLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIFRvbmljLm5vbmNlKTtcbiAgICBzdHlsZU5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3R5bGVzaGVldEZuKCkpKTtcbiAgICBpZiAoZG9jdW1lbnQuaGVhZCkgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZU5vZGUpO1xuICB9XG4gIHN0YXRpYyBlc2NhcGUocykge1xuICAgIHJldHVybiBzLnJlcGxhY2UoVG9uaWMuRVNDLCAoYykgPT4gVG9uaWMuTUFQW2NdKTtcbiAgfVxuICBzdGF0aWMgdW5zYWZlUmF3U3RyaW5nKHMsIHRlbXBsYXRlU3RyaW5ncykge1xuICAgIHJldHVybiBuZXcgVG9uaWNUZW1wbGF0ZShzLCB0ZW1wbGF0ZVN0cmluZ3MsIHRydWUpO1xuICB9XG4gIC8qKlxuICAgKiBFbWl0IGEgcmVndWxhciwgbm9uLW5hbWVzcGFjZWQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgRXZlbnQgbmFtZSBhcyBhIHN0cmluZy5cbiAgICogQHBhcmFtIHthbnl9IGRldGFpbCBBbnkgZGF0YSB0byBnbyB3aXRoIHRoZSBldmVudC5cbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50TmFtZSwgZGV0YWlsID0gbnVsbCkge1xuICAgIGNvbnN0IG9wdHMgPSB7IGJ1YmJsZXM6IHRydWUsIGRldGFpbCB9O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50TmFtZSwgb3B0cykpO1xuICB9XG4gIC8qKlxuICAgKiBFbWl0IGEgbmFtZXNwYWNlZCBldmVudCwgdXNpbmcgYSBjb252ZW50aW9uIGZvciBldmVudCBuYW1lcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbXlDb21wb25lbnQuZW1pdCgndGVzdCcpICAvLyA9PiBgbXktY29tcG5lbnQ6dGVzdGBcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIGV2ZW50IHR5cGUsIGNvbWVzIGFmdGVyIGA6YCBpbiBldmVudCBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R8YW55W119IGRldGFpbCBkZXRhaWwgZm9yIEV2ZW50IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7eyBidWJibGVzPzpib29sZWFuLCBjYW5jZWxhYmxlPzpib29sZWFuIH19IG9wdHMgYENhbmNlbGFibGVgIGFuZFxuICAgKiBgYnViYmxlc2BcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBlbWl0KHR5cGUsIGRldGFpbCA9IHt9LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBUb25pYy5nZXRUYWdOYW1lKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoYCR7bmFtZXNwYWNlfToke3R5cGV9YCwge1xuICAgICAgYnViYmxlczogb3B0cy5idWJibGVzID09PSB2b2lkIDAgPyB0cnVlIDogb3B0cy5idWJibGVzLFxuICAgICAgY2FuY2VsYWJsZTogb3B0cy5jYW5jZWxhYmxlID09PSB2b2lkIDAgPyB0cnVlIDogb3B0cy5jYW5jZWxhYmxlLFxuICAgICAgZGV0YWlsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH1cbiAgaHRtbChzdHJpbmdzLCAuLi52YWx1ZXMpIHtcbiAgICBjb25zdCByZWZzID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgobykgPT4ge1xuICAgICAgaWYgKG8gJiYgby5fX2NoaWxkcmVuX18pIHJldHVybiB0aGlzLl9wbGFjZWhvbGQobyk7XG4gICAgICBpZiAobyAmJiBvLmlzVG9uaWNUZW1wbGF0ZSkgcmV0dXJuIG8ucmF3VGV4dDtcbiAgICAgIHN3aXRjaCAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pKSB7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXVwiOlxuICAgICAgICBjYXNlIFwiW29iamVjdCBOb2RlTGlzdF1cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkKFsuLi5vXSk7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IEFycmF5XVwiOiB7XG4gICAgICAgICAgaWYgKG8uZXZlcnkoKHgpID0+IHguaXNUb25pY1RlbXBsYXRlICYmICF4LnVuc2FmZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVG9uaWNUZW1wbGF0ZShvLmpvaW4oXCJcXG5cIiksIG51bGwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3Aobyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIltvYmplY3QgT2JqZWN0XVwiOlxuICAgICAgICBjYXNlIFwiW29iamVjdCBGdW5jdGlvbl1cIjpcbiAgICAgICAgY2FzZSBcIltvYmplY3QgQXN5bmNGdW5jdGlvbl1cIjpcbiAgICAgICAgY2FzZSBcIltvYmplY3QgU2V0XVwiOlxuICAgICAgICBjYXNlIFwiW29iamVjdCBNYXBdXCI6XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IFdlYWtNYXBdXCI6XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IEZpbGVdXCI6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3Aobyk7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IE5hbWVkTm9kZU1hcF1cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvcChUb25pYy5fbm9ybWFsaXplQXR0cnMobykpO1xuICAgICAgICBjYXNlIFwiW29iamVjdCBOdW1iZXJdXCI6XG4gICAgICAgICAgcmV0dXJuIGAke299X19mbG9hdGA7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IFN0cmluZ11cIjpcbiAgICAgICAgICByZXR1cm4gVG9uaWMuZXNjYXBlKG8pO1xuICAgICAgICBjYXNlIFwiW29iamVjdCBCb29sZWFuXVwiOlxuICAgICAgICAgIHJldHVybiBgJHtvfV9fYm9vbGVhbmA7XG4gICAgICAgIGNhc2UgXCJbb2JqZWN0IE51bGxdXCI6XG4gICAgICAgICAgcmV0dXJuIGAke299X19udWxsYDtcbiAgICAgICAgY2FzZSBcIltvYmplY3QgSFRNTEVsZW1lbnRdXCI6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZChbb10pO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBvID09PSBcIm9iamVjdFwiICYmIG8gJiYgby5ub2RlVHlwZSA9PT0gMSAmJiB0eXBlb2Ygby5jbG9uZU5vZGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkKFtvXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbztcbiAgICB9LCBcInJlZnNcIik7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgb3V0LnB1c2goc3RyaW5nc1tpXSwgcmVmcyh2YWx1ZXNbaV0pKTtcbiAgICB9XG4gICAgb3V0LnB1c2goc3RyaW5nc1tzdHJpbmdzLmxlbmd0aCAtIDFdKTtcbiAgICBjb25zdCBodG1sU3RyID0gb3V0LmpvaW4oXCJcIikucmVwbGFjZShUb25pYy5TUFJFQUQsIChfLCBwKSA9PiB7XG4gICAgICBjb25zdCBvID0gVG9uaWMuX2RhdGFbcC5zcGxpdChcIl9fXCIpWzFdXVtwXTtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBrID0ga2V5LnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIFwiJDEtJDJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSByZXR1cm4gaztcbiAgICAgICAgZWxzZSBpZiAodmFsdWUpIHJldHVybiBgJHtrfT1cIiR7VG9uaWMuZXNjYXBlKFN0cmluZyh2YWx1ZSkpfVwiYDtcbiAgICAgICAgZWxzZSByZXR1cm4gXCJcIjtcbiAgICAgIH0pLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFRvbmljVGVtcGxhdGUoaHRtbFN0ciwgc3RyaW5ncywgZmFsc2UpO1xuICB9XG4gIHNjaGVkdWxlUmVSZW5kZXIob2xkUHJvcHMpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nUmVSZW5kZXIpIHJldHVybiB0aGlzLnBlbmRpbmdSZVJlbmRlcjtcbiAgICB0aGlzLnBlbmRpbmdSZVJlbmRlciA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0luRG9jdW1lbnQodGhpcy5zaGFkb3dSb290IHx8IHRoaXMpKSByZXR1cm47XG4gICAgICBjb25zdCBwID0gdGhpcy5fc2V0KHRoaXMuc2hhZG93Um9vdCB8fCB0aGlzLCB0aGlzLnJlbmRlcik7XG4gICAgICB0aGlzLnBlbmRpbmdSZVJlbmRlciA9IG51bGw7XG4gICAgICBpZiAocCAmJiBwLnRoZW4pIHtcbiAgICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVkICYmIHRoaXMudXBkYXRlZChvbGRQcm9wcyk7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZWQgJiYgdGhpcy51cGRhdGVkKG9sZFByb3BzKTtcbiAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgfSwgMCkpO1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZVJlbmRlcjtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2aWV3XG4gICAqL1xuICByZVJlbmRlcihvID0gdGhpcy5wcm9wcykge1xuICAgIGNvbnN0IG9sZFByb3BzID0geyAuLi50aGlzLnByb3BzIH07XG4gICAgdGhpcy5wcm9wcyA9IHR5cGVvZiBvID09PSBcImZ1bmN0aW9uXCIgPyBvKG9sZFByb3BzKSA6IG87XG4gICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVSZVJlbmRlcihvbGRQcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZXJlIGlzIGEgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQgdHlwZSxcbiAgICogdGhlbiBjYWxsIHRoZSBtZXRob2QuXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ29tYWtldGhpbmdzLmNvbS90aGUtaGFuZGxlZXZlbnQtbWV0aG9kLWlzLXRoZS1hYnNvbHV0ZS1iZXN0LXdheS10by1oYW5kbGUtZXZlbnRzLWluLXdlYi1jb21wb25lbnRzLyN3aGF0LWlzLXRoZS1oYW5kbGVldmVudC1tZXRob2QgV2hhdCBpcyB0aGUgaGFuZGxlRXZlbnQoKSBtZXRob2Q/fVxuICAgKi9cbiAgaGFuZGxlRXZlbnQoZXYpIHtcbiAgICB0aGlzW2V2LnR5cGVdICYmIHRoaXNbZXYudHlwZV0oZXYpO1xuICB9XG4gIF9kcmFpbkl0ZXJhdG9yKHRhcmdldCwgaXRlcmF0b3IpIHtcbiAgICByZXR1cm4gaXRlcmF0b3IubmV4dCgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5fc2V0KHRhcmdldCwgbnVsbCwgcmVzdWx0LnZhbHVlKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIHRoaXMuX2RyYWluSXRlcmF0b3IodGFyZ2V0LCBpdGVyYXRvcik7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIF9zZXRcbiAgICogQHBhcmFtIHtFbGVtZW50fEluc3RhbmNlVHlwZTx0eXBlb2YgVG9uaWM+fFNoYWRvd1Jvb3R9IHRhcmdldFxuICAgKiBAcGFyYW0geygpPT5hbnl9IHJlbmRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPnx2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3NldCh0YXJnZXQsIHJlbmRlciwgY29udGVudCA9IFwiXCIpIHtcbiAgICB0aGlzLndpbGxSZW5kZXIgJiYgdGhpcy53aWxsUmVuZGVyKCk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKFRvbmljLl90YWdzKSkge1xuICAgICAgaWYgKCFub2RlLmlzVG9uaWNDb21wb25lbnQpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgaWQgPSBub2RlLmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgaWYgKCFpZCB8fCAhVG9uaWMuX3JlZklkcy5pbmNsdWRlcyhpZCkpIGNvbnRpbnVlO1xuICAgICAgVG9uaWMuX3N0YXRlc1tpZF0gPSBub2RlLnN0YXRlO1xuICAgIH1cbiAgICBpZiAocmVuZGVyIGluc3RhbmNlb2YgVG9uaWMuQXN5bmNGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIHRoaXMuaHRtbCwgdGhpcy5wcm9wcykudGhlbigoY29udGVudDIpID0+IHRoaXMuX2FwcGx5KHRhcmdldCwgY29udGVudDIpKTtcbiAgICB9IGVsc2UgaWYgKHJlbmRlciBpbnN0YW5jZW9mIFRvbmljLkFzeW5jRnVuY3Rpb25HZW5lcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kcmFpbkl0ZXJhdG9yKHRhcmdldCwgcmVuZGVyLmNhbGwodGhpcykpO1xuICAgIH0gZWxzZSBpZiAocmVuZGVyID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9hcHBseSh0YXJnZXQsIGNvbnRlbnQpO1xuICAgIH0gZWxzZSBpZiAocmVuZGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuX2FwcGx5KHRhcmdldCwgcmVuZGVyLmNhbGwodGhpcywgdGhpcy5odG1sLCB0aGlzLnByb3BzKSB8fCBcIlwiKTtcbiAgICB9XG4gIH1cbiAgX2FwcGx5KHRhcmdldCwgY29udGVudCkge1xuICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQuaXNUb25pY1RlbXBsYXRlKSB7XG4gICAgICBjb250ZW50ID0gY29udGVudC5yYXdUZXh0O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnRlbnQgPSBUb25pYy5lc2NhcGUoY29udGVudCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRoaXMuc3R5bGVzaGVldCkge1xuICAgICAgICBjb250ZW50ID0gYDxzdHlsZSBub25jZT0ke1RvbmljLm5vbmNlIHx8IFwiXCJ9PiR7dGhpcy5zdHlsZXNoZWV0KCl9PC9zdHlsZT4ke2NvbnRlbnR9YDtcbiAgICAgIH1cbiAgICAgIHRhcmdldC5pbm5lckhUTUwgPSBjb250ZW50O1xuICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuc3R5bGVzKCk7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0YXJnZXQucXVlcnlTZWxlY3RvckFsbChcIltzdHlsZXNdXCIpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBzIG9mIG5vZGUuZ2V0QXR0cmlidXRlKFwic3R5bGVzXCIpLnNwbGl0KC9cXHMrLykpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obm9kZS5zdHlsZSwgc3R5bGVzW3MudHJpbSgpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IFRvbmljLl9jaGlsZHJlblt0aGlzLl9pZF0gfHwge307XG4gICAgICBjb25zdCB3YWxrID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgobm9kZSwgZm4pID0+IHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IG5vZGUudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICAgIGlmIChjaGlsZHJlbltpZF0pIGZuKG5vZGUsIGNoaWxkcmVuW2lkXSwgaWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub2RlLmNoaWxkTm9kZXM7XG4gICAgICAgIGlmICghY2hpbGROb2RlcykgcmV0dXJuO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB3YWxrKGNoaWxkTm9kZXNbaV0sIGZuKTtcbiAgICAgICAgfVxuICAgICAgfSwgXCJ3YWxrXCIpO1xuICAgICAgd2Fsayh0YXJnZXQsIChub2RlLCBjaGlsZHJlbjIsIGlkKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4yKSB7XG4gICAgICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZCwgbm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIFRvbmljLl9jaGlsZHJlblt0aGlzLl9pZF1baWRdO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0LmlubmVySFRNTCA9IFwiXCI7XG4gICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIH1cbiAgfVxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB0aGlzLnJvb3QgPSB0aGlzLnNoYWRvd1Jvb3QgfHwgdGhpcztcbiAgICBpZiAoc3VwZXIuaWQgJiYgIVRvbmljLl9yZWZJZHMuaW5jbHVkZXMoc3VwZXIuaWQpKSB7XG4gICAgICBUb25pYy5fcmVmSWRzLnB1c2goc3VwZXIuaWQpO1xuICAgIH1cbiAgICBjb25zdCBjYyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKHMpID0+IHMucmVwbGFjZSgvLSguKS9nLCAoXywgbSkgPT4gbS50b1VwcGVyQ2FzZSgpKSwgXCJjY1wiKTtcbiAgICBmb3IgKGNvbnN0IHsgbmFtZTogX25hbWUsIHZhbHVlIH0gb2YgdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBuYW1lID0gY2MoX25hbWUpO1xuICAgICAgY29uc3QgcCA9IHRoaXMucHJvcHNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIGlmICgvX19cXHcrX19cXHcrX18vLnRlc3QocCkpIHtcbiAgICAgICAgY29uc3QgeyAxOiByb290IH0gPSBwLnNwbGl0KFwiX19cIik7XG4gICAgICAgIHRoaXMucHJvcHNbbmFtZV0gPSBUb25pYy5fZGF0YVtyb290XVtwXTtcbiAgICAgIH0gZWxzZSBpZiAoL1xcZCtfX2Zsb2F0Ly50ZXN0KHApKSB7XG4gICAgICAgIHRoaXMucHJvcHNbbmFtZV0gPSBwYXJzZUZsb2F0KHApO1xuICAgICAgfSBlbHNlIGlmIChwID09PSBcIm51bGxfX251bGxcIikge1xuICAgICAgICB0aGlzLnByb3BzW25hbWVdID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoL1xcdytfX2Jvb2xlYW4vLnRlc3QocCkpIHtcbiAgICAgICAgdGhpcy5wcm9wc1tuYW1lXSA9IHAuaW5jbHVkZXMoXCJ0cnVlXCIpO1xuICAgICAgfSBlbHNlIGlmICgvcGxhY2Vob2xkOlxcdys6XFx3K19fLy50ZXN0KHApKSB7XG4gICAgICAgIGNvbnN0IHsgMTogcm9vdCB9ID0gcC5zcGxpdChcIjpcIik7XG4gICAgICAgIHRoaXMucHJvcHNbbmFtZV0gPSBUb25pYy5fY2hpbGRyZW5bcm9vdF1bcF1bMF07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvcHMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgdGhpcy5kZWZhdWx0cyA/IHRoaXMuZGVmYXVsdHMoKSA6IHt9LFxuICAgICAgdGhpcy5wcm9wc1xuICAgICk7XG4gICAgdGhpcy5faWQgPSB0aGlzLl9pZCB8fCBUb25pYy5fY3JlYXRlSWQoKTtcbiAgICB0aGlzLndpbGxDb25uZWN0ICYmIHRoaXMud2lsbENvbm5lY3QoKTtcbiAgICBpZiAoIXRoaXMuaXNJbkRvY3VtZW50KHRoaXMucm9vdCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMucHJldmVudFJlbmRlck9uUmVjb25uZWN0KSB7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZSkge1xuICAgICAgICB0aGlzLl9zb3VyY2UgPSB0aGlzLmlubmVySFRNTDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5uZXJIVE1MID0gdGhpcy5fc291cmNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcCA9IHRoaXMuX3NldCh0aGlzLnJvb3QsIHRoaXMucmVuZGVyKTtcbiAgICAgIGlmIChwICYmIHAudGhlbikgcmV0dXJuIHAudGhlbigoKSA9PiB0aGlzLmNvbm5lY3RlZCAmJiB0aGlzLmNvbm5lY3RlZCgpKTtcbiAgICB9XG4gICAgdGhpcy5jb25uZWN0ZWQgJiYgdGhpcy5jb25uZWN0ZWQoKTtcbiAgfVxuICBpc0luRG9jdW1lbnQodGFyZ2V0KSB7XG4gICAgY29uc3Qgcm9vdCA9IHRhcmdldC5nZXRSb290Tm9kZSgpO1xuICAgIHJldHVybiByb290ID09PSBkb2N1bWVudCB8fCByb290LnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBTaGFkb3dSb290XVwiO1xuICB9XG4gIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgIHRoaXMuZGlzY29ubmVjdGVkICYmIHRoaXMuZGlzY29ubmVjdGVkKCk7XG4gICAgZGVsZXRlIFRvbmljLl9kYXRhW3RoaXMuX2lkXTtcbiAgICBkZWxldGUgVG9uaWMuX2NoaWxkcmVuW3RoaXMuX2lkXTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVG9uaWM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b25pYy5qcy5tYXBcbiIsImV4cG9ydCBjb25zdCBkZWZhdWx0U2l6ZXMgPSBbMTAyNCwgNzY4LCA0ODBdO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRTcmNzZXQoZmlsZW5hbWUpIHtcbiAgICBjb25zdCBVUklzID0gZ2V0U3Jjc2V0KGZpbGVuYW1lLCBkZWZhdWx0U2l6ZXMpO1xuICAgIHJldHVybiBVUklzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNyY3NldChmaWxlbmFtZSwgc2l6ZXMpIHtcbiAgICAvLyByZXR1cm4gZmlsZW5hbWVzIGxpa2UgYGZpbGUtNDgwLmpwZ2BcbiAgICByZXR1cm4gc2l6ZXMubWFwKG4gPT4ge1xuICAgICAgICByZXR1cm4gZ2V0U3Jjc2V0SXRlbShmaWxlbmFtZSwgbik7XG4gICAgfSkuam9pbignLCAnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcmNzZXRJdGVtKGZpbGVuYW1lLCBuKSB7XG4gICAgY29uc3QgZmlsZVBhcnRzID0gZmlsZW5hbWUuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBleHQgPSBmaWxlUGFydHMucG9wKCk7XG4gICAgY29uc3Qgbm9FeHQgPSBmaWxlUGFydHMuam9pbignLicpO1xuICAgIHJldHVybiBub0V4dCArIGAtJHtufS4ke2V4dH0gJHtufXdgO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3Jjc2V0LmpzLm1hcCIsIi8vIEB0cy1jaGVja1xuaW1wb3J0IFRvbmljIGZyb20gJ0BzdWJzdHJhdGUtc3lzdGVtL3RvbmljJ1xuaW1wb3J0IHsgZGVmYXVsdFNyY3NldCwgZ2V0U3Jjc2V0IH0gZnJvbSAnLi9zcmNzZXQuanMnXG5cbi8qKlxuICogY3JlYXRlIGFuIGBpbWdgIGNvbXBvbmVudCB0aGF0IHVzZXMgbG9jYWxseSBob3N0ZWQgZmlsZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEltYWdlVGFnIGV4dGVuZHMgVG9uaWMge1xuICAgIHJlbmRlciAoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgZGVjb2RpbmcsXG4gICAgICAgICAgICBsb2FkaW5nLFxuICAgICAgICAgICAgZmV0Y2hwcmlvcml0eSxcbiAgICAgICAgICAgIHNvdXJjZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHNcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnByb3BzLnNpemVzIHx8IFsnMTAwdncnXVxuICAgICAgICBjb25zdCBfY2xhc3MgPSAodGhpcy5wcm9wcy5jbGFzcyB8fCBjbGFzc05hbWUpXG5cbiAgICAgICAgY29uc3Qgc3Jjc2V0ID0gc291cmNlcyA/XG4gICAgICAgICAgICBnZXRTcmNzZXQoZmlsZW5hbWUsIHNvdXJjZXMpIDpcbiAgICAgICAgICAgIGRlZmF1bHRTcmNzZXQoZmlsZW5hbWUpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHRtbGA8ZGl2IGNsYXNzPSR7J2ltYWdlJyArIChfY2xhc3MgPyBgICR7X2NsYXNzfWAgOiAnJyl9PlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyY3NldD1cIiR7c3Jjc2V0fVwiXG4gICAgICAgICAgICAgICAgc2l6ZXM9XCIke3NpemVzfVwiXG4gICAgICAgICAgICAgICAgc3JjPVwiJHtmaWxlbmFtZX1cIlxuICAgICAgICAgICAgICAgIGRlY29kaW5nPVwiJHtkZWNvZGluZyB8fCAnYXV0byd9XCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwiJHtsb2FkaW5nIHx8ICdsYXp5J31cIlxuICAgICAgICAgICAgICAgIGZldGNocHJpb3JpdHk9XCIke2ZldGNocHJpb3JpdHkgfHwgJ2xvdyd9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PmBcbiAgICB9XG59XG5cbi8qKlxuICogQSBgdG9uaWNgIGNvbXBvbmVudCBmb3IgaW1hZ2VzLlxuICogQmUgc3VyZSB0byBwYXNzIGFuIGBpZGAgaW4gSFRNTCB0byB0aGUgY29tcG9uZW50LiBBbHNvIHRha2VzIGEgcHJvcFxuICogYGJsdXJQbGFjZWhvbGRlcmAsIHdoaWNoIGlzIGEgYmFzZTY0IHN0cmluZyB0byB1c2UgaW5saW5lIGFzIHNyYyxcbiAqIGFuZCBhIHByb3AgYGZpbGVuYW1lYCAtLSB0aGUgZmlsZW5hbWUgdG8gZmV0Y2hcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudH0gSFRNTCBlbGVtZW50IGNyZWF0ZWQgd2l0aCBgdG9uaWNgXG4gKiBAZGVzY3JpcHRpb24gSFRNTCBlbGVtZW50IHRha2VzIHRoZXNlIHByb3BzOlxuICogICAqIHNyY3NldCAtLSBhbiBhcnJheSBvZiBudW1iZXJzIGZvciB3aWR0aHNcbiAqICAgKiBmaWxlbmFtZSAtLSB0aGUgZmlsZW5hbWUgZm9yIHNyYyBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGNsYXNzIEJsdXJyZWRJbWFnZSBleHRlbmRzIFRvbmljIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICAgICAgY29uc3QgaW1nTGFyZ2UgPSBuZXcgd2luZG93LkltYWdlKClcbiAgICAgICAgaW1nTGFyZ2UuY2xhc3NMaXN0LmFkZCgnc2hhcnAnKVxuICAgICAgICB0aGlzLnN0YXRlID0geyBibHVycnk6IHRydWUsIGltZ0xhcmdlIH1cblxuICAgICAgICBpbWdMYXJnZS5vbmxvYWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmJsdXJyeSA9IGZhbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlUmVuZGVyKClcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcucGxhY2Vob2xkZXInKVxuICAgICAgICAgICAgaW1nTGFyZ2UuY2xhc3NMaXN0LmFkZCgnbG9hZGVkJylcbiAgICAgICAgICAgIGlmIChwbGFjZWhvbGRlcikgcGxhY2Vob2xkZXIuYXBwZW5kQ2hpbGQoaW1nTGFyZ2UpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbWcgKCkge1xuICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCBzaXplcywgc291cmNlcyB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCB7IGltZ0xhcmdlIH0gPSB0aGlzLnN0YXRlXG4gICAgICAgIGNvbnN0IHNyY3NldCA9IHNvdXJjZXMgP1xuICAgICAgICAgICAgZ2V0U3Jjc2V0KGZpbGVuYW1lLCBzb3VyY2VzKSA6XG4gICAgICAgICAgICBkZWZhdWx0U3Jjc2V0KGZpbGVuYW1lKVxuXG4gICAgICAgIGltZ0xhcmdlLnNldEF0dHJpYnV0ZSgnc3Jjc2V0Jywgc3Jjc2V0KVxuICAgICAgICBpbWdMYXJnZS5zZXRBdHRyaWJ1dGUoJ3NpemVzJywgc2l6ZXMpXG4gICAgICAgIGltZ0xhcmdlLnNyYyA9IGZpbGVuYW1lXG4gICAgfVxuXG4gICAgcmVuZGVyICgpIHtcbiAgICAgICAgY29uc3QgeyBibHVycGxhY2Vob2xkZXIsIGNsYXNzTmFtZSB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCBfY2xhc3MgPSAodGhpcy5wcm9wcy5jbGFzcyB8fCBjbGFzc05hbWUpXG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuYmx1cnJ5KSB7XG4gICAgICAgICAgICB0aGlzLmdldEltZygpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odG1sYDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiJHsoJ2ltYWdlIHBsYWNlaG9sZGVyJyArIChfY2xhc3MgPyBgICR7X2NsYXNzfWAgOiAnJykpfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJibHVycnlcIiBzcmM9JHtibHVycGxhY2Vob2xkZXJ9IC8+XG4gICAgICAgIDwvZGl2PmBcbiAgICB9XG59XG4iLCJpbXBvcnQgVG9uaWMgZnJvbSAnQHN1YnN0cmF0ZS1zeXN0ZW0vdG9uaWMnXG5pbXBvcnQgeyBJbWFnZVRhZywgQmx1cnJlZEltYWdlIH0gZnJvbSAnLi4vZGlzdC90b25pYydcbmltcG9ydCAnLi4vZGlzdC9zdHlsZS5jc3MnXG5pbXBvcnQgJy4vbXktc3R5bGUuY3NzJ1xuXG5jb25zdCBwbGFjZWhvbGRlckltZyA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0NFQUFnSUNBZ0pDQWtLQ2drTkRnd09EUk1TRUJBU0V4MFZGaFVXRlIwc0hDQWNIQ0FjTENjdkppUW1MeWRHTnpFeE4wWlJSRUJFVVdKWVdHSjhkbnlpb3RrQkNBZ0lDQWtJQ1FvS0NRME9EQTRORXhJUUVCSVRIUlVXRlJZVkhTd2NJQndjSUJ3c0p5OG1KQ1l2SjBZM01URTNSbEZFUUVSUllsaFlZbngyZktLaTJmL0FBQkVJQURJQU1nTUJJZ0FDRVFFREVRSC94QUI0QUFBQ0F3RUJBUUFBQUFBQUFBQUFBQUFBQmdRRkJ3SURBUkFBQWdFRUFRTUJCUVlIQUFBQUFBQUFBUUlEQUFRRkVSSUdFekZ5QnhRaFFWRVZJaU5oc2JJek5UWnhkSUdSQVFFQkFRRUFBQUFBQUFBQUFBQUFBQUFDQVFNQUVRRUJBUUVCQVFFQkFBQUFBQUFBQUFBQkFBSkJNUkVTSWYvYUFBd0RBUUFDRVFNUkFEOEExdkxKdUtMMVZSelFjbzZaTW92NGNQcU5WaXBzYW9QckxrblRtQ0dQbFBNc1kzcmJFQ2tpL3dBNTJMcVZZSkVrajdaNEVFblJQMXE3dituWjh4bEx1UnNpcVJRdndpakM4aUJvRTdyc2V6NjYxYUZVbmZ2ZVNRdnEyS2dGYVBIbDhVVVJIdXdXMEFXSUlCTk9QU3NJKzBwWEhqc21rMjk2SnM0ZmVCY1hGekIyenNxM0g0QnFmdWhjYkpaNDVPY29sTzNVUDlWSGlvQjlFYU02OGFLOXVORmF4b1dTSDRjWHFxQkN1OVZZWkwrRW5xcUJFd1ZkbWkrMTVVNXRZSWJpNWxSZE03RXRUeFl6Um5IMmJzVkxDRkNQeStGWlhMMU5pZmZYdHZlbDduTXJyUjhpdWhrY1VIN2U0T1hJTHJROGtiby8wZnBMa3k1TklycTd5WWNiVWxWLzRncTV3OEVjT1B0MFFhR20vV3M5eUdkeCtPZ2NjNGc3THlFWUlCYW43QVhTWFdJc3BrOFBFRFZ5Uld0dFVWOW9wMHE3SUVkbGY3MGhkUjlTVytOdHpDakJwMjhMVGxsNDVack4waWw3YmtIVDYzcXNDc01JMmI2a3ZzZEhraElZRkx5emtlZEVBZ1ZPMW8yTmlFajNWencrNGdlV1FuNS9QVk52Umx4RG03K1h1S0FpYmR0ajZEVkp1Y3Uwd3VVek9QdG90eHlSd29wSjhhUWJQKzkxZGV6cTV0N1JzckpOS0ZrZUpFaUc2ZVJVTFBhWnl0SzZzeGR2TGVDS0lCSEh4US9YbDRXbnYyYjNvZkVDekw3a2dMYkg1RTdwRDZwbU4xS1gxdzNHVlg1SFk4RVZjOUF2M3N0RmZJdzQzTm5MelVmS1JDdk9scjFqaC9XUzJqZEZlVzZLenRaYzZvZDQrbjhvNk9WWmJXVWdnNklQR3NUOWsvOEFQYjcvQUFIL0FIclJSVnVsL3JIK3A4aDZvLzJDdWtWZnN6ZkViMmFLS2VQV3ozeVlldkkwangrRk1hQlN5TnZRMXY3b3E2OWt2aTYvS1Q5Vm9vb2NuYmJSUlJVcmYvL1onXG5jb25zdCBzaXplcyA9IFsnNTB2dyddXG5cbmNvbnN0IGltZ1VybCA9IG5ldyBVUkwoJy4vMTAwLmpwZycsIGltcG9ydC5tZXRhLnVybCkuaHJlZlxuXG5jbGFzcyBUaGVBcHAgZXh0ZW5kcyBUb25pYyB7XG4gICAgcmVuZGVyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHRtbGA8ZGl2IGNsYXNzPVwidGhlLWFwcFwiPlxuICAgICAgICAgICAgPHA+aW1hZ2U8L3A+XG4gICAgICAgICAgICA8aW1hZ2UtdGFnXG4gICAgICAgICAgICAgICAgaWQ9XCJ0YWctdGVzdFwiXG4gICAgICAgICAgICAgICAgZmlsZW5hbWU9XCIvMTAwLmpwZ1wiXG4gICAgICAgICAgICAgICAgc2l6ZXM9JHtzaXplcy5qb2luKCcsICcpfVxuICAgICAgICAgICAgPjwvaW1hZ2UtdGFnPlxuXG4gICAgICAgICAgICA8cD5ibHVycmVkIHBsYWNlaG9sZGVyIGltYWdlPC9wPlxuICAgICAgICAgICAgPGJsdXJyZWQtaW1hZ2VcbiAgICAgICAgICAgICAgICBpZD1cInRlc3RcIlxuICAgICAgICAgICAgICAgIGZpbGVuYW1lPVwiJHtpbWdVcmx9XCJcbiAgICAgICAgICAgICAgICBibHVycGxhY2Vob2xkZXI9JHtwbGFjZWhvbGRlckltZ31cbiAgICAgICAgICAgICAgICBzaXplcz0ke3NpemVzLmpvaW4oJywgJyl9XG4gICAgICAgICAgICA+PC9ibHVycmVkLWltYWdlPlxuICAgICAgICA8L2Rpdj5gXG4gICAgfVxufVxuXG5Ub25pYy5hZGQoSW1hZ2VUYWcsICdpbWFnZS10YWcnKVxuVG9uaWMuYWRkKEJsdXJyZWRJbWFnZSwgJ2JsdXJyZWQtaW1hZ2UnKVxuVG9uaWMuYWRkKFRoZUFwcCwgJ3RoZS1hcHAnKVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsR0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLGNBQWM7QUFDckMsR0FBSSxDQUFBLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQU0sSUFBQSxDQUFBLENBQUEsQ0FBRSxFQUFFLEtBQUssQ0FBQSxDQUFFLFlBQVksQ0FBRSxDQUFBLElBQUksRUFBRSxDQUFDO0FBQ2pGLEtBQUEsQ0FBTSxhQUFhLENBQUM7QUFDM0IsQ0FBRSxDQUFBLE1BQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLElBQUksQ0FBQSxDQUFFLGVBQWUsQ0FBQztBQUNqQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxl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LENBQUEsQ0FBQSxDQUFBLFNBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLE9BQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxVQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFPLENBQUEsS0FBSyxDQUFDLElBQUksQ0FBRSxDQUFBO0FBQ3JCLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsR0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxTQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFXLEdBQUcsQ0FBRyxDQUFBLENBQUE7QUFDbkIsQ0FBSSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxNQUFBLENBQU8sU0FBUyxDQUFHLENBQUEsQ0FBQTtBQUNyQixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQyxNQUFNLENBQUUsQ0FBQSxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBO0FBQ0EsQ0FBRSxDQUFBLE1BQUEsQ0FBTyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFFLENBQUE7QUFDcEMsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDO0FBQ1osQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLFFBQVEsQ0FBRyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxHQUFHLENBQUcsQ0FBQSxDQUFBLEtBQUssQ0FBQyxFQUFFO0FBQ3hCLENBQUksQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUUsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxJQUFJLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDaEUsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEdBQUksQ0FBQSxLQUFLLENBQUMsQ0FBQyxTQUFXLENBQUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQVUsR0FBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLEdBQUc7QUFDZCxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxHQUFBLENBQUEsU0FBQSxDQUFBLEtBQUEsQ0FBQSxRQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxHQUFBLENBQUksS0FBSyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBRSxDQUFBLElBQUksQ0FBQyxNQUFNO0FBQ3ZDLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxHQUFJLENBQUEsS0FBSyxDQUFDLFFBQVEsQ0FBRSxDQUFBO0FBQ3RCLENBQUksQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBSSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBRSxDQUFBLFFBQVEsQ0FBQztBQUM3QyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsT0FBTyxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBTSxDQUFBLEVBQUUsQ0FBRyxDQUFBLENBQUEsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxLQUFNLENBQUEsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQTtBQUNqQyxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUksRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUUsQ0FBQSxRQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxFQUFFLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxHQUFHO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxLQUFLLENBQUMsU0FBUyxDQUFFLENBQUEsQ0FBQyxFQUFFLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsQ0FBQTtBQUMzQyxDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUM7QUFDWixDQUFBLENBQUE7QUFDQSxDQUFFLENBQUEsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBTSxDQUFBLEVBQUUsQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLEdBQUc7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxTQUFBLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBRSxDQUFBLENBQUMsRUFBRSxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFFLENBQUE7QUFDbkQsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxHQUFHO0FBQ2QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBRSxDQUFBO0FBQ3RCLENBQUksQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLGFBQWE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFPLENBQUEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFBLENBQUEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFPLENBQUEsVUFBVSxDQUFDLFNBQVMsQ0FBRSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTyxDQUFBLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsV0FBVyxDQUFFLENBQUE7QUFDckUsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLE1BQU8sQ0FBQSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUUsQ0FBQTtBQUNqQyxDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUUsQ0FBQTtBQUNwQixDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFLLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBRSxDQUFBO0FBQy9DLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBRyxDQUFBLENBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxLQUFLO0FBQ2hCLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsY0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLElBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLGNBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxLQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUUsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxZQUFZLENBQUcsQ0FBQSxDQUFBLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDaEUsQ0FBSSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxDQUFDLFlBQVksQ0FBRSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxLQUFLLENBQUMsQ0FBQSxRQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxFQUFBLENBQUEsT0FBQSxDQUFrQyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUksQ0FBQSxDQUFBLENBQUMsUUFBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFJLENBQUEsQ0FBQSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUUsQ0FBQTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLEdBQUksQ0FBQSxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxLQUFRLENBQUMsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFJLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFFLENBQUE7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QUNwRCxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFBLENBQUUsZUFBZSxDQUFFLENBQUE7QUFDN0MsQ0FBSSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFFLENBQUEsZUFBZSxDQUFFLENBQUEsSUFBSSxDQUFDO0FBQ3RELENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsVUFBQSxDQUFBLEtBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLFNBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFFLENBQUE7QUFDckMsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFFLENBQUEsSUFBSSxDQUFFLENBQUEsTUFBTSxDQUFFLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUksQ0FBQSxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBRSxDQUFBLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxVQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxXQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLFVBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxPQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUEsTUFBTSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBRSxDQUFBLElBQUksQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUUsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQU0sQ0FBQSxTQUFTLENBQUcsQ0FBQSxDQUFBLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFNLENBQUEsS0FBSyxDQUFHLENBQUEsQ0FBQSxHQUFBLENBQUksV0FBVyxDQUFDLENBQUMsQ0FBRSxDQUFBLFNBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUE7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLE9BQU87QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLFVBQVU7QUFDckUsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUNwQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBRSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxDQUFDLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFDLFlBQVksQ0FBRSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBRSxDQUFBLE1BQUEsQ0FBTyxDQUFDLENBQUMsT0FBTztBQUNsRCxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUF5QixDQUFBLE1BQUEsQ0FBQSxjQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFtQixDQUFBLE1BQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBSyxnQkFBZ0IsQ0FBRSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBRSxDQUFBO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU8sQ0FBQSxHQUFBLENBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFpQixDQUFBLE1BQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFtQixDQUFBLE1BQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUF3QixDQUFBLE1BQUEsQ0FBQSxhQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFjLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQWMsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBa0IsQ0FBQSxNQUFBLENBQUEsT0FBQSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBZSxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBdUIsQ0FBQSxNQUFBLENBQUEsWUFBQSxDQUFBLENBQUE7QUFDcEMsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQWlCLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQWlCLENBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFrQixDQUFBLE1BQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFlLENBQUEsTUFBQSxDQUFBLElBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQXNCLENBQUEsTUFBQSxDQUFBLFdBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQyxJQUFJLE1BQU8sQ0FBQSxDQUFDLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFFLENBQUE7QUFDL0YsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUM7QUFDZCxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNkLENBQUksQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBRSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxHQUFJLENBQUEsQ0FBQyxDQUFHLENBQUEsQ0FBQSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsTUFBTSxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUUsQ0FBQSxDQUFDLEVBQUUsQ0FBRSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUksQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLE9BQU8sQ0FBRyxDQUFBLENBQUEsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBLEVBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFFLENBQUEsS0FBSyxDQUFDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBTSxDQUFBLENBQUMsQ0FBRyxDQUFBLENBQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxXQUFXLENBQUUsQ0FBQTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDcEMsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxLQUFLLENBQUUsQ0FBQSxNQUFBLENBQU8sQ0FBQyxDQUFFLENBQUEsQ0FBQyxDQUFDLENBQUUsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBYSxPQUFPLENBQUUsQ0FBQTtBQUN0QixDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUUsQ0FBQSxPQUFPLENBQUUsQ0FBQSxLQUFLLENBQUM7QUFDckQsQ0FBQSxDQUFBO0FBQ0EsQ0FBRSxDQUFBLGdCQUFnQixDQUFDLFFBQVEsQ0FBRSxDQUFBO0FBQzdCLENBQUksQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFPLENBQUEsSUFBSSxDQUFDLGVBQWU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsZUFBZSxDQUFBLENBQUEsQ0FBRyxHQUFJLENBQUEsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUksQ0FBQSxDQUFBLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFFLENBQUEsTUFBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQSxDQUFBLENBQUcsSUFBSTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU8sQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNoRCxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUM1QyxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ25CLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsZUFBZTtBQUMvQixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBO0FBQzNCLENBQUksQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLFFBQVEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFVLFFBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztBQUMxQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBLElBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsTUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxHQUFBLENBQUEsV0FBQSxDQUFBLE1BQUEsQ0FBQSxFQUFBLENBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBLENBQUEsR0FBQSxDQUFBLEVBQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsVUFBQSxDQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsV0FBQSxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxXQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFFLENBQUEsV0FBVyxDQUFDLEVBQUUsQ0FBRSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBRSxDQUFBO0FBQ25DLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUEsSUFBSSxDQUFFLENBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxNQUFNLENBQUMsSUFBSSxDQUFFLENBQUEsTUFBQTtBQUN2QixDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLFlBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsVUFBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsSUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUUsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUUsTUFBTSxDQUFFLENBQUEsT0FBTyxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBRSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFFLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFLLENBQUEsQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFBLEVBQUEsQ0FBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFFLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBSSxDQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUUsQ0FBQSxRQUFBO0FBQ2xDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxFQUFFLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUksQ0FBQSxDQUFBLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQSxRQUFBO0FBQzlDLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxLQUFLO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksTUFBTSxDQUFBLFVBQUEsQ0FBWSxLQUFLLENBQUMsYUFBYSxDQUFFLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTyxDQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUEsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxDQUFBLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLEVBQUksQ0FBQSxDQUFBLE1BQU0sWUFBWSxLQUFLLENBQUMsc0JBQXNCLENBQUUsQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFPLENBQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUUsQ0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFNLElBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUUsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBTSxJQUFBLENBQUEsRUFBQSxDQUFBLENBQUksTUFBTSxDQUFBLFVBQUEsQ0FBWSxRQUFRLENBQUUsQ0FBQTtBQUMzQyxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxDQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUUsQ0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFBLENBQUUsT0FBTyxDQUFFLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsZUFBZSxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsT0FBTztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxFQUFJLENBQUEsQ0FBQSxNQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFHLENBQUEsQ0FBQSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFJLENBQUEsQ0FBQSxNQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFFLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBSSxDQUFBLENBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFBO0FBQzNCLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFPLEdBQUcsQ0FBQyxDQUFBLEtBQUEsQ0FBQSxLQUFBLENBQWEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBRSxDQUFBLElBQUksQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFDLENBQVEsQ0FBQSxLQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsT0FBTztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUE7QUFDcEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFLLEtBQU0sQ0FBQSxJQUFJLENBQUksRUFBQSxDQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFVLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQyxDQUFFLENBQUE7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFLLENBQUEsQ0FBQSxLQUFBLENBQU0sQ0FBQyxDQUFBLEVBQUEsQ0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUEsTUFBQSxDQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBRSxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxRQUFRLENBQUcsQ0FBQSxDQUFBLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUUsQ0FBQTtBQUN0RCxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUEsRUFBRSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBRSxDQUFBO0FBQ2pDLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEVBQUUsQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUUsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQU0sQ0FBQSxVQUFVLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxVQUFVO0FBQzFDLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBRSxDQUFBLE1BQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUssQ0FBQSxDQUFBLEdBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBRSxDQUFBLENBQUMsQ0FBRyxDQUFBLENBQUEsVUFBVSxDQUFDLE1BQU0sQ0FBRSxDQUFBLENBQUMsRUFBRSxDQUFFLENBQUE7QUFDcEQsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNoQixDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUEsQ0FBQyxJQUFJLENBQUUsQ0FBQSxTQUFTLENBQUUsQ0FBQSxFQUFFLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBSyxDQUFBLENBQUEsS0FBQSxDQUFNLEtBQUssQ0FBQSxFQUFBLENBQUksU0FBUyxDQUFFLENBQUE7QUFDdkMsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUUsQ0FBQSxJQUFJLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBTSxJQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFFLENBQUE7QUFDM0IsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsaUJBQWlCLENBQUcsQ0FBQSxDQUFBO0FBQ3RCLENBQUksQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUE7QUFDdkQsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFFBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQSxDQUFDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFDLENBQUMsV0FBVyxDQUFFLENBQUEsQ0FBQyxDQUFFLENBQUEsQ0FBQSxFQUFBLENBQUksQ0FBQztBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUssQ0FBQSxDQUFBLEtBQUEsQ0FBTSxDQUFFLENBQUEsSUFBSSxDQUFFLENBQUEsS0FBSyxDQUFFLENBQUEsS0FBSyxDQUFFLENBQUEsQ0FBQSxFQUFBLENBQUksSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFBO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQzVCLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFjLEVBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBTSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsRUFBQSxDQUFJLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQU0sSUFBSSxDQUFZLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFBO0FBQ3ZDLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFHLENBQUEsQ0FBQSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBTSxJQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssWUFBWSxDQUFFLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSTtBQUMvQixDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFNLElBQUksQ0FBYyxDQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBRyxDQUFBLENBQUEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBLElBQUEsQ0FBTSxDQUFDO0FBQzdDLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQU0sSUFBSSxDQUFxQixTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBTSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsS0FBSyxDQUFHLENBQUEsQ0FBQSxNQUFNLENBQUMsTUFBTTtBQUM5QixDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBRSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUNYLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNMLENBQUksQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFLLENBQUMsU0FBUyxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUUsQ0FBQTtBQUMxQyxDQUFJLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQSxNQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBSSxDQUFBLENBQUEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUUsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFJLENBQUEsQ0FBQSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBRyxDQUFBLENBQUEsSUFBSSxDQUFDLFNBQVM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFNLElBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsU0FBUyxDQUFHLENBQUEsQ0FBQSxJQUFJLENBQUMsT0FBTztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQU0sQ0FBQSxDQUFDLENBQUcsQ0FBQSxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakQsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLENBQUksQ0FBQyxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUUsQ0FBQTtBQUN0QyxDQUFBLENBQUE7QUFDQSxDQUFFLENBQUEsWUFBWSxDQUFDLE1BQU0sQ0FBRSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUUsQ0FBQTtBQUNyQyxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFxQixDQUFBLE1BQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQTtBQUN6RSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsb0JBQW9CLENBQUcsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFFLENBQUE7QUFDNUMsQ0FBSSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ2hDLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBQSxDQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNwQyxDQUFBLENBQUE7QUFDQTs7QUNoZE8sS0FBTSxDQUFBLFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDckMsUUFBUyxDQUFBLGFBQWEsQ0FBQyxRQUFRLENBQUUsQ0FBQTtBQUN4QyxDQUFJLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxJQUFJLENBQUcsQ0FBQSxDQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUEsQ0FBRSxZQUFZLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLElBQUk7QUFDZjtBQUNPLFFBQUEsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFBLENBQUUsS0FBSyxDQUFFLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsU0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsR0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNqQjtBQUNPLFFBQUEsQ0FBUyxhQUFhLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFFLENBQUE7QUFDM0MsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sU0FBUyxDQUFHLENBQUEsQ0FBQSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUMsR0FBRyxDQUFFLENBQUE7QUFDL0IsQ0FBSSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sS0FBSyxDQUFHLENBQUEsQ0FBQSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDOztBQ2hCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQTs7QUFJQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsU0FBQSxDQUFBLElBQUEsQ0FBQSxJQUFBLENBQUEsT0FBQSxDQUFBLE1BQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNPLEtBQU0sQ0FBQSxRQUFRLENBQVMsT0FBQSxDQUFBLEtBQUssQ0FBQztBQUNwQyxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFNLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxTQUFTO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFFBQVE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksUUFBUTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLGFBQWE7QUFDekIsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsS0FBQTtBQUNqQixDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQyxDQUFPLEtBQUEsQ0FBQSxDQUFBO0FBQ2xELENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sTUFBTSxDQUFJLENBQUEsQ0FBQSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQTs7QUFFckQsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxTQUFTLENBQUMsUUFBUSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUE7QUFDeEMsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQTs7QUFFbEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQVcsR0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ2pDLENBQXVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDL0IsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFFBQUEsQ0FBQSxDQUEwQixDQUFFLENBQUEsUUFBUSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFNLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBeUIsQ0FBRSxDQUFBLE9BQU8sQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBTSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsYUFBQSxDQUFBLENBQStCLENBQUUsQ0FBQSxhQUFhLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUssQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0E7O0FBRUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsU0FBQSxDQUFBLEdBQUEsQ0FBQSxNQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsZUFBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBQSxHQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsUUFBQSxDQUFBLEVBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsV0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLE9BQUEsQ0FBQSxPQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsS0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsV0FBQSxDQUFBLElBQUEsQ0FBQSxPQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxRQUFBLENBQUEsR0FBQSxDQUFBLEdBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNPLEtBQU0sQ0FBQSxZQUFZLENBQVMsT0FBQSxDQUFBLEtBQUssQ0FBQztBQUN4QyxDQUFJLENBQUEsQ0FBQSxDQUFBLFdBQVcsQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLEdBQUksQ0FBQSxNQUFNLENBQUMsS0FBSyxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQU8sS0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLEVBQUUsTUFBTSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUE7O0FBRTdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxLQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUcsQ0FBQSxDQUFBLEtBQUE7QUFDaEMsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFjLENBQUEsV0FBQSxDQUFBLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBUSxNQUFBLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLFdBQVcsQ0FBQSxDQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFBO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sQ0FBRSxDQUFBLFFBQVEsQ0FBRSxDQUFBLEtBQUssRUFBRSxPQUFPLENBQUEsQ0FBRSxDQUFHLENBQUEsQ0FBQSxJQUFJLENBQUMsS0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFFLENBQUEsUUFBUSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLEtBQUE7QUFDbEMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxTQUFTLENBQUMsUUFBUSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUE7QUFDeEMsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQTs7QUFFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQSxNQUFBLENBQVEsRUFBRSxNQUFNLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQSxLQUFBLENBQU8sRUFBRSxLQUFLLENBQUE7QUFDNUMsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUcsQ0FBQSxDQUFBLFFBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQyxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQU0sRUFBRSxlQUFlLENBQUEsQ0FBRSxTQUFTLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsS0FBQTtBQUNwRCxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFNLE1BQU0sQ0FBSSxDQUFBLENBQUEsQ0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUE7O0FBRXJELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUE7QUFDL0IsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTyxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsQ0FBbUIsQ0FBRyxDQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsV0FBQSxDQUFtQixDQUFJLENBQUEsQ0FBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUUsQ0FBQTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQSxDQUFBO0FBQ3RELENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBOztBQ3BGQSxLQUFBLENBQU0sY0FBYyxDQUFHLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLEVBQUEsQ0FBQSx1QkFBQSxDQUFBLGtMQUFBLENBQUEsd0JBQUEsQ0FBQSxrS0FBQSxDQUFBLHFFQUFBLENBQUEsd0JBQUEsQ0FBQSxzRUFBQSxDQUFBLHFGQUFBLENBQUEsV0FBQSxDQUFBLGtDQUFBLENBQUEseUNBQUEsQ0FBQSxtQkFBQSxDQUFBLGdCQUFBLENBQUEsT0FBQSxDQUFBLHdEQUFBLENBQUEscUVBQUEsQ0FBQSxPQUFBLENBQUEsVUFBQSxDQUFBLHNDQUFBLENBQUEsZ0RBQUEsQ0FBQSwwRUFBQSxDQUFBLGtCQUFBLENBQUEsb0JBQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxFQUFBLENBQUEsS0FBQSxDQUFBLDRCQUFBLENBQUEsb0JBQUEsQ0FBQSxpQkFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLEtBQU0sQ0FBQSxLQUFLLENBQUcsQ0FBQSxDQUFBLENBQUMsQ0FBTSxJQUFBLENBQUEsQ0FBQTs7QUFFckIsS0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsMERBQXFDLENBQUMsSUFBQTs7QUFFckQsS0FBTSxDQUFBLE1BQU0sQ0FBUyxPQUFBLENBQUEsS0FBSyxDQUFDO0FBQzNCLENBQUksQ0FBQSxDQUFBLENBQUEsTUFBTSxDQUFDLENBQUcsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU8sQ0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsR0FBQSxDQUFBLEtBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxHQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsSUFBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsR0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxHQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxXQUFBLENBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQSxJQUFBO0FBQ0EsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLGVBQUEsQ0FBZ0MsRUFBRSxjQUFjO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQSxDQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxLQUFBO0FBQ0EsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0E7O0FBRUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBVyxLQUFBLENBQUEsR0FBQSxDQUFBLENBQUE7QUFDL0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBZSxPQUFBLENBQUEsS0FBQSxDQUFBLENBQUE7QUFDdkMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBUyxHQUFBLENBQUEsR0FBQSxDQUFBLENBQUEiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19